RES.6-033 | Spring 2009 | Undergraduate

Principles of Computer System Design: An Introduction

Online Textbook

Guide to Parts I & II

  • Table of Contents of Parts I & II (PDF)
  • Design Principles (PDF)
  • Glossary of Terms Used in Computer Systems (PDF)
  • Index to Parts I & II (PDF)

Part I

Part I: (not on-line, chapter titles for reference only)
Front-End Matter (title page, contents, etc.)    
Chapter 1: Systems    
Chapter 2: Elements of Computer System Organization    
Chapter 3: The Design of Naming Schemes    
Chapter 4: Enforcing Modularity with Clients and Services    
Chapter 5: Enforcing Modularity with Virtualization    
Chapter 6: Performance    
Suggestions for Further Reading    
Problem Sets    
Index of Concepts
Errata for Part I (PDF) [updated February 2022]

Part II

Part II: Chapters 7-11 (Version 5.0, June 2009)

Front-End Matter (PDF)

Title page, contents, list of sidebars, preface, acknowledgements, computer system design principles

Errata for Part II (PDF) [updated February 2022]
Chapter 7: The Network as a System and as a System Component (PDF)    
  Slides of chapter 7 figures (zipped Keynote) (PPT) (PDF)
7.1 Interesting properties of networks    
7.2 Getting organized: layers    
7.3 The link layer    
7.4 The network layer    
7.5 The end-to-end layer    
7.6 A network system design issue: congestion control    
7.7 Wrapping up networks    
7.8 Case study: mapping the Internet to the Ethernet    
7.9 War stories: surprises in protocol design    
Chapter 8: Fault Tolerance: Reliable Systems from Unreliable Components (PDF)    
  Slides of chapter 8 figures (zipped Keynote) (PPT) (PDF)
8.1 Faults, failures, and fault-tolerant design    
8.2 Measures of reliability and failure tolerance    
8.3 Tolerating active faults    
8.4 Systematically applying redundancy    
8.5 Applying redundancy to software and data    
8.6 Wrapping up reliability    
8.7 Application: A fault tolerance model for CMOS RAM    
8.8 War stories: fault-tolerant systems that failed    
Chapter 9: Atomicity: All-or-nothing and Before-or-after (PDF)    
  Slides of chapter 9 figures (zipped Keynote) (PPT) (PDF - 1.1MB)
9.1 Atomicity    
9.2 All-or-nothing atomicity I: concepts    
9.3 All-or-nothing atomicity II: pragmatics    
9.4 Before-or-after atomicity I: concepts    
9.5 Before-or-after atomicity II: pragmatics    
9.6 Atomicity across layers and multiple sites    
9.7 Case studies: machine language atomicity    
9.8 A more complete model of disk failure (advanced topic)    
Chapter 10: Consistency (PDF)    
  Slides of chapter 10 figures (zipped Keynote) (PPT) (PDF)
10.1 Constraints and interface consistency    
10.2 Cache coherence    
10.3 Durable storage revisited: geographically separated replicas    
10.4 Reconciliation    
10.5 Perspectives    
Chapter 11: Information Security (PDF)    
  Slides of chapter 11 figures (zipped Keynote) (PPT) (PDF)
11.1 Introduction to secure systems    
11.2 Authenticating principals    
11.3 Authenticating messages    
11.4 Message confidentiality    
11.5 Security protocols    
11.6 Authorization: controlled sharing    
11.7 Reasoning about authentication (advanced topic)    
11.8 Summary    
11.9 Cryptography as a building block (advanced topic)    
11.10 Case study: Transport Layer Security (TLS) for the Web    
11.11 War stories: security system breaches    
Suggestions for Further Reading (PDF)
Glossary (PDF)
Problem Sets (PDF - 1.1MB)
Index of Concepts (PDF)

All of Part II in a single file

Principles of Computer System Design: An Introduction Part II - 826 pages (PDF - 4.2 MB)


Saltzer, Jerome H., and M. Frans Kaashoek. Principles of Computer System Design: An Introduction, Part I.

  • Print edition San Francisco, CA: Morgan Kaufman/Elsevier, 2009. ISBN: 9780123749574.
  • e-book Science Direct (Elsevier B.V.)

Course Info

As Taught In
Spring 2009
Learning Resource Types
Online Textbook
Problem Sets