Nand2Tetris and implementing an ALU
Everyone understands that computer use zeros and ones to do work, binary numbers, binary computations. Everyone also understands computers are built of chips and wires. What many people don’t understand is how those wires and chips bridge the gap between simply turning a lightbulb on or off and actually representing computations.
The first time I truly understood this was not during undergrad (shameful, I admit) but rather while reading the book CODE by Charles Petzold. There is a difference between reading the concept and implementing it yourself though. Having just finished the second chapter of the Nand2Tetris book, I have to say that it is an amazing feeling to be able to tell exactly how to go from hardware to adding numbers. Not super applicable to my day to day job, but the intellectual exercise is extremely rewarding.
The next chapter is about sequential logic, or using values in memory to affect calculations. These types of circuits will require using clocks cycles and past input to generate output. Should be fun, as this gets me closer to how machines are actually implemented in industry.