How thinking was made mechanical
Computer Science
A computer is a rock we tricked into doing arithmetic by arranging it very carefully. Every layer above that — logic gates, instructions, languages, neural networks — is a story we tell to keep the complexity manageable. Learn the layers in the order they were built.
Foundations
Almost everyone learns computing from the top down and never closes the gap to physics. Start at the bottom instead: a switch, then a gate, then arithmetic, then a machine.
You will be able to
You can trace a path from a transistor to an executing instruction without any magic steps.
- Bits, encoding and why binaryWhy two states and not ten?
- Logic gates and Boolean algebraHow does a switch become a decision?
- Adders, ALUs and machine arithmeticHow does a pile of gates add?
- Memory, sequential logic and the CPUWhere does the machine's sense of 'before' and 'after' come from?
Programming is not typing. It is the discipline of stating a procedure with no ambiguity left in it — which is why it teaches you to think, whether or not you ever ship software.
You will be able to
You can decompose a problem and express the solution precisely enough for a machine to execute it.
- Variables, control flow, functionsWhat is the smallest set of constructs that can express any computation?
- Abstraction, decomposition and namingWhy is naming things genuinely one of the hard problems?
- Recursion and induction in codeHow can a function that calls itself ever stop?
- The shell, version control and the missing semesterWhat do working programmers know that no course teaches?
Core
The core intellectual content of computer science: how to organise data so that questions about it become cheap.
You will be able to
You can choose the right structure for a problem and justify the choice with a complexity argument.
- Asymptotic analysisHow do I compare two algorithms without running them?
- Arrays, lists, trees, heaps, hash tablesWhat question is each structure optimised to answer quickly?
- Sorting, searching, divide and conquerWhy can't comparison sorting beat n log n?
- Graph algorithmsHow many real problems are secretly graph problems?
- Dynamic programming and greedy algorithmsWhen is it safe to commit to a local choice?
What the abstraction is hiding. Performance lives here, and so does every bug that makes no sense at the language level.
You will be able to
You can explain why the same code runs ten times faster with a different memory access pattern.
- Instruction sets and the machine modelWhat does the processor actually see?
- Caches and the memory hierarchyWhy is memory the bottleneck rather than the CPU?
- Pipelining, branch prediction, speculationHow does a processor do several things at once and still look sequential?
The program whose job is to lie convincingly to every other program about having the machine to itself.
You will be able to
You can explain what happens between pressing a key and seeing a character.
- Processes, threads and schedulingHow does one CPU convincingly pretend to be many?
- Virtual memoryHow can every program believe it owns all the memory?
- Concurrency, locks and deadlockWhy is shared mutable state so hard to get right?
A global system with no central authority that mostly works. Understanding why is a lesson in designing for failure.
You will be able to
You can explain what happens between typing a URL and the page arriving.
- The layered model and packet switchingWhy layers, and why does the internet route rather than circuit-switch?
- IP, TCP and congestion controlHow does the network avoid collapsing under its own load?
- DNS, HTTP and TLSWhat does your browser trust, and why?
The discipline of not losing data, formalised. Transactions are one of the great engineering ideas.
You will be able to
You can design a schema that stays correct under concurrent writes and failure.
- The relational model and SQLWhy did one mathematical model beat every alternative for fifty years?
- Transactions, ACID and isolation levelsWhat does a database promise when two people write at once?
- Indexes, B-trees and query planningWhy is the same query fast one day and slow the next?
Advanced
The limits of the machine, established before the machine existed. Turing and Cook define the boundaries of the whole field.
You will be able to
You know which problems are impossible, which are merely intractable, and how to tell them apart.
- Automata and formal languagesWhat is the simplest machine that can recognise a pattern?
- Turing machines and undecidabilityIs there anything a computer provably cannot do?
- P, NP and the Cook–Levin theoremWhat does P vs NP actually ask?
Writing a compiler is the clearest way to understand what a language is — and why language design is a moral position about what mistakes should be possible.
You will be able to
You can build the thing that turns text into execution.
- Lexing, parsing and ASTsHow does a machine read a language?
- Type systemsWhat can a type checker prove about your program before it runs?
- Code generation and optimisationHow does a compiler make code faster than you would write it?
What happens when one computer is not enough. Every assumption you had about ordering, time and truth now needs defending.
You will be able to
You can reason about a system where the network lies and machines vanish.
- Time, ordering and consistency modelsWhat does 'at the same time' mean across two machines?
- Consensus: Paxos and RaftHow do machines agree when any of them may fail?
- CAP, replication and partition toleranceWhat must you give up, and when?
Every other module assumes good faith. This one assumes the opposite, and the change of assumption changes everything.
You will be able to
You can reason about adversaries rather than users, and you know why you must never roll your own crypto.
- Hashes, symmetric and public-key cryptographyHow do two strangers agree on a secret in public?
- Protocols, TLS and authenticationWhere do real systems break, given unbreakable maths?
- What Shor breaks, and what replaces itWhich of today's cryptography survives a quantum computer?
AI
Before the deep learning hype: what learning from data actually is, statistically. Skipping this is why so many practitioners cannot debug a model.
You will be able to
You can explain what a model is fitting, what it is assuming, and how it will fail.
- Supervised learning and generalisationWhy is fitting the training data the easy part?
- Bias, variance and regularisationWhy does a more powerful model sometimes do worse?
- Linear models, trees, SVMs, ensemblesWhen does the boring model beat the sophisticated one?
- Clustering and dimensionality reductionWhat can you learn with no labels at all?
Why a stack of matrix multiplications and one nonlinearity turned out to be enough.
You will be able to
You can build, train and debug a neural network, and explain why depth helps.
- Neural networks and backpropagationHow does a network know which weight to blame?
- Optimisation, initialisation and regularisation in practiceWhy is training a network more craft than theory?
- CNNs, RNNs and why attention replaced themWhat inductive bias does each architecture encode?
The most consequential technology of the decade, built from ideas in the previous three modules. Learn the mechanism, not the mythology.
You will be able to
You can explain what a transformer does, token by token, and what it cannot do.
- Attention and the transformerWhat problem was attention invented to solve?
- Build a GPT from scratchCan I actually implement one myself?
- Scaling laws, fine-tuning and alignmentWhy does making it bigger keep working, and what breaks?
- What language models cannot doWhere is the boundary between capability and appearance?
Frontier
Where this subject and Physics meet. Approached as a computational model rather than as physics.
You will be able to
You can read a quantum circuit and say what classical problem it attacks.
- The quantum computational modelHow is a qubit different from a probabilistic bit?
- Quantum algorithms and their limitsWhich problems actually get faster?
- Writing quantum softwareWhat does the code actually look like?