Overview
The foundation everything else compiles down to: knowing which data structure fits which access pattern, estimating cost with big-O before writing code, and recognizing the standard algorithm families when a problem is secretly one of them. Doubly useful right now — it's also the deliberate-practice track for coding interviews, where fluency in the patterns matters more than memorizing solutions.
Key points
- Complexity as a habit: big-O for time and space, amortized analysis (why dynamic array append is O(1)), and the practical caveat — constants and cache behavior decide real performance between same-O options.
- Core structures & their access patterns: arrays vs. linked lists, hash maps (and their failure mode: worst-case collisions), heaps/priority queues, stacks & queues, trees (BST, balanced — the idea of red-black/AVL more than the rotations), tries, union-find, graphs (adjacency list vs. matrix).
- Algorithm families: sorting (know quicksort/mergesort/heapsort trade-offs; know when counting/radix beats comparison), binary search (and "binary search the answer"), graph traversal (BFS/DFS, Dijkstra, topological sort), dynamic programming (overlapping subproblems + optimal substructure), greedy (and proving it safe), divide & conquer.
- The interview pattern catalog: two pointers, sliding window, fast & slow pointers, prefix sums, monotonic stack, intervals, backtracking, top-K with a heap — most problems are one of ~20 patterns wearing a costume.
- Deliberate practice protocol: spaced repetition over volume; attempt hard for 20-30 min before reading solutions, then re-solve from scratch days later; talk aloud — the interview grades reasoning, not typing.
- In the wild: bloom filters, consistent hashing, LRU implementations, merkle trees — where this theme meets the system-design one.
- To explore: CLRS / Algorithm Design Manual (Skiena) as references, NeetCode 150 as a practice syllabus, complexity of the structures your languages actually ship.
Practice
- Exercism (source) — mentored small exercises in your language of the week; warms up the syntax so the pattern work below measures reasoning, not typing.
- Project Euler (source) — math-flavored problems where the naive solution never finishes; forces the complexity-as-a-habit instinct.
- Advent of Code (source) — a yearly ladder of puzzles that quietly walks the whole toolkit (parsing, graphs, DP, intervals); ideal as a new-language vehicle too.
- Interview-prep track (source) — the structured NeetCode-150-shaped syllabus: structures from scratch, then the pattern catalog with spaced re-solves.
- Coding Challenges (source) —
build-your-own-
wc/Redis/load-balancer projects where the structures show up in the wild instead of in a judge harness.
Related
- System design fundamentals — the large-scale application of the same instincts.
- Performance engineering — where big-O meets the memory hierarchy.
- Cache management — LRU/LFU are data-structure problems.
- How a computer works — where the constant factors big-O hides actually live.