It's a funny coincidence you reccomend that book, since it's already in my library. Found it at a local dump by chance. Had no idea it was well-regarded.
It holds your hand through creating memory, adders, muxers from logic gates and then finally ending up with a virtual machine you can actually program with a made up assembly language.
Because of it, I have a perspective on constraints and state machines that helps with my day job as a programmer and distinguishes me from collegues.