texts & otherwise for bottom up teaching/learning

Hi Folks,

My son is now studying computer science at college, and in looking over some of his course materials, I've noticed how differently computer science seems to be taught, compared to earlier times (in my case, early 70s, MIT).

Which leads me to wonder, if one wanted to teach/learn the way I did, bottom up, are there any good books (textbook format or otherwise), lecture notes, online tutorials, etc. that one might use to proceed from:
- math, theory of computation background
- basic hardware concepts -> computer architecture
- machine language, assembly language (including assembler and linker concepts
- higher level languages (including compiler and interpreter concepts/designs)
- algorithms and problem analysis/solution
- operating systems
- databases
- networking
- systems
- systems of systems

A few old standards come to mind:
- Structure and Interpretation of Computer Programs (Sussman, et. al.)
- The C Programming Language & The Unix Programming Environment (Kernighan and Pike) - still find these useful occasionally
- Knuth (obviously)
- Comer, Tannenbaum, Stallings for networking

I'm drawing a blank, though, when it comes to "what's under the hood" - going bottom up through basic computing concepts, hardware architecture, machine and assembly language, assemblers, interpreters, compilers, operating systems.

So a question to folks here: what's stuck with you folks over the years, and/or what have you come across more recently, that might fit the bill?

Miles Fidelman