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.

Homebrew
brew install bkuberek/tap/cstudy
cstudy --version
or with uv or pipx, from the repository
uv tool install git+https://github.com/bkuberek/coding-study
# or: pipx install git+https://github.com/bkuberek/coding-study

Keep 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.

Language toolchains and how to install them on macOS
ToolVersionNeeded forInstall on macOS
uv0.10 or newerRequired: manages Python and the Python practice projectbrew install uv
Python3.13Requireduv python install 3.13
Node.js24 or newerTypeScriptbrew install fnm, then fnm install 24
pnpm9 or newerTypeScriptcorepack enable pnpm
JDK21 exactlyJava and Kotlin; the Gradle wrapper downloads Gradle and the Kotlin compilerSDKMAN!: sdk install java with a Temurin 21 identifier
Go1.24 or newerOptional: Gobrew install go
Rust1.80 or newerOptional: Rustbrew install rustup, then rustup-init
gitanyOptional: versioning your workspacexcode-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 doctor rejects 17 and 25. A plain sdk install java installs the newest release, so pick a Temurin 21 identifier from sdk list java.
  • Install Rust with rustup, not Homebrew’s rust formula, so rust-analyzer can show the standard library.
  • Go and Rust are optional: without them cstudy doctor warns, 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.

create a workspace
cstudy doctor
cstudy init ~/cstudy-workspace --git
cd ~/cstudy-workspace
cstudy doctor --fix
cstudy doctor in a new workspace
$ 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