Guide

How to use CodePrep

Everything you need to go from sign-up to solved — browsing problems, writing and running code in the browser IDE, reading your results, and tracking progress.

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.

1

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.

2

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.

3

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

EasyMediumHardPYTHONSQLC++Pro

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.

Problem workspace

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

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

Polars

Same function model as Python, but datasets arrive as Polars DataFrames — for modern, expression-based data engineering pipelines.

SQL

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

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

Tip: /Ctrl+Enterruns your code without leaving the keyboard.

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.

passed3/3 tests passed312 ms
case: edge_casefailed
expected: [10.45, 5.57]
got:      [10.45, 5.58]
  • 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

/ Ctrl + Enter

Run your code from the editor.

Drag the dividers

Resize the prompt, editor, and console to fit how you work.

Run before you Submit

Use Run to eyeball your output, then Submit to grade against all tests.

Reset code

The Reset button restores the original starter code if you want a clean slate.

Match the spec exactly

Column names, order, and output format are checked — mirror the prompt.

Drafts persist

Your work is saved per problem in the browser automatically.

Ready to solve something?

Pick a problem and get your first pass in minutes.

Browse problems