Code & Algorithms
Build every data structure and algorithm yourself, in C, until thinking in code is automatic. Fluency is a motor skill — this is where the reps live.
Thinking in Code & Complexity
0/5What fluency is, Big-O derived, the cost model, and your first real techniques.
Deliberate practice, and why reading isn't enough
Counting operations, and why the constants drop
What actually costs on real hardware
The dynamic array's hidden bookkeeping
Your first real technique
Linear Structures from Scratch
0/5Linked lists, stacks, queues, ring buffers — built in C with raw pointers.
Pointers chained — built and traversed in C
Two-way pointers, and the cost of bookkeeping
LIFO — and where it already lives (the call stack)
FIFO without shifting everything
void* and function pointers to store anything
Recursion & Divide-and-Conquer
0/5The call stack as a data structure, backtracking, merge sort, quicksort.
The call stack as the data structure
Building and unbuilding candidate solutions
Split, solve, combine
Provably O(n log n), built from scratch
Average vs worst case, and how to dodge it
Sorting, Searching & Hashing
0/5Binary search and its traps, the sorting landscape, and building a hash table.
The off-by-one that bites everyone
When each sort actually wins
Turning a key into an index
Collisions, chaining, open addressing — in C
What the standard libraries hide from you
Trees
0/5Binary trees, BSTs, balancing, heaps, and tries — built and traversed.
Pre-, in-, post-, and level-order
Ordered data — and how it degrades
Rotations, AVL and red-black, the idea
The array that is secretly a tree
Trees keyed by characters
Graphs I
0/5Representing graphs, BFS, DFS, topological sort, union-find.
The most general structure there is
Shortest paths in unweighted graphs, level by level
Depth, discovery, and the recursion/stack duality
Ordering things under dependencies
The near-constant-time merge structure
Graphs II & Greedy
0/5Dijkstra, minimum spanning trees, and when greedy is provably right.
Shortest paths when edges have weight
Prim and Kruskal, two ways to the same tree
When local-best is global-best
Scheduling and merging — the greedy proof
The counterexample discipline
Dynamic Programming
0/5Memoization as remembered recursion — 1-D, 2-D, knapsack, sequences.
Memoization as remembered recursion
The shape of a recurrence — stairs, robber
Grids, edit distance, longest common subsequence
Choices under a budget
The pattern-matching family
Bit Tricks, Math & Strings
0/5Bit manipulation, number-theoretic algorithms, pattern matching, complexity classes.
Masks, subsets, parity
Sieve of Eratosthenes, fast exponentiation
Pattern matching and the KMP intuition
When a coin flip actually helps
The map of what's tractable
Fluency Under Pressure
0/5A repeatable problem-solving method, testing your own code, and a capstone.
How to attack any problem you've never seen
Making code you can live with
Invariants, edge cases, property tests
Speed as a byproduct of understanding
A chosen problem, from spec to tests, entirely yours