- Structure and Interpretation of Computer Programs
- Computer Systems: A Programmer's Perspective
- The Algorithm Design Manual
- Mathematics for Computer Science
- Operating Systems: Three Easy Pieces
- Computer Networking: A Top-Down Approach
- Readings in Database Systems
- Crafting Interpreters
- Designing Data-Intensive Applications
Other books I've seen:
- Computer Graphics From Scratch
- Haskell Programming From First Principles
- Zero To Production In Rust
I recently made a major update, in particular: strongly recommending _Computer Systems: A Programmer's Perspective_ and _Designing Data-Intensive Applications_; recommending _Crafting Interpreters_ over the Dragon Book for those new to compilers; updating a number of broken links (due to shutdown of Lagunita); and, adding a few secondary recommendations
I've been meaning to update it slightly, to recommend _Computer Systems: A Programmer's Perspective_ over P&H (although P&H is still excellent) as well as Martin Kleppmann's book _Designing Data-Intensive Applications_ for distributed systems.