Roadmaps
Computer Science Foundations
The parts of a CS degree that keep earning, in the order they make sense.
Not a degree in a folder and not a list of frameworks. This is the durable half of computer science: how to program something you can still read in a year, which data structures actually decide whether your program is fast, how the machine underneath behaves, and the theory that tells you when a problem is impossible rather than merely hard.
What you can do at the end
- Write a program a colleague can follow, with tests that fail for the right reasons.
- Choose a data structure on purpose instead of by habit, and say what it costs.
- Explain what happens between your code and the CPU, and use that to debug it.
- Read a proof sketch, a complexity bound or a spec without flinching.
- Know which problems to attack and which to route around.
Ticking a step is remembered in this browser only — there is no account and nothing is sent anywhere.
Programming, from the ground up
Syntax is the small part. This stage is about the habits that decide whether you can still work in your own code six months from now.
One language, properly
Collections, error handling, files, modules and a build step — the parts that are the same in every language, learned once in one of them.
Planned in the LibraryProgramming FundamentalsNumbers on a computer
Base 2, 8 and 16, integer overflow, floating-point precision. Why 0.1 + 0.2 is not 0.3, and what to do about it.
Written in the LibraryNumbers & ArithmeticDebugging as a skill
Read the error, form one hypothesis, bisect the search space. A debugger beats a scatter of print statements.
Tests that earn their keep
A unit test, an integration test, and the difference between testing behaviour and testing implementation.
After Debugging as a skill
Reading other people's code
Finding the entry point of an unfamiliar repository, following one request through it, and knowing when to stop reading.
Version control
Commits that explain themselves, branches that stay short, and a history you can bisect when a bug appears.
Planned in the LibraryVersion Control
Data structures and algorithms
Not interview trivia — the vocabulary for talking about cost. This is the stage that changes how you write code rather than what you can write.
Big-O, honestly
Counting operations, worst against average case, and why the constant factor decides at small n.
Planned in the LibraryAlgorithmsArrays and strings
Contiguous memory, why indexing is constant time and inserting in the middle is not, and the copy you did not notice.
Planned in the LibraryData StructuresHash maps and sets
The structure you reach for most: hashing, collisions, load factor, and what "unordered" actually promises.
After Arrays and strings
Planned in the LibraryData StructuresTrees and heaps
Binary search trees, balanced trees, priority queues — and the shape an index in a database takes.
After Hash maps and sets
Planned in the LibraryData StructuresGraphs and traversal
Breadth-first, depth-first, topological order and shortest paths: the four algorithms behind scheduling, dependencies and routing.
After Trees and heaps
Planned in the LibraryAlgorithmsSorting and searching
Quicksort, mergesort and binary search — then the honest version: know when to call the library function.
After Arrays and strings
Planned in the LibraryAlgorithmsDeliberate practice
A few problems a week, written up properly. Twenty problems explained beat two hundred skimmed.
After Graphs and traversal
Planned in the LibraryAlgorithms
How the machine works
The layer your abstractions sit on. Everything here is the answer to a question you will ask the hard way at some point.
Memory
Stack and heap, references, allocation and release. Enough that a leak or a segfault is a diagnosis rather than a mystery.
Planned in the LibraryOperating SystemsProcesses, threads and scheduling
Concurrency, race conditions, locks and what "async" is really doing with your one thread.
After Memory
Planned in the LibraryOperating SystemsHow your code gets run
Parsing, bytecode, virtual machines and JIT — and why a stack trace is shaped the way it is.
Written in the LibraryFormal Languages & GrammarsNetworks and the request path
Packets, ports, TCP and HTTP: the path a request takes before your function is called.
Planned in the LibraryComputer NetworksRelational data and SQL
Tables, joins, indexes, transactions and normalisation — the model most software is quietly built on.
Planned in the LibraryThe Relational Model & SQLFiles, storage and durability
AdvancedWhat survives a crash, what fsync costs, and why "written to disk" is a promise with paperwork.
After Relational data and SQL
Theory that pays for itself
The half of a degree people think is useless, kept to the parts that change decisions: what is provable, what is impossible, and what will not scale.
Logic, sets and proof
Quantifiers, implication, and the standard proof moves. The grammar of every precise argument in the subject.
Planned in the LibrarySet TheoryAutomata and grammars
What a regular expression can and cannot express, when you need a parser, and where every language actually sits.
After Logic, sets and proof
Planned in the LibraryAutomata TheoryWhat cannot be computed
The halting problem, undecidability, and why "just write a checker" is not always available to you.
After Automata and grammars
Planned in the LibraryComputability TheoryP, NP and the classes
Reductions, hardness and approximation: how to tell a hard problem from a badly chosen algorithm.
After What cannot be computed
Planned in the LibraryComplexity TheoryProbability and statistics
Counting, distributions, expectation, and the tests that tell you whether a result means anything.
Planned in the LibraryCombinatorics & ProbabilityVectors and matrices
OptionalThe language underneath graphics, machine learning and signal processing — and worth the effort for its own sake.
Planned in the LibraryVectors & MatricesPick a specialism
OptionalSystems, security, data, theory or applied engineering. Foundations are the floor, not the house.
After P, NP and the classes · Probability and statistics