If you’re even a tiny bit like me, you want to know how things work. And I don’t mean in the sense of “I know how a car works because I can drive it”. No, I mean in the sense that you know how the car works because you understand the internal combustion engine, the clutch and the differential axle – at least on a conceptual level. I’m also going to assume you sort of like computers, at least you’re reading this using one aren’t you. Have you understood how they work on a conceptual level?
This book is about that, and boy does it do a good job. The book in question carries the unassuming name of The Elements of Computing Systems and looks about as boring as it possibly could. But the contents are a whole different matter. Reading the book and doing the exercises will have you building a computer from the ground up.
The book starts by explaining what a logical gate is and how to construct other gates from a given gate. It has you building all the necessary gates out of NAND gates. It goes ever more complex, you build multiplexers, memory, a full adder, an ALU, a CPU – all with quite excellent tools that the book has freely available on it’s companion site.
It doesn’t stop there, once the computer is done it proceeds with writing your own very simple assembler for your home-made assembly language. In which you write a simple compiler for your home-made assembly on your home made computer. In which you carry on writing a very simple operating system for your computer. If that doesn’t blow ones mind away, what will?
The thing about this book is that it will never involve anything in the realm of electrical engineering. There are no talks of transistors and other stuff, which isn’t really necessary either to grasp the concepts. Reading this book is a truly eye-opening experience, and you simply won’t look at a computer the same way again.
Oh, and did I mention that most of the book actually is quite freely available from it’s companion site?
If this isn’t enough to convince you of how awesome this book is, the things inside it will enable you to build this sort of crazy stuff: