I am reading The Elements of Computing Systems. I’ve been wanting to read a few computer science classics but I thought I would start by reading this instead (it’s not a classic… yet) as I feel like there are holes in my knowledge. Just as an example, I have never implemented a virtual machine nor have written an emulator. Those are the kind of basic challenges that every computer hacker should beat at least once.
This is a rather uncommon kind of textbook. First of all, it openly presents itself as a light accessible book that can easily be picked up by anybody with little knowledge of computing systems, but at the same time it sets a very ambitious goal to the reader: to build a computing system completely ‘from NAND to Tetris’. Secondly, there are no exercises for the reader to practice, there are project specifications that should be implemented by the reader. The projects are self contained, I could implement them in whichever order I wanted. That said, they communicative with each other through well defined interfaces so that in the end, the group of all the projects form a complete computing system.
I’ve red the first three chapters and it has been a joy to read and to implement the projects.
For more information about the book check out its official website.