
This book thoroughly explains how computers work. It starts by fully examining a NAND gate, then goes on to build every piece and part of a small, fully operational computer. The necessity and use of codes is presented in parallel with the apprioriate pieces of hardware. The book can be easily understood by anyone whether they have a technical background or not. It could be used as a textbook.
The CPU arch course was with a different teacher and on a made up CPU though. It wasn't even a full CPU we were just learning modules and what they do. Kind of a more advanced (and less palatable) version of the book "but how do it know" (which btw is a great read for the neophyte like me).