CMSC 23310/33310 Advanced Distributed Systems
Spring 2014

Lecturer: Borja Sotomayor
E-mail: borja AT cs DOT uchicago DOT edu
Office: Ryerson 151
Office hours: By appointment

Time and Location: Mondays and Wednesdays 1:30-2:50 in Cobb 301

Quick links

Course Description

In recent years, large distributed systems have taken a prominent role not just in scientific inquiry, but also in our daily lives. When we perform a search on Google, stream content from Netflix, place an order on Amazon, or catch up on the latest comings-and-goings on Facebook, our seemingly minute requests are processed by complex systems that sometimes include hundreds of thousands of computers, connected by both local and wide area networks.

Recent papers in the field of Distributed Systems have described several solutions (such as MapReduce, BigTable, Dynamo, Cassandra, etc.) for managing large-scale data and computation. However, building and using these systems poses a number of more fundamental challenges: How do we keep the system operating correctly even when individual machines fail? How do we ensure that all the machines have a consistent view of the system's state? (and how do we ensure this in the presence of failures?) How can we determine the order of events in a system where we can't assume a single global clock?

Many of these fundamental problems were identified and solved over the course of several decades, starting in the 1970's. To better appreciate the challenges of recent developments in the field of Distributed Systems, this course will guide students through seminal work in Distributed Systems from the 70's, 80's, and 90's, leading up to a discussion of recent work in the field.

Course Organization

This course is divided into two components:

The final grade will be divided as follows: 20% homeworks (each weighed equally), 30% participation in discussions, 20% project, 30% final paper. There will be no midterms or final exam.

A B+ or higher in CMSC 23300 (Networks and Distributed Systems) is a prerequisite for this course. Students can petition to have this requirement waived, as long as they have taken at least one other 200-level CS systems course.

Course Schedule

Week 1

No papers to read this week

Week 2 - Distributed Time

Required reading for Monday, April 7

Required reading for Wednesday, April 9

Suggested reading

Week 3 - Distributed Consensus I

Required reading for Monday, April 14

Required reading for Wednesday, April 16

Suggested reading

Week 4 - Limits of Distributed Systems

Required reading for Monday, April 21

Required reading for Wednesday, April 23

Suggested reading

Week 5 - Paxos

Required reading for Monday, April 28 and Wednesday April 30

Week 6 - Distributed Consensus II

Required reading for Monday, May 5

Required reading for Monday, May 7

Week 7 - Distributed Hash Tables

Required reading for Monday, May 12

Required reading for Monday, May 14

Week 8 - Distributed Data

Required reading for Monday, May 19

Required reading for Monday, May 21

Suggested Reading

Week 9 - Distributed Currency

NOTE: No class on Monday, May 26 (Memorial Day)

Required reading for Monday, May 28

Week 10 - Review

Required reading for Monday, June 2

NOTE: No required reading for Wednesday, June 4