Large-scale distributed systems have become pervasive, underlying virtually all widely used services. In tandem, our understanding of how to build scalable, robust, efficient, and secure systems is increasingly well-founded. This class will attempt to bring students to the state of the art in distributed systems research and practice as well as to identify a set of open research problems.

This course will focus on correctness and performance. Distributed systems are particularly difficult to optimize while retaining their correctness. Concurrent updates to distributed state introduce subtle race conditions. Component failures are inevitable, and "distributed" means the system is expected to proceed despite them. What invariants and progress conditions ensure that systems operate correctly despite concurrency and failures?

General information:

You should have taken the equivalent of CSE 550 or CSE 551 or CSE 451 or CSE 452. Further, we'll assume basic knowledge of distributed-systems topics, including: remote procedure calls (RPC), two-phase commit, distributed time, serializability, and MapReduce. This can be obtained by taking CSE 550 before CSE 552 (which is the normal order). A motivated student will be able to pick up these topics on their own. See below for some useful resources. Students having taken an undergraduate distributed-systems class will find about 25% of the material will overlap.

Instructor Contact and Office Hours

Person, Role email Office Hours
Arvind Krishnamurthy, Instructor arvind@cs Friday 10:00-11:00, CSE 592
Lequn Chen, TA lqchen@cs Monday 10:00-11:00, CSE 220

Mailing List

When you register for the course, you'll automatically be added to the class mailing list ( To manage your subscription, visit the mailing list web page. You've been subscribed using your email address. You can, however, modify your subscription to use an email address of your choice. Note that you can only post to the mailing list from your subscribed email address.

Reading and Discussion

Each class will focus on a single topic, with discussion oriented around two papers. Generally, one of those papers is mandatory for you to have read before the class and the other is optional. The class discussion will be divided into two parts. First, we'll discuss the plain content of the paper: What did the authors think the paper was about? Second, we'll examine the subtext and context of each paper: What do we (the lecturers and the students) think is really interesting about the paper? For instance, what limits and opportunities does the paper miss?

For the first part of the discussion, we'll lecture on mechanical elements of the papers that are hard to discuss without prepared slides. We'll then kick off an interactive discussion. The class-participation portion of your grade will depend on the extent to which you participate meaningfully in each such discussion.