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, replicated state machines, atomic commit, Paxos, peer-to-peer systems, and the Google and Facebook stacks.

Each class will include a lecture that covers the fundamentals of each area, presentation of supplementary papers by class members, and a discussion of an assigned paper on the topic. 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 of some of the papers 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 will be made available to other students in the class.

The presentation of the paper will be 5 minutes short. 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.

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. Viewing general information on the web, i.e., StackOverflow, is permitted.

Assignments will be coded in C++, 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.


There will be two in-class exams on March 3rd and April 30th. Each exam will cover roughly half the material, will be closed book, and will test topics covered in lectures and required paper readings.


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

Office Hours

Thursdays from 11-12 in SAL 210.


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

1: Local MapReduce + Go Intro (due Jan 30)
2: Primary/Backup Key/Value Service (due Feb 13 & 20)
3: Paxos-based Key/Value Service (due Mar 6 & 13)
4: Sharded Key/Value Service (due Apr 3 & 10)

Academic Responsibilities


Final letter grades will be determined using a "modified" curve. We will assign grades of C 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 B- or even 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.