There's a great textbook called The Elements of Computing Systems: Building a Modern Computer from First Principles by Noam Nisan and Shimon Schocken, which serves as the basis for a university course taught by the authors called Workshop In Computer Construction - From NAND
to Tetris in 12 Steps. This course is also taught at other universities under different names.
There's a 10 minute introduction on YouTube and a 1 hour Google TechTalk on Google Video, both by the author himself.
The official companion web site is http://nand2tetris.org/
Don't let the title "Computer Construction" fool you. By "computer", the author does not just mean the rectangular plastic box on your desk, he means the entire computing system, from the individual logic gates up to highest-level application programming.
The book/course teaches you
- how to create your own individual logic gates
- how to build your own logic circuits
- how to build your own CPU
- how to program in machine code directly
- how to program in your own assembler (which you wrote in machine code)
- how to write your own virtual machine
- how to design, implement and program in your own high-level language (which you wrote in assembler)
- how to write a bootloader
- how to write an operating system
- and ultimately how to write a simple game