I'd recommend the Nand Game[1], a schematic based version of Nand2Tetris[2].
One classic textbook is Patterson and Hennessy, Computer Organization & Design: The Hardware-Software Interface.
Learning how to program FPGAs (in verilog, etc.) is also a nice way for software people to start getting into hardware.