My lovely girlfriend surprised me with a copy of Code: The Hidden Language of Computer Hardware and Software for Christmas! I’ve been reading it over the past week or so, and have really enjoyed it.
It’s very similar in scope to Nand2Tetris, but with more of a guided tour through the nuanced history of computing. It starts by discussing the logical structure of codes such as product codes (UPC), Morse code, and Braille. Then it moves into a study of basic electrical circuits and eventually into building a calculator (well, a theoretical one, at least – it’s much too large to physically build).
Overall, it has been a great read thus far and I look forward to finishing it.