Skip to content

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

  • Operating Systems: Three Easy Pieces: Free legal online chapters: open
  • Structure and Interpretation of Computer Programs: Full open edition: open