Getting Help

For urgent communication with the instructor and the teaching assistant, it is best to send an email (preferred) or give a phone call. If you want to talk to any of them in person, remember that their posted office hours are merely nominal times when they guarantee that they will be in their offices. You are always welcome to visit them outside of their office hours if you need help or want to talk about the course.

We ask that you follow a few simple guidelines. The instructor normally works with his office door being open. Whenever the office door is open, he welcomes visits from students. However, if his office door is closed, this means that he is busy with meetings or phone calls, thus prefers not to be disturbed.

We will use the course webpage as the central repository for all information about the class. Through the webpage, you can:

  1. Obtain copies of any handouts or assignments. This is especially useful if you miss a class or lose a document.
  2. View announcements that relate to the course.
  3. Find links to any electronic data you need for your assignments.
  4. Read clarifications and changes made to any assignments, schedules, or policies.

15-440 Distributed Systems (Fall 2020)

About the Course

15-440 is an introductory course in distributed systems. The emphasis will be on the techniques for creating functional, usable, and high-performing distributed systems. To make the issues more concrete, the class includes several multi-week projects requiring significant design and implementation.

The goals of this course are twofold: First, students will gain an understanding of the principles and paradigms that underlay distributed systems, such as communication across networks, concurrency, synchronization, consistency and fault-tolerance. Second, students will gain practical experience in designing, implementing, and debugging real distributed systems.

The major themes this course will teach include process distribution, communication, naming, abstraction and modularity, concurrency, scheduling, resource sharing, locking, consistency and replication, failure handling, distributed programming models, distributed file systems, virtualization, and the use of instrumentation, monitoring and debugging tools to solve problems at large-scale. As the creation and management of software systems are fundamental goals of any undergraduate systems course, students will design, implement, and debug large programming projects. Students will learn some of today’s most popular distributed systems, such as Google File System, MapReduce and PowerGraph.

Lectures & Recitations

Time Place Faculty/Staff
Lectures Monday and Wendesday, 9:00 am - 10:20 am Zoom Mohammed Hammoud
Recitations Thursday, 9:00 am - 9:50 am Zoom Zeinab Khalifa

