A 32-week rebuild of algorithms, C++, and discrete math from first principles — then a straight look at what it does and doesn't buy you toward a compiler, a distributed KV store, and a real microservices system.
Each phase pairs syllabus reading with a couple of from-scratch C++ projects, then locks it in with Neetcode. Check off problems as you go — the bar up top tracks the whole roadmap.
Reading
Discrete Math (Lewis & Zax)
C++ (Tour of C++)
Micro-projects
0.1 — Prime Number Tester with Proof
Checks primality with a
--verify flag that prints
the loop invariant, plus the inductive
proof as a comment.
0.2 — Summation Calculator
Computes 1+2+…+n by loop and by closed
form, proves they're equal, benchmarks
both with std::chrono.
Neetcode
None yet — pure math and C++ warm-up.
Reading
Algorithms syllabus
Discrete Math
C++
Micro-projects
1.1 — Big-O Visualizer
Runs O(1), O(n), O(n²) functions across n=10…10,000 and checks the measured growth against theory.
1.2 — Recursion vs Iteration Benchmark
Fibonacci three ways — recursive, iterative DP, closed-form — with runtime and call-stack depth compared.
Neetcode — Arrays & Hashing
Reading
Algorithms syllabus
Discrete Math
C++
Micro-projects
2.1 — DIY Vector
Vector<T> with
dynamic resizing,
push_back/pop_back, and
proper copy/move semantics.
2.2 — Stack-Based RPN Calculator
Postfix calculator on a hand-rolled
Stack<T>, with error
handling for bad input and division by
zero.
2.3 — Word Frequency Counter
Counts word frequency with
std::unordered_map, then a
hand-rolled
HashMap<K,V>
benchmarked against it.
Neetcode
Linked List
Stack
Hash Map
Reading
Algorithms syllabus
Discrete Math
C++
Micro-projects
3.1 — Sorting Showdown
Bubble, insertion, merge, quicksort benchmarked across n=100…100,000 with a runtime table.
3.2 — Dutch National Flag
3-way partition in O(n) time, O(1) space, with a written proof of the bound.
3.3 — Binary Search on Custom Data
Binary search over sorted structs loaded from CSV, searchable by different fields via custom comparators.
Neetcode — Sorting & Divide and Conquer
Reading
Algorithms syllabus
Discrete Math
C++
Micro-projects
4.1 — DIY Binary Search Tree
BST<T> with
insert/search/erase, all three
traversals, and
min/max/successor/predecessor.
4.2 — Autocomplete with a Trie
Insert/search/startsWith plus a live autocomplete over a loaded dictionary file.
4.3 — Priority Queue Task Scheduler
Binary-heap priority queue for prioritized tasks — push/pop/peek.
Neetcode
Trees
Heap / Priority Queue
Trie
Reading
Algorithms syllabus
Discrete Math
C++
Micro-projects
5.1 — Graph Builder and Traversal
Adjacency-list graph with BFS distances, DFS discovery/finish times, and cycle detection.
5.2 — Shortest Path in a Maze
BFS shortest path through a grid maze loaded from file, printed with directional arrows.
5.3 — Kevin Bacon Game
Actor/movie graph with BFS to compute Bacon numbers, interactive CLI lookup.
Neetcode
Graphs (BFS/DFS)
Shortest Path
Union Find / MST
Graph Advanced
Reading
Algorithms syllabus
Discrete Math
C++
Micro-projects
6.1 — Large Dictionary Autocomplete
Trie extended with file I/O, frequency-ranked autocomplete, and deletion support.
6.2 — Boyer–Moore String Search
Boyer-Moore and Horspool implemented and
benchmarked against
std::string::find on real
text.
6.3 — Closest-Pair Visualizer
Brute-force vs divide-and-conquer closest-pair on random points, runtimes compared.
Neetcode
String Matching
Sliding Window
Trie (revisited)
Reading
Algorithms syllabus
Discrete Math
C++
Micro-projects
7.1 — N-Queens Solver
Recursive backtracking N-Queens, all solutions, optimized with bitmasking.
7.2 — Knapsack: Greedy vs DP vs Branch-and-Bound
0/1 Knapsack solved three ways, comparing correctness and runtime.
7.3 — RSA Key Generator
Generates primes, computes n and φ(n), finds e/d, encrypts and decrypts a message.
7.4 — TSP Approximation
Nearest-neighbor heuristic for TSP compared against brute-force optimal on small n.
Neetcode
Backtracking
DP — 1D
DP — 2D
DP — Advanced
Reading
Algorithms syllabus
Discrete Math / C++
Micro-project
8.1 — Recurrence Solver
Takes a recurrence like T(n) = 2T(n/2) + n, computes n = 1…100, verifies the closed form, plots the growth.
Neetcode — review
Choose one
A — Real-Time Route Planner
Dijkstra + A* over a loaded road network, dynamic traffic edge weights, multi-waypoint DP routing.
B — Full-Text Search Engine
Inverted index, boolean query parser, TF-IDF ranking, Trie autocomplete, persistent on-disk index.
C — Network Packet Routing Simulator
Simulated router network, shortest-path packet routing, congestion handling, topology visualization.
D — Cryptography Toolkit
RSA keygen and encryption, Diffie–Hellman exchange, simple SHA-256, digital signatures, file encryption.
Neetcode
1–2 problems/day alongside the capstone — hit the Hards you skipped, revisit early Mediums, simulate 30-minute interview conditions.
The roadmap builds the substrate. Each of these is a separate discipline sitting on top of it — here's honestly what transfers and what doesn't.
Transfers directly
Still missing
Transfers directly
Still missing — basically a new field
Transfers directly
Still missing
01
This roadmap
Algorithms, C++, discrete math fundamentals
02
Compiler
Hardest reward on your algo fundamentals
03
Distributed KV store
Data structures + one new discipline: distributed systems
04
Full-stack / microservices
Least connected — run it as its own track