DocumentationOverview
Start here
Overview
cstudy is a command line for practising coding interview problems in your own editor, in Python, TypeScript, Java, Kotlin, Go and Rust. It tests your code, checks whether it is optimal, shows hints and reference solutions, and schedules reviews. These guides cover cstudy 0.8.0.
On this page
The quick path
On macOS with Homebrew, these 5 commands take you from nothing to your first problem. Each step is explained in Installation and Getting started.
brew install bkuberek/tap/cstudy
cstudy init ~/cstudy-workspace --git # --git runs git init; cstudy never commits
cd ~/cstudy-workspace
cstudy doctor --fix # uv sync, pnpm install, Gradle warm-up, runner checks
cstudy next # suggests a problem and prints the command to start itHow the pieces fit
cstudy is one command, cstudy, installed with its content: 254 problems, the self-graded tracks and a runner for each language. Everything you produce lives in a workspace, a directory of your own:
- one practice project per language, where cstudy writes the stubs you solve;
- a folder per project problem you start;
- your notes, earlier attempts and problems you write yourself;
progress.db, a SQLite file with your attempts, reviews and benchmarks.
cstudy runs your code with the real toolchain of each language: uv for Python, Node and pnpm for TypeScript, Gradle and JDK 21 for Java and Kotlin, the Go toolchain for Go, and Cargo for Rust. You install the toolchains you need; cstudy doctor checks them.
In these docs
Start here
Guides
- PractisingThe daily loop: start, test, hints and solutions, finishing, reviews, benchmarks, mocks and stats.
- Problem kinds and tracksFunction, design, progressive, concurrent, debugging and project problems, and the self-graded tracks.
- Editors and debuggingcstudy ide, VS Code tasks and launch configurations, IntelliJ IDEA, and --debug per language.
- Writing your own problemscstudy new and its templates, the files of a problem, the workflow, and cstudy verify.
Reference
These pages are written for people using cstudy. The specs in the cstudy repository define every behaviour in full, and are the reference when you need an exact rule.
Written for cstudy 0.8.0. The specs in the cstudy repository are the source of truth for every detail.