CSE 590YB/580: Distributed Systems

Instructor: Tom Anderson
TA: E Christopher Lewis
Class meets Wednesdays 6:30 - 9:30, in EE1 003
Office Hours: TBA
Class list: cse590yb@cs.washington.edu (hypermail archive)
(to subscribe: send mail to majordomo@cs.washington.edu with body "subscribe cse590yb".)



The ongoing fusion of the computing, telecommunciations, and consumer electronics industries is leading to widespread deployment and use of distributed systems technologies. Distributed systems are appearing at all granularities, from web sites implemented as massive server farms, to wide area information management systems such as Walmart and electronic markets, to pervasive computing integrating thousands of small devices in a room into an invisible human-centered computing and communications infrastructure. In each case, there is a need for scalability, robustness, availability, ease of use, security, simple programming models, etc. Yet our conceptual understanding of how to build distributed systems with these qualities is still very limited.

This course is designed to bring students up to the state of the art in distributed systems research and to provide the tools necessary to allow students to evaluate new technologies after the course ends. A major focus of the course will be class discussion based on readings from the book and research papers. Clearly, we could all read the book and the papers on our own, so the class meetings are designed to add significantly to that. As partial preparation for each class, students will be asked to write a 1/2 page evaluation of one paper per week, due by email at 4pm on the Wednesday the paper is to be discussed in class. This will give me a chance to read them before class. The evaluation should focus on critical reading -- independent of what "spin" the authors put on the paper, what are the most important lessons that the paper shows, and what are the most important drawbacks or limitations to those lessons.

In addition, to make the discussion more concrete, there will be a series of small programming assignments and problem sets. The course will also have a final exam.


Programming assignments: 30%
Problem sets: 10%
Paper reviews: 10%
Class discussion: 25%
Final: 25%

One written paper review is due each week prior to class; you may choose which of the two papers you wish to review. In addition, you get one "slip" week in case you fall behind; for that week, you do not have to submit a review. However, you are responsible for coming to class prepared -- having read and understood both papers, not just the one you wrote up.

Listed below there is a programming assignment per week; in addition, we will hand out a problem set per week. You are responsible for doing either the programming assignment or the problem set each week; you can choose which but you must do a total of four of the programming assignments and four problem sets. As with the paper reviews, you get one slip week where you can skip doing anything, and there will be no programming assignment or problem set the last week. Warning: the programming assignments get harder as the course progresses, so don't leave them all until the end of the quarter. Programming assignments can be done in teams of 2-3; problem sets should be done individually.

Click here to enter or read reviews.


Week 1: Motivating Examples

Week 2: Communication

Week 3: Distributed Synchronization

Week 4: Distributed Agreement

Week 5: Process Groups

Week 6: Replication

Week 7: Disconnected Operation

Week 8: Scalability

Week 9: Security and Robustness

Week 10: Experience

E. Christopher Lewis
Last modified: Thu May 11 01:19:25 PDT 2000