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
  1. The quick path
  2. How the pieces fit
  3. In these docs

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.

shell
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 it

How 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

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.