Algorithms + software systems¶
Five ranked references. Rank 1 is the default spine, not a requirement to read all five.
1 | Introduction to Algorithms¶
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein | Algorithms reference | Undergraduate / graduate
The broad reference for data structures, graph algorithms, dynamic programming, greedy methods, randomized algorithms, and complexity.
Amazon search | No legal full text located
2 | Computer Systems: A Programmer's Perspective¶
Randal E. Bryant, David R. O'Hallaron | Systems spine | Undergraduate
Explains what software actually runs on: machine code, memory, caches, linking, processes, virtual memory, I/O, networking, concurrency.
Amazon search | No legal full text located
3 | Operating Systems: Three Easy Pieces¶
Remzi H. Arpaci-Dusseau, Andrea C. Arpaci-Dusseau | Open OS spine | Undergraduate
Conceptually clean treatment of virtualization, concurrency, persistence, and security, with projects and simulators.
Amazon search | Free legal online chapters
4 | Structure and Interpretation of Computer Programs¶
Harold Abelson, Gerald Jay Sussman, Julie Sussman | Abstraction / computation | Undergraduate
Trains compositional thinking, interpreters, abstraction, state, streams, metalinguistic abstraction, and computational models.
Amazon search | Full open edition
5 | Designing Data-Intensive Applications¶
Martin Kleppmann | Modern distributed systems | Professional / upper undergraduate
Excellent synthesis of storage, replication, partitioning, streams, consistency, transactions, and distributed-data tradeoffs.
Amazon search | No legal full text located