MS students interested in the course click here

Potential auditors click here

Course Description:

Distributed systems explore how to use multiple computers to build bigger and better systems than are possible on a single computer. Single computers can fail, are limited in their processing capacity, and can only be in one physical place. This course will cover how distributed systems overcome all of these limitations. It will then show how distributed systems enable large web services like Facebook, Google, and Amazon.

This is a graduate course in distributed systems primarily aimed at PhD students. We will cover the foundations of distributed systems and their modern, practical applications. Topics will include logical time, consistency, transactions, fault tolerance, quorums, replicated state machines, atomic commit, Paxos, peer-to-peer systems, and the Google and Facebook stacks.

Each class will include a subset of the following: a lecture that covers the fundamentals of an area, presentation of supplementary papers by class members, a discussion of an assigned paper on the topic, and a discussion of research projects related to the topics and paper discussed. In addition, students will put their knowledge into practice by building a large distributed system over the course of the semester.

The class has four major components: paper readings, paper presentations, programming assignments, and exams.

Paper Readings

Students will be expected to read and master one paper per class. Written summaries to each paper (starting after the first few) will be assigned, class participation grades will be based heavily on in-class discussion of papers, and paper techniques and insights will be included on exams.

Paper Presentations

There will be many supplementary papers for each class. Over the course of the semester, students will choose at least one paper to read, summarize, and present to the class. The paper summary and presentation will be made available to other students in the class.

The presentation of the papers will be no more than 10 minutes. The presentations will cover the paper at a high level for the rest of the class. Final versions of the presentations are due 2 days before their assigned class. Presentations will be graded using this rubric.

Programming Assignments

Students will develop a cumulative project over the course of the semester. The project is spread over 4 assignments, each of which must be coded individually. Students are allowed to discuss the assignments with each other, but they are not allowed to look at others’ solutions from this or previous years. Writing or looking at pseudo-code together is also not allowed. Viewing general information on the web, i.e., StackOverflow, is permitted.

Assignments will be coded in Go, synced regularly to a git repository, and submitted via that git repository. Assignments will be graded mainly on correctness with some points allocated to programming style and performance.

Prerequisites and Expected Background

There are no formal prerequisites for the class. Students who take the class are assumed to be proficient in a high-level language–e.g., C++, Java, Go–and familiar with git. I will assume students have background from an undergraduate CS degree, e.g., operating systems, networking, algorithms.


There will be two exams. Each exam will cover roughly half the material, will be closed book, and will test everything covered in class: lectures, required paper readings, supplemental paper presentations, and programming assignments.


Paper Summaries: 10%
Paper Presentation: 10%
Participation: 5%
Exams: 35%
Programming Assignments: 40%

Office Hours

Wyatt: Tuesday 10-11am.

Haonan: Thursday 4-5pm.


There are 4 programming assignments. Assignments are due at 11:59pm.

You get 4 free late days for the semester. After that each day an assignment is late is 10% off. You cannot split late days, i.e., 1 minute late is the same as 1 day late. We will apply the late days for you.

0: Git Intro + Collaboration Policy (due Sep 12)
1: Local MapReduce + Go Intro (due Sep 14)
2: Primary/Backup Key/Value Service (due Sep 30/Oct 7)
3: Paxos-based Key/Value Service (due Oct 21/28)
4: Sharded Key/Value Service (due Nov 11/18)

Academic Responsibilities


Final letter grades will be determined using a "modified" curve. We will assign grades of D and below to individuals who do not perform satisfactorily in the above areas (i.e., you should not assume that because this is a graduate class you will get a C if you perform unsatisfactorily.).

We will not assign incompletes except for a documented medical reason (in accordance with USC policy).

Diversity Statement

The diversity of the participants in this course is a valuable source of ideas, problem solving strategies, and engineering creativity. We encourage and support the efforts of all of our students to contribute freely and enthusiastically. We are members of an academic community where it is our shared responsibility to cultivate a climate where all students and individuals are valued and where both they and their ideas are treated with respect, regardless of their differences, visible or invisible.

Students with Disabilities

Any student requesting academic accommodations based on a disability is required to register with Disability Services and Programs (DSP) each semester. A letter of verification for approved accommodations can be obtained from DSP. Please be sure the letter is delivered to me as early in the semester as possible. Your letter must be specific as to the nature of any accommodations granted. DSP is located in STU 301 and is open 8:30 am to 5:30 pm, Monday through Friday. The telephone number for DSP is (213) 740-0776.

Academic Integrity

USC seeks to maintain an optimal learning environment. General principles of academic honesty include the concept of respect for the intellectual property of others, the expectation that individual work will be submitted unless otherwise allowed by an instructor, and the obligations both to protect one's own academic work from misuse by others as well as to avoid using another's work as one's own. All students are expected to understand and abide by these principles. Scampus, the Student Guidebook, contains the Student Conduct Code in Section 11.00, while the recommended sanctions are located in Appendix A: Students will be referred to the Office of Student Judicial Affairs and Community Standards for further review, should there be any suspicion of academic dishonesty. The Review process can be found at:

Return of Course Assignments

Returned paperwork, unclaimed by a student, will be discarded after a year and hence, will not be available should a grade appeal be pursued following receipt of his/her grade.

Emergency Preparedness/Course Continuity in a Crisis

In case of a declared emergency if travel to campus is not feasible, USC executive leadership will announce an electronic way for instructors to teach students in their residence halls or homes using a combination of Blackboard, teleconferencing, and other technologies.