01
Getting started
CodePrep is an interview-training platform for data engineering, data science, and quant finance. You write real SQL, Python, Polars, and C++ against real datasets in a browser IDE, and every submission runs in an isolated sandbox with instant feedback.
Create your account
Head to Sign up. The quickest path is Continue with Google — it verifies your email automatically. You can also sign up with an email and password.
Confirm your email (email/password only)
If you signed up with a password, click the link in the confirmation email before submitting code. Google sign-ins are pre-verified, so there's nothing to confirm.
Land on your dashboard
After signing in you arrive at your dashboard, which tracks your solved counts, streak, and recent submissions. From the top nav you can jump to Problems, Billing, and this guide anytime.
Private beta
CodePrep is currently invite-only. If sign-up says the email isn't on the invite list, ask the team to add you — access is granted per email address.
02
Finding problems
The Problems page organises everything into subject areas — Data Engineering, Quant Finance, and Data Analytics — each with its own heading. Within a section, problems are ordered by difficulty (easy → hard), with free problems before premium ones at each level.
Filters
Narrow the list by Subject, Language, Difficulty, and (once signed in) Status (solved / unsolved). Filters stack.
Badges
A lock icon and a Pro tag mark premium problems. Free-tier accounts can browse them but need Pro to open them.
03
The workspace
Opening a problem drops you into a split-pane workspace: the prompt and dataset preview on the left, the code editor on the right, and an output console beneath it.
Prompt & dataset
The task, the math, and a preview of the tables (columns + sample rows) your code runs against.
Editor & console
A full Monaco editor (the VS Code engine) with syntax highlighting, plus the results console below.
Resizable panels
Drag the divider between panes — horizontally (prompt vs editor) or vertically (editor vs console). Your layout is remembered.
Drafts auto-save
Your code is saved per problem in your browser, so you can leave and come back without losing work.
Dark theme, your language
The editor picks the right language mode automatically and defaults to a dark theme.
04
Languages
Each problem is tied to one language. What you write depends on the type:
Python (pandas / numpy)
Implement a function (e.g. solve(df)). Datasets arrive as pandas DataFrames; your return value is compared against the expected result.
Polars
Same function model as Python, but datasets arrive as Polars DataFrames — for modern, expression-based data engineering pipelines.
SQL (DuckDB)
Write a single query. It runs against the question's tables in an in-memory DuckDB and your result set is compared to the reference query's output.
C++
Implement the specified functions or class (or a full program). Your code is compiled with g++ and run against test inputs via stdin/stdout — the quant/HFT track.
Read the prompt's contract
Each prompt states exactly what to implement — the function name, the argument shapes, and the expected output columns or format. Match it precisely (column names and order matter) and you'll pass.
05
Run vs Submit
Two buttons drive every problem. They share the same secure pipeline but do different things:
Run
A quick, exploratory preview. It executes your code and shows the raw output — the SQL result table, the function's returned DataFrame/value, or your program's stdout — without grading anything. Nothing is recorded.
Submit
The real thing. It runs all test cases, including hidden ones, gives you pass/fail per case, and updates your progress (marking the problem solved when everything passes).
06
Reading your results
The console below the editor tells you exactly what happened. After a Submit, you get a status banner and a breakdown per test case.
- Per-case pass/fail. Every test case shows a green check or red cross. Click a failing visible case to expand the expected vs actual diff.
- Hidden tests. Some cases are hidden — you'll see whether they passed, but not their inputs (only "hidden test failed"). They stop you from hardcoding answers.
- Compile & runtime errors. For C++, a compile error shows the g++ message. Runtime errors and timeouts are surfaced too, so you know why a run didn't finish.
- stdout & timing. Anything you print appears under stdout, and each run reports its runtime.
07
Tracking progress
Your dashboard turns every solved problem into signal:
Solved by difficulty
See how many easy / medium / hard problems you've cleared, against the totals available.
Daily streak
Keep the streak alive by solving on consecutive days — a simple nudge to practise consistently.
Recent submissions
A running history of what you attempted and how it went, so you can jump back into anything.
08
Free vs Pro
The free tier is a genuine practice ground; Pro unlocks the full library. Manage everything from the Account page.
Free
- ✓A curated set of problems across all languages
- ✓Unlimited runs & submissions
- ✓Run/preview mode + progress dashboard
Pro
$19/mo- ✓Every problem & track unlocked
- ✓Full quant finance & C++/HFT sets
- ✓Advanced data-modelling problems
- ✓Priority submission queue
Upgrading opens Stripe Checkout; once you're Pro, the same Billing page lets you open the customer portal to update or cancel anytime.
09
Tips & shortcuts
Run your code from the editor.
Resize the prompt, editor, and console to fit how you work.
Use Run to eyeball your output, then Submit to grade against all tests.
The Reset button restores the original starter code if you want a clean slate.
Column names, order, and output format are checked — mirror the prompt.
Your work is saved per problem in the browser automatically.