Trade-offs in Designing Computer Systems

No matter designing a small microcontroller system or a planet-scale cloud service, there are fundamental trade-offs between cost, performance, security, user satisfaction, and development time. Often, it is impossible to satisfy all of these criteria and a successful system is one delivering the right mix depending on the application.

In this course, you will gain a deeper understanding of these fundamental trade-offs in various contexts, including but not limited to operating systems, databases, and modern cloud computing systems. To do so, we will study and discuss some of the most impactful papers in computer systems and computer architecture areas from venues such as OSDI, SOSP, ASPLOS, and ISCA. We will also examine several production systems together to understand the practical limits imposed by real-world deployment.

The course has a flexible final project: students can select from pre-defined topics, or define their project which aligns with their research area. This is an interdisciplinary course recommended to students with systems or architecture backgrounds.

Instructor Mohammad Shahrad

3 credits