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.41.0.
On this page
The quick path
With Homebrew, on macOS or Linux, and the toolchains of your languages installed, these 5 commands take you 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: 320 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, problem sets 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 a JDK 21 to 26 for Java and Kotlin, the Go toolchain for Go, and Cargo for Rust. You install the toolchains you need; cstudy doctor checks them. Service projects are the exception: they run in Docker, with their own toolchain inside it.
The terminal is the main way to use cstudy. When you would rather have a page, cstudy serve runs one on the same workspace: see Practising in the browser.
In these docs
Start here
Guides
- PractisingThe daily loop: start, test, hints and solutions, finishing, reviews, filters and problem sets, benchmarks, mock interviews and stats.
- Problem kinds and tracksTracks, labels, and function, design, progressive, concurrent, debugging, project and service problems, with the self-graded tracks.
- Editors and debuggingcstudy ide, VS Code tasks and launch configurations, IntelliJ IDEA, and --debug per language.
- Practising in the browsercstudy serve: the same practice loop on a local page, on the same workspace and progress.
- 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.41.0. The specs in the cstudy repository are the source of truth for every detail.