Guidelines on Video Usage

  1. Videos Shall Be on During Live Sessions, Except for Pedagogical or Technical Reasons: In this semester, we will use Zoom during regular class sessions to deliver lectures and/or conduct recitations. You are required to turn your camera on during every online class session unless there is a pedagogical or technical reason to have it turned off. If you have justifiable technical or personal circumstances that prevent you from having your video on during live class sessions, you will need to submit a “Waiver Form” to the Video Policy Committee at In this waiver, you will have to explain thoroughly the reasons for which you are requesting a video exemption. The waiver, once approved by the Committee, will grant you an exemption from having your camera on during the regular class time. Please note that this waiver does not apply for examinations (in-term or final exams, or presentations that require the use of video)—more on this below. After the waiver deadline submission time, if you are not granted an exemption and if you keep your video off during classes, you will lose points for in-class attendance and participation. Please keep in mind that upon approval of the Waiver Form, the professor might need to call on you periodically with questions or comments using the microphone or the chat option to ensure your presence and involvement in class. Having your video on and participating during live Zoom sessions will support your learning in various ways. It may reduce the feeling of isolation and keep you connected with your colleagues and the professor. It is also important to note that everyone’s “remote classroom” and “learning” experience is greatly improved if every student is “visible”. The professor will work tirelessly to engage with you and provide a rich, interactive, and high-quality remote teaching experience. Likewise, he expects a similar commitment on your side. You are also encouraged to follow the same classroom etiquette as you would during normal in-person class sessions when connecting to virtual classes – such as: dressing up appropriately, participating when required (whether by using your audio or the chat feature on Zoom), staying engaged, and avoiding any parallel work irrelevant to the session that may be distracting and affecting others learning experience to (including emails, browsing the internet, usage of the Zoom private chat with friends). Paying attention during online sessions and contributing to discussions and questions may influence your in-class participation grades. In order to feel more comfortable in the Zoom environment and to address privacy concerns, adding a virtual background may be an alternative option to shield away from your surroundings. Establishing a neutral “workspace” in your environment that is away from distractions also helps with your learning process.

  2. Video During Quizzes and Exams: You are required to turn your camera on during all online assessments, including quizzes, exams and the final. Your work surface, including your hands, must be visible by video at all times during examinations. No alternative arrangements will be provided to you for this request. It is important to note that if you have a physical disability that presents a barrier to abiding by these guidelines, adjustments to this policy may be made, but must first be discussed with and approved by Catherine Getchell ( from the Office of Disability Resources, in consultation with the professor.

  3. Unauthorized Recordings: It is extremely important to note that students are not permitted to make any personal audio or video recordings or take photos/ screenshots of classes or presentations. Any recording of live Zoom sessions, audio, and photos/ screenshots by students, and/or posting or sharing by any means (including emails, social media platforms, phones, etc.) will be a violation of university policy and could result in serious consequences, including suspension or expulsion upon review through the community standards process.

  4. Sharing of Screens: You may be invited to share your Screen during class. Please note that when you share your screen through zoom, your video does not turn on, and your face does not appear: what will be shared is the appropriate file or your entire desktop at any point in time. Please be mindful that any items on your desktop or computer screen (e.g. files, icons, open applications) that you do not want others to see should be removed or closed prior to sharing your screen.

  5. Remote Attendance: The professor may use the time you log/Zoom into a class with your Andrew ID as proof of attendance. Joining after a live session’s scheduled start time will be considered as an absence. The professor may request additional proof of participation: polls, participation in chat, and requests that the students unmute their microphones and use the audio at any point in time of the Zoom lecture. The professor will consider your failure to respond as sufficient to mark you absent or late.

Course Team

We are always available for help and support on Slack, Zoom, or Email during our office hours. To receive help outside of our office hours, it is prefered to schedule a meeting or send your questions on Slack.

Mohammad Hammoud


Office hours: Monday, 10:30 - 11:59 AM

Zeinab Khalifa

Office Hours: Wednesday, 10:30 - 11:59 AM

Tools for the course:


Please refer to this section for the tentative schedule for the class. The schedule indicates the project and the assignment activities as well. Any changes will be always announced and reflected on this webpage.

Filter schedule by:
Project Date Out Date Due Handout Code
Project 1 8-Sep Design report: 19-Sep, Due: 5-Oct Handout Code
Project 2 7-Oct 28-Oct -- --
Project 3 29-Oct 19-Nov -- --
Project 4 20-Nov 2-Dec -- --
Problem Set Date Out Date Due Handout Code
PS 1 27-Aug 6-Sep Handout Code
PS 2 10-Sep 24-Sep Handout --
PS 3 28-Sep 12-Oct Handout --
PS 4 4-Nov 14-Nov Handout --
PS 5 20-Nov 29-Nov -- --
Quiz Date
Quiz I 28-Sep
Quiz II 16-Nov
Exam Date
Midterm 21-Oc
Final Review TBA
Final TBA
Week Session Date Topic Coursework
1 1 24-Aug Introduction  
  2 26-Aug Networking - Part I  
  3 27-Aug Intro to Java (Sample Code) PS1 released: Handout, Code
2 4 31-Aug Networking - Part II  
  5 2-Sep More on Networking  
  6 3-Sep Threading (Counter) & Socket programming with Java (Code)  
  -- 6-Sep -- PS1 Due
  5 7-Sep Remote Procedure Calls - Part I  
  -- 8-Sep -- P1 Released (Handout, Code)
  8 9-Sep RPC Part II  
  9 10-Sep Project 1 - RMI: Code, Slides PS2 Released: Handout
4 10 14-Sep Architectures  
  11 16-Sep Naming
  12 17-Sep More on Project 1  
  -- 19-Sep -- P1 Design Report Due
5 13 21-Sep Naming - Part II
  14 23-Sep More on Naming  
  15 24-Sep Review: network performance & failure semantics PS2 Due
  -- 28-Sep QUIZ I PS3 Released: Handout
6 16 30-Sep Synchronization - Part I  
6 17 1-Oct Project 2  
  18 5-Oct Synchronization - Part II P1 Due
  19 7-Oct Synchronization - Part II (Discussion)  
  20 8-Oct Bank Use Case P2 Released: Handout, Code
  -- 12-Oct -- PS3 Due
  -- -- FALL BREAK  
7 21 19-Oct Synchronization - Part III  
  22 21-Oct MIDTERM  
  23 22-Oct Deadlocks & Dining Philosophers, Code
8 24 26-Oct More on Synchronization (Discussion)
  25 28-Oct MPI P2 Due
  26 29-Oct MPI, Rank, Parallel Sum P3 Released: Handout, Code
9 27 2-Nov Hadoop  
  28 4-Nov Hadoop- Part II (Discussion) PS4 Released: Handout
  29 5-Nov MPI (CR), Code  
10 30 9-Nov Pregel
  31 11-Nov GraphLab  
  32 12-Nov Community Day  
  33 16-Nov QUIZ II & P3 Kmeans
  34 18-Nov Caching- Part I
  34 19-Nov MapReduce, Handout, Code P3 Due
12 35 23-Nov Caching - Part II P4 Released: Handout
  36 25-Nov Replication - Part I PS5 Released: Handout
  37 26-Nov Replication - Part II  
13 38 30-Nov Fault-Tolerance
  1-Dec -- PS5 Due
  39 2-Dec More on Fault-Tolerance
  40 3-Dec TBA P4 Due

Course Assessment

The participation of students in the course will involve five forms of activities:

  1. Attending lectures and recitations
  2. Solving assignments (including writing and reading assignments)
  3. Solving large programming projects
  4. Taking exams and quizzes
  5. Participating in class discussions

Final Grade Assignment and Assessment methods

To this end, the below table shows the breakdown of the five forms of activities that the course involves, alongside the quantity and the overall weight of each activity. Take into account that small differences in scores can make the difference between two letter grades. Letter grades will be determined by absolute standards. The total score will be plotted as a histogram. Cutoff points are determined by examining the quality of students' work on the borderlines. Individual cases, especially those near the cutoff points may be adjusted upward or downward based on factors such as attendance, class participation, improvement observed throughout the course, exam performance, and special circumstances

Type # Weight
Projects 4 40%
Exams 2 30%
Problem Sets 5 15%
Quizzes 2 10%
Class Participation and Attendance 42 5%

Because of the importance of understanding both the theoretical and hands-on elements of the class, students must pass both components of the course (projects as one component, and exams, quizzes and problem sets as the second) in order to receive a passing grade for the course. This does not affect the actual letter grade assignment unless one of the components is not completed to a passing standard.

Projects (40%)

The projects will count for a total of 40% of your final score. There will be 4 projects throughout the course. All projects are individual projects (i.e., no team can work on the same project).

Project's percentages are as follows:

Project Date Percentage Notes
Project 1 5 Sep - 2 Oct 15%
Project 2 3 Oct - 28 Oct 7.5%

Project 2 heavily relies on completing Project 1, and therefore, it’s strongly advised to finish P1 early to avoid complications with P2 (If you have not completed P1, you will not be given any solution files to work on P2!

Project 3 30 Oct - 20 Nov 10%
Project 4 21 Nov - 2 Dec 7.5%

You are encouraged to submit the projects on time. For all projects except the final one, the following rules apply:

Grace days

There is a grace-days quota for projects. In particular, you will be given 3 grace days for all projects, except for the final one. You can use the grace days as needed. For instance, you can submit your first project three days late and still receive no penalty. In this case, you will be penalized starting from the 4th day after the deadline. Furthermore, when you consume all your grace days, you will be left with no grace days for the rest of the projects.

Final project

Note that the final project is unique in two aspects. First, you cannot cannot use grace days for it. As such, if you are left with some grace days before the final project, you will lose them all. Hence, plan how to utilize your grace-days quota judiciously.

Second, there will not be any penalty system for this project either. More precisely, if you are one day late in submitting the project, it will not be graded and you will receive a zero score on it.

Exams (30%)

There will be two in-class exams – midterm and final – which together will count for 30% of your final score.

  • The midterm is worth 10%
  • The final is worth 20%
  • Both exams are open-book. That is, you are allowed to bring your textbooks, slides, and other supporting documents of your own. Any electronic equipment is not allowed, however.

    Problem Sets (15%)

    There will be 5 assignments that will test you on problem analysis and solving skills. These assignments will altogether carry 15% of your final score. At the end of the semester, the Problem Set with the lowest score will be dropped

    Quizzes (10%)

    There will be 2 quizzes, which together will count for 10% of your final score. These quizzes are meant to test your understanding and preparation for the concepts covered throughout the course.

    Participation & Attendance (5%)

    Class-Recitation Participation and Attendance:

    Your attendance of both, classes and recitations, as well as your participation in discussions during presentations will count for 5% of your final score.

    Textbooks & Resources

    In this course, we will refer to the below resources and textbooks. There are two primary textbooks and two additional:


    Distributed Systems: Principles and Paradigms


    Andrew S. Tannenbaum and Maarten Van Steen
    Second Edition, Pearson, 2007
    Distributed Systems: Concepts and Design


    George Coulouris, Jean Dollimore, Tim Kindberg, and Gordon Blair
    Fifth Edition, Addison Wesley, 2011
    Computer Systems: A Programmer's Perspective


    Randal E. Bryant and David R. O'Hallaron
    Prentice Hall, 2003
    Hadoop: The Definitive Guide


    Tom White
    Second Edition, O'Reilly Media, 2010


    Working Alone on Assignments/Projects

    Assignments/projects that are assigned to students should be performed individually. This course does not include any team projects or assignments.

    Handing in Assignments/Projects

    All assignments/projects are due at 11:59PM (one minute before midnight) on the specified due date. All submissions are electronic and should be submitted using Gradescope's course page.

    Refer to the following link for how to submit your solutions to Gradescope:

    Making up Exams, Assignments and Projects

    Missed exams, assignments and projects can be made up on a case by case basis, but only if you make prior arrangements with the instructor. However, you should have a good reason for doing so. You need a written consent from the instructor for making up exams, assignments or projects. It is your responsibility to get your projects and assignments done on time. Be sure to work far enough in advance to avoid unexpected problems, such as illness, unreliable or overloaded computer systems, etc.

    Appealing Grades

    After each exam, assignment, and/or project is graded, you have 7 calendar days to appeal your grade. All your appeals should be provided in writing. If after appealing you are still not satisfied, please visit the instructor. If you have questions about an exam, an assignment or a project grade, please visit the instructor directly.