Install
Install cstudy, then the toolchains you need
One Homebrew command installs cstudy with its problems, tracks and runners. cstudy then runs your code with each language’s real toolchain, which you install yourself, only for the languages you practise.
1 Install cstudy
With Homebrew
Homebrew also installs the Python that cstudy runs on. Upgrade later with brew upgrade cstudy.
Homebrew 7 asks you to trust a third-party tap before commands such as brew info cstudy read it: run brew trust bkuberek/tap once. Installing by the full name works without it.
brew install bkuberek/tap/cstudy
cstudy --versionuv tool install git+https://github.com/bkuberek/coding-study
# or: pipx install git+https://github.com/bkuberek/coding-studyKeep one install. When several exist, the cstudy that comes first on your PATH runs; which -a cstudy lists them.
2 Language toolchains
Install only what you practise
uv and Python are required. Node.js, the JDK, Go and Rust are needed only for the languages that use them. This is the recommended install on macOS.
| Tool | Version | Needed for | Install on macOS |
|---|---|---|---|
| uv | 0.10 or newer | Required: manages Python and the Python practice project | brew install uv |
| Python | 3.13 | Required | uv python install 3.13 |
| Node.js | 24 or newer | TypeScript | brew install fnm, then fnm install 24 |
| pnpm | 9 or newer | TypeScript | corepack enable pnpm |
| JDK | 21 exactly | Java and Kotlin; the Gradle wrapper downloads Gradle and the Kotlin compiler | SDKMAN!: sdk install java with a Temurin 21 identifier |
| Go | 1.24 or newer | Optional: Go | brew install go |
| Rust | 1.80 or newer | Optional: Rust | brew install rustup, then rustup-init |
| git | any | Optional: versioning your workspace | xcode-select --install |
The full steps, Linux and the check for each toolchain are in the installation guide.
A few things worth knowing
- The JDK must be version 21:
cstudy doctorrejects 17 and 25. A plainsdk install javainstalls the newest release, so pick a Temurin 21 identifier fromsdk list java. - Install Rust with rustup, not Homebrew’s
rustformula, so rust-analyzer can show the standard library. - Go and Rust are optional: without them
cstudy doctorwarns, and every other language still works.
More detail
The installation guide has the steps for each language on macOS and Linux, and the debuggers that cstudy test --debug uses. The upstream toolchains guide on GitHub is the source it follows.
3 Check and set up
Let cstudy doctor check
cstudy doctor checks each toolchain and prints a fix for anything missing. A missing Node.js, pnpm or JDK shows as FAIL, a missing Go or Rust as WARN.
Then create a workspace, the directory where your solutions, notes and progress live, and let cstudy doctor --fix set up its projects.
cstudy doctor
cstudy init ~/cstudy-workspace --git
cd ~/cstudy-workspace
cstudy doctor --fix$ cstudy doctor
ok python 3.13.2
ok uv 0.10.11
ok node v24.18.0 (type stripping)
ok pnpm 9.15.9
ok java 21.0.2
ok content /home/me/.local/share/uv/tools/coding-study/lib/python3.13/site-packages/coding_study/content (bundled)
ok workspace /home/me/ws (created with cstudy 0.1.0)
FAIL python/.venv missing fix: cstudy doctor --fix
ok runner python answers hello: python 3.13.2, protocol 1
ok runner kotlin answers hello: jvm 21.0.2, protocol 1