This section contains information about reading assignments from the textbook and from papers.


The following textbook is often referred to as the "course notes" in the assignments and other materials. Reading assignments for each lecture are provided in the table below.

Amazon logo Saltzer, Jerome H., and M. Frans Kaashoek. Principles of Computer System Design: An Introduction, Part I. San Francisco, CA: Morgan Kaufmann, 2009. ISBN: 9780123749574.

Part II of the textbook is available through MIT OpenCourseWare.

L1 Introduction to systems 1.1, 1.2, 1.3
L2 Complexity in computer systems 1.4, 1.5
L3 Abstractions and naming 2.1, 2.2
L4 Modularity with client/server 4.1, 4.2, 4.3
L5 Operating system structure 5.1, 5.2, 5.3
L6 Clients and servers within a computer 5.5, 5.6
L7 Virtualizing processors: threads 5.4
L8 Performance 6.1, 6.2, 6.3
L9 Introduction to networks 7.1
L10 Layering and link layer 7.2, 7.3
L11 Network layer, routing 7.4
L12 End-to-end layer 7.5
L13 Congestion control 7.6
L14 Distributed naming 4.4
L15 Reliability 8.1, 8.2, 8.3
L16 Atomicity concepts 9.1
L17 Recoverability 9.2, 9.3
L18 Isolation 9.4, 9.5
L19 Multi-site atomicity 9.6
L20 Consistency and replication 10.1-10.4
L21 Security intro 11.1
L22 Authentication 11.2, 11.3
L23 Cryptographic protocols 11.5
L24 Authorization and confidentiality 11.4, 11.6

Systems design experience

Guest lecture: Frank Dabek

L26 Complexity  



See the Recitations section for reading instructions for specific papers. Some of the papers discussed in recitations do not appear in this reading list.


Introduction to Computer Systems

Gabriel, Richard. "The Rise of 'Worse is Better'." AI Expert 6, no. 6 (1991): 33-35.

Simon, Herbert. "The Architecture of Complexity." Proceedings of the American Philosophical Society 106, no. 6 (1962): 467-482.

Gopen, George, and Judith Swan. "The Science of Scientific Writing." American Scientist 78, no. 6 (1990): 550-558.

Leveson, Nancy, and Clark Turner. "An Investigation of the Therac-25 Accidents." Computer 26, no. 7 (1993): 18-41.

Computer System Organization

Scheifler, Robert, and Jim Gettys. "The X Window System." ACM Transactions on Graphics 5, no. 2 (1986): 79-109. [abstract]

Ritchie, Dennis, and Ken Thompson. "The UNIX Time-Sharing System." Bell System Technical Journal 57, no. 6, part 2 (1978): 1905-1930.

Savage, Stefan, Michael Burrows, Greg Nelson, Patrick Sobalvarro, and Thomas Anderson. "Eraser: A Dynamic Race Detector for Multithreaded Programs." ACM Transaction on Computer Systems 15, no. 4 (1997): 391-411. [abstract]

Dean, Jeffrey, and Sanjay Ghemawat. "MapReduce: Simplified Data Processing on Large Clusters." Sixth Symposium on Operating Systems Design and Implementation (OSDI). San Francisco, CA, December 2004.


Metcalfe, Robert, and David Boggs. "Ethernet: Distributed Packet Switching for Local Computer Networks." Communications of the ACM 19, no. 7 (1976): 395-404. [abstract]

Saltzer, J. H., D. P. Reed, and D. D. Clark. "End-to-End Arguments in System Design." ACM Transactions on Computer Systems 2, no. 4 (1984): 277-288. [abstract]

Balakrishnan, Hari. "An Introduction to Wide-Area Internet Routing." 6.033 case study, MIT, January 2009.

Huston, Geoff. "Anatomy: A Look Inside Network Address Translators." The Internet Protocol Journal 7, no. 3 (2004): 2-32.


Brin, Sergey, and Lawrence Page. "The Anatomy of a Large-Scale Hypertextual Web Search Engine." Computer Networks and ISDN Systems 30 (1988): 107-117.

Failure Recovery, Coordination, and Atomicity

Patterson, David, Garth Gibson, and Randy Katz. "A Case for Redundant Arrays of Inexpensive Disks (RAID)." Proceedings of the ACM SIGMOD Conference (1998): 109-116. [abstract]

Rosenblum, Mendel, and John Ousterhout. "The Design and Implementation of a Log-Structured File System." ACM Transactions on Computer Systems 10, no. 1 (1992): 26-52. [abstract]


Pincus, Jonathan, and Brandon Baker. "Beyond Stack Smashing: Recent Advances in Exploiting Buffer Overruns." IEEE Security and Privacy 2, no. 4 (2004): 20-27. [abstract]

Anderson, Ross. "Why Cryptosystems Fail." Proceedings of the 1993 ACM Conference in Computer and Communications Security (1993): 215-227. [abstract]

Kumar, Abishek, Vern Paxson, and Nicholas Weaver. "Exploiting Underlying Structure for Detailed Reconstruction of an Internet-scale Event." Proceedings of the ACM Internet Measurement Conference (2005): 351-364. (This resource may not render correctly in a screen reader.PDF)

Thompson, Ken. "Reflections on Trusting Trust." Communications of the ACM 27, no. 8 (1984): 761-763. [abstract]

More Complexity

Lampson, Butler. "Hints for Computer System Design." Operating Systems Review 17, no. 5 (1983): 33-48. [abstract]

Additional Readings

Isard, Michael, Mihai Budiu, Yuan Yu, Andrew Birrell, and Dennis Fetterly. "Dryad: Distributed Data-Parallel Programs from Sequential Building Blocks." ACM SIGOPS Operating Systems Review 41, no. 3 (2007): 59-72. (This resource may not render correctly in a screen reader.PDF) [abstract]

Jagatic, Tom, Nathaniel Johnson, Markus Jakobsson, and Filippo Menczer. "Social Phishing." Communications of the ACM 50, no. 10 (2007): 94-100. [abstract]