'Programming from the ground up' the main idea of this one is to teach programming in a bottom up way, so very low level.
it's mostly about teaching (linux) assembly to beginners, so in a way it is just learning a new language. But it's mainly about understanding low level how a computer works, like registers, kernel calls, how function calls are handled, all for beginners. It's really easy to pick up.
Knowing those fundamentals can go a long way in understanding other computing concepts.
Others that come to mind are :
- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
- A Philosophy of Software Design
- Software Architecture: The Hard Parts"
And keep the old pieces, in the end assemble them back together and see what the differences are