Index / 001 EN
Principles of Computer System Design cover

Computer Science

Computer Science

Principles of Computer System Design

Jerome H. Saltzer and M. Frans Kaashoek

A systems text about abstraction, modularity, naming, protection, communication, and the design principles that make complex computers dependable.

Difficulty Level
Advanced
Academic Level
Undergraduate
computer systemsoperating systemsnetworksabstractionsystems designreliability

01 / Classic Textbook Recommendation

Classic Textbook Recommendation

Citation

Saltzer, J. H., & Kaashoek, M. F. (2009). Principles of Computer System Design: An Introduction. Morgan Kaufmann.

Why It Matters

Computer systems are built from layers that hide complexity from one another. This book asks when those layers work, when they fail, and how designers can make the boundary between them explicit.

Core Ideas

Abstraction and Modularity

Abstraction lets a component expose a useful interface without exposing every implementation detail. Modularity then makes it possible to change one part while preserving the behavior expected by others.

Naming and Protection

Names connect users and programs to resources, while protection controls who may use those resources and under what conditions. Together they shape the security and usability of a system.

End-to-End Reasoning

Some functions are more reliable when implemented at the endpoints of a system rather than in the middle. This principle helps explain decisions in networking, storage, and distributed applications.

Failure and Recovery

Robust design assumes that components, links, and inputs can fail. Clear contracts, redundancy, isolation, and recovery procedures are ways to keep local faults from becoming system-wide failures.

Reading Lens

For every design principle, look for its trade-off. Ask what complexity is moved, what assumptions are required, and how the system behaves when an assumption is violated.

Conclusion

Principles of Computer System Design is valuable for readers who want to understand why systems are organized as they are. It builds a bridge between programming practice and the deeper reasoning behind operating systems, networks, and secure infrastructure.