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

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 course catalog entry for more information.

POCS 2023 Syllabus

Lecture Topic Recitation Topic
19-Sep Modularity & Abstraction 22-Sep Exokernel
(focus on interfaces)
26-Sep Naming & Indirection 29-Sep Global Name Service + Chord
3-Oct Case study: Memory virtualization 6-Oct Twizzler
(focus on naming and interfaces to memory)
10-Oct Layering 13-Oct Multi-path TCP + RON
17-Oct Case study: Machine virtualization 20-Oct Formal reqs for virtualization + Xen
(focus on layering and interfaces)
24-Oct Case study: Internet design 27-Oct Akamai
31-Oct Client/server organization 3-Nov Microkernel + Duality of OS structs
(focus on cli/srv isolation via messages)
7-Nov Locality & Caching 10-Nov Working set analytics
14-Nov Redundancy 17-Nov RAID, RAMcloud
(focus on how redundancy is used)
21-Nov Case study: Transactions 24-Nov Replication explained through baseball, CAP 12 yrs later
(focus on txnal semantics & redundancy)
28-Nov Lazy / Speculative execution 1-Dec Design questions on lazy and speculative execution
(No assigned reading)
5-Dec Case studies in HW/SW co-design 8-Dec A New Golden Age for Computer Architecture
(about 10 minutes, up to when Patterson starts)
There’s plenty of room at the Top
12-Dec Exam review 15-Dec Exam review
19-Dec Exam 22-Dec Exam discussion (offered remotely via Zoom Link)

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

Staff

Instructors

Teaching assistants

Readings

We assign readings for each principle we cover; these are typically classic Computer Systems papers that embody the principle and withstood 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; it’s available in the EPFL library as well as various places online.

Logistics

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.

On Fridays, students complete a one-paragraph (OP) writing assignment in class that cover the readings and concepts studied thus far.

Your grade for the course will be computed 50% based on the OPs and 50% based on the exam. We will adjust grades in cases where we consider that the computed outcome does not correspond to the student’s mastery of the subject.

POCS is a heavyweight course carrying 8 units of ECTS credit, which means ~17 hours/week of work for students who have the required background. 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, 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. We nevertheless reserve the right to deny enrollment to students who do not fulfill the prerequisites.

Collaboration policy

We encourage you to discuss the reading materials with your peers; experience suggests that this helps a lot in understing the material deeper. Every written assignment must be your individual work, so you are not permitted to discuss the topic with other students before the submission deadline. 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 — asking afterward is too late.