Instructors: Prof. Tim Wood and Prof. Roozbeh Haghnazar


  • Class meets Thursdays 6:10-8:40PM online

Office Hours:

  • Prof. Wood: Tuesdays 1pm-2pm
  • Prof. Haghnazar: Fridays 2-3:30pm
  • Huadong Hu: Monday 7pm-8pm

Course prerequisites:

  • CSCI 6212 Algorithms (Co-Requisite)
  • Undergraduate Operating Systems
  • Strong programming skills


Course Description

This course will be an in-depth study of the algorithmic and implementation challenges in building large scale distributed applications. Topics include distributed coordination, scheduling, consistency issues, and fault tolerance algorithms. The course will cover how fundamental distributed systems concepts are applied to cloud computing environments. The course will mix algorithmic concepts and practical implementations; substantial programming experience is required.

Learning outcomes

As a result of completing this course, students will be able to:

  1. Design distributed architectures that are scalable and efficient
  2. Build distributed systems that are correct and reliable despite network delays and failures
  3. Recognize and overcome the key challenges in implementing distributed systems
  4. Analyze the performance of different distributed system designs

Direct and Independent Instruction Time

The course will include 2.5 hours of direct instruction each week. The lecture period will typically be split between live lecture, discussion, and in-class exercises. Asynchronous options will be available for students unable to attend lectures live. Students are expected to spend a minimum of five hours on independent learning per week.


Students do not need to purchase a textbook for this class. The instructors may assign supplementary readings from Distributed Systems 3rd edition by Marteen van Steen and Andrew Tanenbaum, which is available for free at:


(Subject to small changes, see home page for updates)

Date Topics Assignment(s) due
Week 1 Overview of Distributed Systems Challenges  
Week 2 Scalable Execution Contexts
Threads, Virtual Machines, Containers, Parallelism
HW1: Parallel Sum
Weeks 3 Communication Mechanisms
RPC, Sockets, HTTP, P2P
HW2: Map Reduce
Weeks 4-5 Distributed Systems Architectures
Centralized vs Decentralized, Resource Management
Weeks 6-8 Coordination and Consensus
State Machine Replication, Ordering, Agreement
HW 3: Elections; Project Milestone 1
Weeks 9-10 Reliability and Fault Tolerance
Consistency, Replication, Quorums
HW4: DHT; Midterm
Weeks 11-12 Understanding Performance
Throughput, Latency, Bottlenecks, Profiling
Project Milestone 2
Weeks 13-14 Applied Distributed Systems
Distributed Systems Design Patterns, Cloud and Grid Computing
Project Milestone 3
Finals Period   Final project due


  • Midterm exam (10%)
  • Programming Assignments (35%)
  • Final project (35%)
  • Class participation and lecture prep (20%)


We plan to have four programming assignments to help students learn how to deploy real distributed systems concepts in practice. Some programming assignments will be done individually, meaning students may not share any code with other students. In group projects, all students are expected to contribute equally.


In the second half of the semester, students will work on a group project. Project proposals will need to be approved by the instructors and students will need to submit Milestone reports on a regular basis. Instead of a final exam, students will submit a final report and video presentation describing their project.

Lecture Preparation and Participation

Prep Grading: Students will be expected to prepare in advance of lectures by reading the specified materials or watching videos. A prep-quiz before each lecture will test students’ preparation and allow them to pose questions in advance of the lecture to guide discussion. These must be completed by the deadline (usually before class) to receive credit. No late submissions will be accepted.

Participation Grading: Students are expected to actively participate in the class, either during the live lectures or through the online discussion system. Participation opportunities will be provided for students unable to attend lectures synchronously. Each week you can earn up to 2 participation points. You obtain 1 point each time you perform one of the following:

  • Attend a live lecture or office hour session
  • Post a question, answer, or comment on Slack or in the prep-quiz.

