Computer Architecture
Every abstraction eventually runs on real silicon. Architecture is where your code stops being ideas and becomes voltages, gates, and clock ticks.
It begins with a switch. A transistor that is either on or off gives you a bit, and a handful of transistors wired together give you a gate that computes AND, OR, or NOT.
Start from that switch and build up: gates become adders, adders become a datapath, and a datapath plus control becomes a processor that actually executes instructions.
The instruction set is the seam between hardware and software — a small, fixed vocabulary the machine promises to understand, that every compiler and program above it is written against.
Performance lives here. Pipelining, caches, and the memory hierarchy explain why one loop runs ten times faster than another that looks identical — and how to write code the machine actually likes.
Modern speed is mostly illusion, carefully maintained. Pipelining, out-of-order execution, branch prediction, and caches all work to hide latency, so the simple model in your head stays roughly true while the silicon does something far cleverer.
Understand the machine and you stop being surprised by it. You’ll know why things are slow, where the limits are, and how to work with the hardware instead of against it.
It is the floor the whole tower stands on. Every language, framework, and clever abstraction above eventually cashes out as instructions this machine runs, one clock tick at a time.