Who this is for. Anyone preparing for coding interviews or revisiting the fundamentals.
How to use it. Start with complexity, learn the structures, then the algorithms that use them; the coding gym at the end is for practice by hand.
The reading order
- Foundations
01 · 1 entry
- Data structures
02–13 · 12 entries
- Algorithms
14–24 · 11 entries
- Practice
25 · 1 entry
Part 1 · 01Foundations
How to measure an algorithm.
- 01Computational Complexity →
Interactive presentation on computational complexity — Big-O, P vs NP, NP-completeness, reductions, approximation, and amortised analysis
Part 2 · 02–13Data structures
From contiguous memory to probabilistic sketches.
- 02Arrays and Linked Lists →
Interactive presentation on arrays and linked lists — contiguous memory, dynamic arrays, singly linked, doubly linked, skip lists, and cache performance
- 03Stacks and Queues →
Interactive presentation on stacks and queues — LIFO, FIFO, priority queues, monotonic structures, deque, and expression evaluation
- 04Hash Tables →
Interactive presentation on hash tables — hash functions, collision resolution, open addressing, cuckoo hashing, load factor, and concurrent maps
- 05Binary Trees →
Interactive presentation on binary trees — traversals, tree properties, LCA, Morris traversal, expression trees, and serialisation
- 06Binary Search Trees →
Interactive presentation on binary search trees — BST invariant, search and insertion, balancing, treaps, splay trees, and order statistics
- 07Balanced Trees →
Interactive presentation on balanced trees — AVL trees, Red-Black trees, rotations, 2-3 trees, balance factor, and persistent trees
- 08B-Trees →
Interactive presentation on B-trees — B-tree operations, B+ trees, disk I/O, database indexes, node splitting, and LSM comparison
- 09Heaps and Priority Queues →
Interactive presentation on heaps — binary heaps, heap sort, Fibonacci heaps, build-heap, decrease-key, and priority queue ADT
- 10Tries →
Interactive presentation on tries — prefix trees, radix trees, suffix trees, autocomplete, Patricia tries, and IP routing
- 11Graph Data Structures →
Interactive presentation on graph data structures — adjacency matrix, adjacency list, CSR format, DAGs, property graphs, and graph libraries
- 12Disjoint Sets (Union-Find) →
Interactive presentation on disjoint sets — union by rank, path compression, inverse Ackermann, Kruskal's MST, and connected components
- 13Bloom Filters & Probabilistic DS →
Interactive presentation on probabilistic data structures — Bloom filters, HyperLogLog, Count-Min Sketch, cuckoo filters, and cardinality estimation
Part 3 · 14–24Algorithms
Sorting and searching, the design paradigms, then graphs.
- 14Sorting Algorithms →
Interactive presentation on sorting algorithms — bubble, merge, quick, heap, radix, counting, stability, complexity analysis, and real-world implementations
- 15Divide and Conquer →
Interactive presentation on divide and conquer — Master theorem, merge sort, quick sort, Strassen's algorithm, closest pair, and FFT
- 16Hashing Algorithms →
Interactive presentation on hashing algorithms — hash functions, collision resolution, open addressing, consistent hashing, cryptographic hashes, and perfect hashing
- 17String Matching Algorithms →
Interactive presentation on string matching — KMP, Rabin-Karp, Boyer-Moore, suffix arrays, Aho-Corasick, and pattern matching
- 18Greedy Algorithms →
Interactive presentation on greedy algorithms — greedy choice property, activity selection, Huffman coding, fractional knapsack, and exchange arguments
- 19Dynamic Programming →
Interactive presentation on dynamic programming — optimal substructure, memoization, tabulation, knapsack, edit distance, and state transitions
- 20Backtracking Algorithms →
Interactive presentation on backtracking — state space trees, N-Queens, Sudoku, constraint satisfaction, pruning, and branch and bound
- 21Graph Algorithms →
Interactive presentation on graph algorithms — BFS, DFS, topological sort, connected components, cycle detection, and graph coloring
- 22Shortest Path Algorithms →
Interactive presentation on shortest path algorithms — Dijkstra, Bellman-Ford, Floyd-Warshall, A* search, negative cycles, and routing
- 23Minimum Spanning Trees →
Interactive presentation on minimum spanning trees — Kruskal's, Prim's, Borůvka's, cut property, Union-Find, and network design
- 24Network Flow Algorithms →
Interactive presentation on network flow — max-flow min-cut, Ford-Fulkerson, Edmonds-Karp, Dinic's, bipartite matching, and cost flow
Part 4 · 25Practice
Writing it yourself.
- 25Coding Challenge Coach →
LLM-examined, LeetCode-style practice for rebuilding hand-coding skill: 860 problems in Python, C, JavaScript, TypeScript, Verilog, SystemVerilog and VHDL, easy-first levels, hidden tests and a 100-point rubric, and an examiner that never writes your code