You can obtain your 2 points per week from any combination of the above. Participating more than twice a week is encouraged, but you can still get at most 2 points per week! Your final participation grade will allow for one week with no participation, i.e., if there are 15 weeks with participation point opportunities, then we will sum your total points earned and divide by (14*2=28) instead of (15*2=30).

There will also be periodic opportunities for bonus participation points – subscribe to slack notifications to be sure you don’t miss out!

Illness and Absence Policy

The instructors understand that students may need to be absent from class either due to illness or other personal situations. For personal situations such as being in a difficult time zone, internet connectivity issues, etc., students can watch lectures asynchronously and are still expected to participate via other means such as the course message board.

If students anticipate missing several classes such as due to illness, they should alert the instructor as soon as possible. In this case deadlines may be extended for students and participation requirements will be relaxed.

University policies

Use of Electronic Course Materials and Class Recordings

Students are encouraged to use electronic course materials, including recorded class sessions, for private personal use in connection with their academic program of study. Electronic course materials and recorded class sessions should not be shared or used for non-course related purposes unless express permission has been granted by the instructor. Students who impermissibly share any electronic course materials are subject to discipline under the Student Code of Conduct. Please contact the instructor if you have questions regarding what constitutes permissible or impermissible use of electronic course materials and/or recorded class sessions. Please contact Disability Support Services if you have questions or need assistance in accessing electronic course materials.

University policy on observance of religious holidays

In accordance with University policy, students should notify faculty during the first week of the semester of their intention to be absent from class on their day(s) of religious observance. For details and policy, see “Religious Holidays” at

Academic Integrity Code

Academic Integrity is an integral part of the educational process, and GW takes these matters very seriously. Violations of academic integrity occur when students fail to cite research sources properly, engage in unauthorized collaboration, falsify data, and in other ways outlined in the Code of Academic Integrity. Students accused of academic integrity violations should contact the Office of Academic Integrity to learn more about their rights and options in the process. Outcomes can range from failure of assignment to expulsion from the University, including a transcript notation. The Office of Academic Integrity maintains a permanent record of the violation.

More information is available from the Office of Academic Integrity at The University’s “Guide of Academic Integrity in Online Learning Environments” is available at Contact information: or 202-994-6757.

Support for students outside the classroom

Virtual academic support

A full range of academic support is offered virtually in fall 2020. See for updates.

  • Tutoring and course review sessions are offered through Academic Commons in an online format. See
  • Writing and research consultations are available online. See
  • Coaching, offered through the Office of Student Success, is available in a virtual format. See
  • Academic Commons offers several short videos addressing different virtual learning strategies for the unique circumstances of the fall 2020 semester. See They also offer a variety of live virtual workshops to equip students with the tools they need to succeed in a virtual environment. See

Writing Center

GW’s Writing Center cultivates confident writers in the University community by facilitating collaborative, critical, and inclusive conversations at all stages of the writing process. Working alongside peer mentors, writers develop strategies to write independently in academic and public settings. Appointments can be booked online. See gwu.mywconline.

Academic Commons

Academic Commons provides tutoring and other academic support resources to students in many courses. Students can schedule virtual one-on-one appointments or attend virtual drop-in sessions. Students may schedule an appointment, review the tutoring schedule, access other academic support resources, or obtain assistance at

Disability Support Services (DSS) 202-994-8250

Any student who may need an accommodation based on the potential impact of a disability should contact Disability Support Services to establish eligibility and to coordinate reasonable accommodations.

Counseling and Psychological Services 202-994-5300

GW’s Colonial Health Center offers counseling and psychological services, supporting mental health and personal development by collaborating directly with students to overcome challenges and difficulties that may interfere with academic, emotional, and personal success.

Safety and Security

  • In an emergency: call GWPD 202-994-6111 or 911
  • For situation-specific actions: review the Emergency Response Handbook at
  • In an active violence situation: Get Out, Hide Out, or Take Out. See
  • Stay informed: