Large-scale software systems like Google - deployed over a worldwide network of hundreds of thousands of computers - have become a part of our lives. These are systems success stories - they are reliable, available ("up" nearly all the time), handle an unbelievable amount of load from users around the world, yet provide virtually instantaneous results. On the other hand, many computer systems don't perform nearly as well as Google - hence the now-cliché "the system is down." In this class, we study the scientific principles behind the construction of high-performance, scalable systems. The course begins with a discussion of the relevant features of modern architectures, and moves up the stack from there to operating system services such as programming language run-time systems, concurrency, and synchronization, with a focus on key operating system features, I/O and networking, and distributed services. This course can be used as a "core" course for students in the COMPSCI minor.
Self-Assessment Test: To help you decide whether you should review C before the semester starts, we developed an online self-assessment. Here's the link.
The description to the left, while the official one, no longer captures precisely the content of the course as currently offered. We are in the process of updating the official description, which requires going through some bureaucratic processes.
Meanwhile, the current content focus is on: (1) learning about data representation, machine organization, and assembly, (2) the Linux concepts of processes, programs, and threads; and (3) communication between processes via both pipes and network connections.
Syllabus (coming soon)