15-440, Fall 2011: Distributed Systems

Latest Announcements

12/12: Project 2, parts 1 & 2 scores posted in Autolab
If you cannot find them in your account, the scores are in your partner's account (the Autolab team is working on fixing this).
12/11: Reminder, final exam is Monday the 12th, 1pm, Wean Hall 7500
See subject
12/4: No class Tuesday 12/6. Prof. Andersen's office hours rescheduled.
Please take this time to work on your projects and schedule project reviews with the course staff. You can find links to the signup pages from the assignments page. Also, Prof. Andersen's office hours will be held from 2-3pm on Monday, NOT in the morning.

See all announcements RSS 2.0 feed


15-440 is an introductory course in distributed systems. The emphasis will be on the techniques for creating functional, usable, and high-performance 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, for students to gain an understanding of the principles and techniques behind the design of distributed systems, such as locking, concurrency, scheduling, and communication across the network. Second, for students to gain practical experience designing, implementing, and debugging real distributed systems.

The major themes this course will teach include scarcity, scheduling, concurrency and concurrent programming, naming, abstraction and modularity, imperfect communication and other types of failure, protection from accidental and malicious harm, optimism, and the use of instrumentation and monitoring and debugging tools in problem solving. As the creation and management of software systems is a fundamental goal of any undergraduate systems course, students will design, implement, and debug large programming projects.

Evaluation is based on homework assignments, the projects, and three exams.


Because this course has a big project component, you must be proficient in C and Java programming on UNIX systems. It is required that you have taken 15-213 and gotten a "C-" or higher since many of the programming skills you will need are taught in that course. If you received a C in 15-213, you must meet with your academic advisor to discuss your background before taking 15-440, perhaps taking an additional course to sharpen your systems skills.

Learning Objectives

After this course, students will have learned to...

Course Staff

Teaching Assistants

Iulian Moraru GHC 9023 412-268-5942 Wednesdays 3:00-4:00
Ravi Starzl GHC 5501 Tuesdays 12:00pm-1:00pm and by appointment


David Andersen GHC 9109 412-268-3064 Monday 11:00 - 11:59am
Randy Bryant GHC 5113 412-268-8821 Fridays 3:00-4:00

Course Secretary

Angela Miller, , GHC 9118, Tel: 412-268-6645

Office Hours


Course Policies


Students are encouraged to talk to each other, to the TAs, to the instructors, or to anyone else about any of the assignments. Any assistance, though, must be limited to discussion of the problem and sketching general approaches to a solution. Each student must write out his or her own solutions to the homework. The project handouts have more detailed information about collaboration when working on the projects, but, basically, each programming project group must write their own code and documentation for the programming projects done as a group.

Consulting another student's or group's solution is prohibited, and submitted solutions may not be copied from any source. These and any other form of collaboration on assignments constitute cheating. If you have any question about whether some activity would constitute cheating, please feel free to ask the instructors.

You may not supply work that you complete during 15-440 to other students in future instances of this course or for use in future instances of this course (just as you may not use work completed by students who've taken the course previously).

Late Policy

Take project and homework deadlines seriously. Our experience is that students often seriously underestimate the effort involved in programming assignments and projects. If we give you 4 weeks to complete an assignment, there is typically a reason. In the interest of fairness, we have adopted the following late policy:


If you think we made a mistake in grading, please return the assignment with a note explaining your concern to the course secretary no later than two weeks after the day the assignment was returned. We will have the question re-graded by the person responsible for grading that question.


The course staff in 15-440 strongly encourage participation and asking questions during lectures (and definitely during recitations). Therefore, to protect the privacy of your fellow students, no audio or video recordings may be made of the class without the prior permission of the instructor. If the course staff make audio or video recordings of the course, we will notify the course before such recordings are made (and will make it extremely obvious because there will be a big camera in the back of the room...).

Partner Problems

Please try to avoid having partner problems. Seriously! Share your hopes before they turn into concerns, your concerns before they have problems, and your problems before they inflate into crises.

Also, in order for the course staff to help you and your partner work through issues, or for us to provide an appropriate response to serious partner problems, you must contact us well before the relevant due date! While some problems can never be truly solved, it is likely that your career after CMU will you to sometimes "involve management" to address issues with co-workers, and will certainly require you to work out all sorts of problems with your co-workers. If you find yourself in a situation which you can't resolve, it will provide you with an opportunity to practice interacting with management.

A special case to avoid is coming to us a day or two before a major deadline to tell us that your partner has been ill (etc.) for multiple weeks. We, and thus you, have many more options if you inform us while a problem is developing, instead of after the fact.


Last updated: Mon Dec 12 16:13:18 -0500 2011 [validate xhtml]