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

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.

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: 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

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.