CS-522: Principles of Computer Systems (Fall 2022)

A modern computer system spans many layers: applications, libraries, operating systems, networks, and hardware devices. Building a good system entails making the right trade-offs (e.g., between performance, durability, and correctness) and understanding emergent behaviors—the difference between great system designers and average ones is that the really good ones make these trade-offs in a principled fashion, not by trial-and-error. In this course, we identify some of the key principles underlying successful systems, and learn how to solve problems in computing using ideas, techniques, and algorithms from operating systems, networks, databases, programming languages, and computer architecture. The basic courses on these topics teach how the elemental parts of modern systems work; POCS picks up where those courses leave off and focuses on how the pieces come together to form useful, efficient systems.

This course is targeted primarily at students who wish to acquire a deep understanding of computer system design or pursue research in systems. It is an intellectually challenging, fast paced course, in which survival requires a good background in operating systems, databases, networking, programming languages, and computer architecture. Please see the syllabus for more information.

POCS 2022 Schedule

Week Lecture Topic Recitation Topic OP due on Tue 9am
following week?
1 20-Sep Introduction
Modules & interfaces
23-Sep Exokernel
(focus on interfaces)
2 27-Sep Naming 30-Sep Global Name Service + Chord
Recap of comp nets
3 4-Oct Case study: Memory virtualization 7-Oct Twizzler
(focus on naming and interfaces to mem)
4 11-Oct Technical writing 14-Oct Writing exercises OP1
5 18-Oct Layers 21-Oct Multi-path TCP + RON  
6 25-Oct Case study: Internet design 28-Oct Akamai
(focus on layers)
7 1-Nov Client/server 4-Nov Microkernel + Duality of OS structs
(focus on cli/srv isolation via messages)
8 8-Nov Case study: Machine virtualization 11-Nov Formal reqs for virtualization + Xen
(focus on layering and interfaces)
9 15-Nov Redundancy & Fault Tolerance 18-Nov RAID, RAMcloud
(focus on how redundancy is used)
10 22-Nov Case study: Transactions 25-Nov Replication explained through baseball, CAP 12 yrs later
(focus on txnal semantics & redundancy)
11 29-Nov Lazy vs. Speculative Execution 2-Dec - OP3
12 6-Dec Locality 9-Dec Exam recap  
13 13-Dec Exam 16-Dec Student presentations (Hints paper)  
14 20-Dec Student presentations (Hints paper) 23-Dec Student presentations (Hints paper)  

This schedule is subject to modifications over the course of the semester.



Teaching assistants


We assign readings for each principle we cover; these are typically classic Computer Systems papers that embody the principle and have stood the test of time. For those who need additional material to compensate for a lack of background, try the textbook Principles of Computer System Design: An Introduction by J. H. Saltzer and M. F. Kaashoek which is available in the EPFL library. Chapters 7 - 11 are also freely available online as a PDF. You can get the Kindle version or a 20th-century-style paperback for your own library.


We hold in-class interactive sessions on Tuesdays 11:15-13:00 and Fridays 11:15-13:00, both in BC-01. Some of these sessions take the form of classic lectures, while others are recitations in which we discuss the week’s readings. The goal of all in-class sessions is to understand in depth the principle(s) of that week, and the connection between it and the concrete instantiations in the assigned readings.

We regularly assign 1-page writeups called one-pagers (OPs) and hold in-class quizzes that cover the assigned readings for the week.

Your grade in the class is broken down as follows:

30% -  OPs
20% -  Quizzes
40% -  Final exam
10% -  Presentations + participation and contribution to class discussions

POCS is a heavyweight course carrying 7 units of ECTS credit (according to the Conférence universitaire suisse, this means 210 learning hours/semester, i.e., 15 hours/week). This course is meant primarily for students who intend to pursue research in the area of systems, therefore you must have a solid systems background. One way to acquire this background is, for example, by taking at least the following:

Without a solid systems background, it is hard to succeed in POCS. If you wish to brave it out despite an incomplete background, please be ready to spend at least 2x more time than the other students in order to acquire, on the side, the necessary background on your own.

Collaboration policy

We encourage you to discuss the reading materials with your peers, but every assignment you turn in must be your own work. You are not permitted to discuss the topic of the OP with other students prior to your or their final submission. Cheating, plagiarism, and any form of dishonesty will be handled with maximum severity. If you are ever in doubt about whether an action on your part may constitute unacceptable collaboration, please ask the course staff before proceeding—doing so afterward is too late.

OP rules

These are the rules for an OP submission. Not respecting these rules will be severely penalized.

Use a maximum of 500 words for the body of your writeup; in the words of Antoine de Saint-Exupéry, “perfection is achieved not when there is nothing more to add, but when there is nothing left to take away.” OPs require in-depth consideration of the assigned materials, along with good technical writing. Spellcheck.

Your submission must be in PDF and consist of one single-spaced A4 page, including all figures, tables, and references. References should have complete citations at the bottom of the OP, which in turn are hyperlinked to electronic versions of the cited materials, whenever possible. The OP should be single-column and use Times Roman (or equivalent serif) font with 10-point type or greater. The title and references do not count toward the 500-word limit.

Submit your OP through the corresponding Moodle submission site by the indicated due date and time. The submission’s title must be of the form “OP_n_: Title”, where n is the single-digit number of the OP. Do not write your name on the OP.

You are not allowed to discuss the topic of the OP with anyone else until after the submission deadline. The OP must be 100% your own work.