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:
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||Monday and Wendesday, 9:00 am - 10:20 am||Zoom||Mohammed Hammoud|
|Recitations||Thursday, 9:00 am - 9:50 am||Zoom||Zeinab Khalifa|
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.
Office hours: Monday, 10:30 - 11:59 AM
Office Hours: Wednesday, 10:30 - 11:59 AM
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.
|Project||Date Out||Date Due||Handout||Code|
|Project 1||8-Sep||Design report: 19-Sep, Due: 5-Oct||Handout||Code|
|Problem Set||Date Out||Date Due||Handout||Code|
|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)|
|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|
|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|
|18||5-Oct||Synchronization - Part II||P1 Due|
|19||7-Oct||Synchronization - Part II (Discussion)|
|20||8-Oct||More on Project 2||P2 Released: Handout, Code|
|7||21||19-Oct||Synchronization - Part III|
|25||28-Oct||MPI Part II||P2 Due|
|28||4-Nov||Hadoop Part II||PS4 Due|
|34||18-Nov||Caching Part I|
|34||19-Nov||HDFS Reading and Writing||P3 Due|
|--||20-Nov||--||P4 Released, PS5 Released|
|12||35||23-Nov||Caching - Part II|
|36||25-Nov||Caching - Part III|
|13||38||30-Nov||Replication - Part I|
|39||2-Dec||Replication - Part II||P4 Due|
|40||3-Dec||TBA (Fault Tolerance)|
The participation of students in the course will involve five forms of activities:
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
|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.
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 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:
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.
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.
There will be two in-class exams – midterm and final – which together will count for 30% of your final score.
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.
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
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.
Your attendance of both, classes and recitations, as well as your participation in discussions during presentations will count for 5% of your final score.
In this course, we will refer to the below resources and textbooks. There are two primary textbooks and two additional:
Assignments/projects that are assigned to students should be performed individually. This course does not include any team projects or assignments.
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: https://www.gradescope.com/get_started#student-submission
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.