- français
- English
Coursebooks
Principles of computer systems
CS-522
Lecturer(s) :
Argyraki AikateriniCandea George
Language:
English
Summary
This advanced graduate course focuses on key design principles underlying successful computer and communication systems, and teaches how to solve real problems using ideas, techniques, and algorithms from operating systems, networks, databases, programming languages, and computer architecture.Content
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 develop such a principled framework for system design, covering the following topics:
- Modularity, Abstraction, and Layering
- Indirection and Naming
- Locality
- End-to-end / State partitioning
- Virtualization
- Atomicity and Consistency
- Redundancy and Availability
- Interpretation, Simulation, Declarativity
- Laziness vs. Speculation
- CAP Theorem, DQ Principle, Harvest/Yield
- Least Privilege, Minimum TCB
Learning Prerequisites
Required courses
Principles of Computer Systems (POCS) is targeted 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 mere survival requires a solid background in operating systems, databases, networking, programming languages, and computer architecture. The basic courses on these topics teach how the elemental parts of modern systems work - POCS picks up where the basic courses leave off and focuses on how the pieces come together to form useful, efficient systems. To do well in POCS, a student must master the material of the following courses:
- COM-208 Computer networks
- CS-208 Computer architecture
- CS-210 Functional programming
- CS-305 Software engineering
- CS-322 Introduction to database systems
- CS-323 Introduction to operating systems
Recommended courses
The following EPFL courses cover material that significantly help students' understanding of POCS concepts; however, these courses are not strictly required:
- CS-320: Computer language processing
- CS-470: Advanced computer architecture
- CS-422: Database systems
- COM-407: TCP/IP networking
Learning Outcomes
By the end of the course, the student must be able to:- Design computer and communication systems that work well
- Make design trade-offs (e.g., performance vs. correctness, latency vs. availability)
- Anticipate emergent system behaviors (e.g., failure cascades, security vulnerabilities)
- Integrate multiple techniques, ideas, and algorithms from different fields of computing/communication into a working system
Teaching methods
- Ex cathedra
- Online video lectures
- Small-group discussions and exercises
- Projects
Expected student activities
- Complete assigned reading and writing assignments
- Assimilate online video lectures
- Attend recitations and plenary sessions
- Participate actively in class (physically and online)
- Work in a team on design projects
Assessment methods
Throughout the semester. The final grade will be determined based on exam(s), homework, and class participation. Exact formula may vary from year to year, please see course website for details.
Supervision
Office hours | Yes |
Assistants | Yes |
Forum | Yes |
Others | See http://pocs.epfl.ch/ |
Resources
Bibliography
See http://pocs.epfl.ch for up-to-date bibliography.
Ressources en bibliothèque
Websites
In the programs
- SemesterFall
- Exam formDuring the semester
- Credits
7 - Subject examined
Principles of computer systems - Lecture
4 Hour(s) per week x 14 weeks
- Semester
- SemesterFall
- Exam formDuring the semester
- Credits
7 - Subject examined
Principles of computer systems - Lecture
4 Hour(s) per week x 14 weeks
- Semester
- SemesterFall
- Exam formDuring the semester
- Credits
7 - Subject examined
Principles of computer systems - Lecture
4 Hour(s) per week x 14 weeks
- Semester
- SemesterFall
- Exam formDuring the semester
- Credits
7 - Subject examined
Principles of computer systems - Lecture
4 Hour(s) per week x 14 weeks
- Semester
- SemesterFall
- Exam formDuring the semester
- Credits
7 - Subject examined
Principles of computer systems - Lecture
4 Hour(s) per week x 14 weeks
- Semester
- SemesterFall
- Exam formDuring the semester
- Credits
7 - Subject examined
Principles of computer systems - Lecture
4 Hour(s) per week x 14 weeks
- Semester
- SemesterFall
- Exam formDuring the semester
- Credits
7 - Subject examined
Principles of computer systems - Lecture
4 Hour(s) per week x 14 weeks
- Semester
Reference week
Mo | Tu | We | Th | Fr | |
---|---|---|---|---|---|
8-9 | |||||
9-10 | |||||
10-11 | |||||
11-12 | |||||
12-13 | INM10 | ||||
13-14 | INM10 | ||||
14-15 | |||||
15-16 | |||||
16-17 | |||||
17-18 | |||||
18-19 | |||||
19-20 | |||||
20-21 | |||||
21-22 |
legend
- Autumn semester
- Winter sessions
- Spring semester
- Summer sessions
- Lecture in French
- Lecture in English
- Lecture in German