Distributed systems have become central to many aspects of how computers are used, from web applications to e-commerce to content distribution. This senior-level course will cover abstractions and implementation techniques for the construction of distributed systems, including client server computing, the web, cloud computing, peer-to-peer systems, and distributed storage systems. Topics will include remote procedure call, preventing and finding errors in distributed programs, maintaining consistency of distributed state, fault tolerance, high availability, and scaling.
The calendar page provides a detailed syllabus for the course, including readings.
Our first lecture will be happen on Tuesday, January 5, 2021. Please find the Zoom link on the course canvas.
For lectures after January 5, as an experiment this year, we are pre-taping videos of the course content we would normally present live in lecture. This way, we can make the scheduled "lecture" slot more interactive. Much of the lecture time will use zoom for small group exercises - while the main portion will be taped, the small group exercises will not be. If you aren't attending live, you will need to do these exercises on your own.
The recorded lectures will be as long as needed for a particular topic - they won't be in 50 or 80 minute chunks. We are also exploring embedding simple graded questions in the middle of each video.
We ask everyone to complete any assigned videos before the relevant live class. Since you won't be able to interrupt these videos for questions, we ask you to pause and post to EdStem any question you have while watching - we'll create a thread for each class to gather those in one place. We will try to answer them directly or live in class.
Where there is assigned reading, our recommendation is that you watch the video first, then do the reading, then come to class, and then do the assigned exercises for the class.
For the live portion of lecture and section, we will set things up so that your audio will be muted when you log in. Even a small amount of background noise can become distracting at scale. You may use the zoom chat room to ask further questions, and it is ok to unmute and interrupt.
Video capture of lectures should appear in Canvas the following day. If this doesn't happen, ping us in EdStem - there is a manual step where we need to release the video.
We encourage students to use the video for review purposes only.
|Person, Role||Office Hours|
|Daniel Berger, Instructor||dsberger@cs||Thursday 5:00 - 6:00pm|
|Tom Anderson, Instructor||tom@cs||Tuesday 5:00 - 6:00pm||Andrew Wei, TA||nowei@cs||Tuesday/Wednesday/Thursday 8:30 - 9:30pm|
|Anirudh Canumalla, TA||anirudhc@cs||Friday 3:00 - 4:00pm|
|Anna Kornfeld Simpson, TA||aksimpso@cs||Monday 5:00 - 6:00pm|
|Arthur Liang, TA||liangw6@cs||Monday 9:30 - 10:30am|
|Kushal Jhunjhunwalla, TA||kushaljh@cs||Tuesday 10:30pm - 12:00am|
|Leiyi Zhang, TA||leiyiz@cs||Tuesday 11:00am - 12:00pm|
|Raden Pradana, TA||rrp2901@cs||Wednesday 10:00 - 11:00am|
|Travis McGaha, TA||tqmcgaha@cs||Monday 6:00 - 8:00pm|
A large part of the course is to build a highly available, scalable, fault tolerant, and transactional key-value store. Key-value stores are widely used in cloud computing. The project is written in Java, derived from a similar one designed for the MIT graduate distributed systems course. Relative to earlier versions, we have completely re-written the testing and debugging framework for the labs, and we have extended the project to include multi-key transactions. Each lab has an extensive test suite that you can use to validate your implementation.
Lab 0 and Lab 1 of the project are to be done on your own - there is no turnin. Lab 2 and 3 are required and should be done individually. Lab 4 is optional and can be done for extra credit, due at the same time as lab 3. Lab 2 can be turned in late with a penalty of 1% per day. Lab 3 cannot be turned in late.
The course is not curved. Most students find that they are able to complete all of the assignments to a high degree of quality. We do not consider small deductions particularly significant; you can get a few points off per assignment and still get an A.
There is no textbook for this course. Instead, we will assign various tutorial and research papers; these readings are to be done before the class discussion, as we will take the papers as a starting point, not the end point, of the class discussion.
All of the readings are available for free for UW students; this should work automatically even if you are off campus (via your UW NetID). If you run into trouble, postpend offcampus.lib.washington.edu to the domain name inside the link, as in, http://dl.acm.org.offcampus.lib.washington.edu/citation.cfm?id=359563.
Readings for each lecture are listed on the course calendar.
We have created a Ed discussion board to organize questions about the project, lectures, and exercises..
Please read CSE's Academic Misconduct Policy.
For the project, you are encouraged to ask for help, from the instructor, from the TA's, and from other students. A general rule of thumb is to ask for help if you remain stuck for more than half an hour.
However, do not cross this line: For the project, do not share code or text. Do not look at project solutions that might be on the Internet. Do not use someone else's code or text in your solutions. Sharing ideas, explaining your code to someone to see if they know why it doesn't work, even helping someone else debug if they've run into a wall, all that is ok.
Anonymous feedback can be sent to the instructor or TAs via feedback.cs.washington.edu.