15-640/440 Syllabus

Course Meetings

Lecture: 10:30 - 11:50 Tuesdays and Thursdays (Giant Eagle Auditorium, Baker Hall)

Course Description

The goals of this course are two-fold: 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. As a consequence, competency in both the C and Java programming languages is required.


C or better in 15-213, or permission of instructor


There is no required textbook. But, there are tons of good books about the various subject matters discussed. You might be interested in the following. Feel free to drop by if you'd like to preview them.

  • Distributed Systems: Principles and Paradigms by Tanenbaum and van Steen
  • Distributed Systems: Concepts and Design by Coulouris, et al
  • Distributed Operating Systems and Algorithms by Chow and Johnson
  • Virtual Machines: Versatile Platforms for Systems anbd Processes by Smith and Nair

Web Site



Name: Gregory Kesden
Email: gkesden@cs.cmu.edu
Url: http://www.cs.cmu.edu/~gkesden
Office: GHC 7711
Office phone: 412-268-1590
Office hours: Please see schedule on Web for updated information: http://www.cs.cmu.edu/~gkesden/schedule.html

Please note:
Office hours are times that I do my best to reserve exclusively for "drop in - no appointment" meetings with students, but I am often available at times other than office hours. Please don't hesitate to call or drop by at other times, or to request an appointment. Office hours are convenient -- if they are convenient for you. If not, please, please, please email or call for an appointment, or just take your chances and drop by - you can find my schedule on the Web.

Please remember -- I'm here to help. I appreciate the opportunity to serve you. Do give me the chance.

Please note that my office phone rolls to my cellphone 24x7. Please feel free to call it anytime. I turn it off on those rare occasions when I prefer not to be disturbed.

I am generally not available via zephyr. But, I am "gkesden" on many of the popular IM systems (AIM, MSN, GTalk, Skype, Yahoo). Please feel free to ping me.

Course Attendance

Attendance is expected at all classes. You are responsible for everything conveyed during class, even if you are absent. It is suggested that you make friends with your classmates -- they can be helpful should you miss class. In the event that you miss class, you should contact one of these individuals promptly to ask for help.

The course staff is not responsible to help you with material or procedural announcements from which you opted out by electively missing class.

Need Help?

I can't stress enough that the course staff, the instructors and TAs, are dedicated to providing you the highest possible levels of support: inside of the classroom and outside. Please, if you need help, do ask.

Important: It is strongly suggested that you email all of us with questions. This will assure you of the fastest possible answers. You can do this very easily by using the staff-440@cs mailing list.

Assignments and Grading

  • In-Class Exams: 35% (15% mid-terms 20%-final)
  • Homework: 15% (Approximately 4)
  • Projects: 50% (Weighted according to project length/size, Approximately 4)

Important note: Because of the importance of understanding both the theoretical and hands-on elements of systems, students must pass all three components of the course (homeworks, exams, and the projects) 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.

Grade Corrections

We try to be very, very careful about scoring your work and maintaining your grades. But, we are human and will make mistakes. If you have any questions about grading, please see any member of the course staff.

If possible, s/he will help you "on the spot". But, if s/he want to discuss the issue with other members of the staff, which does occur in many cases, he or she might make a copy of your work and/or ask you to write down or email your concerns. Please don't be alarmed -- this is just to try to ensure correctness and consistency among staffers, as well as prevent miscommunication. If you are asked to provide a copy of the work or feedback in question, or to provide your concerns in writing or email, you are required to do this before your concern can be addressed.

Please keep copies of all of your graded work, electronic submissions, and electronic feedback, until you receive your final course grade and are satisfied that it is correct. Without the original work and the grading information, it is more difficult and time consuming to correct errors.

In general, grading concerns should be addressed within two (2) weeks. In the special case of the final exam, they should be addressed with one (1) year. The course staff, at its discretion, may refuse to reconsider grades outside of this time period.

Should concerns arise outside of these time periods, but during the semester, please do contact any member of the course staff -- we want to be reasonable and will do our best, within ourt discretion, to help. Should concerns occur after the end of the semester, please contact the instructor. Or, in the unlikely event that he is no longer at the University, on leave, or otherwise inaccessible, contact an administrator in the Computer Science department.

You do have the right to appeal final course grades. This can be done informally, beginning with the instructor, and then to the student's academic dean and/or the academic dean in the home department. It can also be done formally using the policy outline in the Academic Regulations.


It is suggested that you form study groups as soon as possible. These groups generally work best if there are between three and five people involved, but sometimes pairs or slightly larger groups can work well. Typically the most effective study groups meet once per week for a few hours, or a couple of times each week for a couple of hours each meeting. For study groups to be effective, each member must work indivudally with the material in-between meetings such that s/he has something to contribute as well as questions to drive the discussion.

Unless otherwise specified, all assignments should be completed individually. In other words, it is okay to collaborate in studying the course material, but the "writing on the page" or the "code in the lab", as examples, should be your own "thought product".

If portions of your individual assignments have been significantly influenced by someone else, you should prominently give them credit for their contribution. Proper attribution is critically important -- and is an absolute defense against charges of "Academic Dishonesty".

Failure to provide proper recognition for the contributions of others towards any graded work may be, at the discretion of course staff, considered Academic Dishonesty under the applicable University, School, Department, and/or Intro Group policies.

The Academic Regulations are the only authoritative source for information regarding the University police on Academic Dishonesty, and related procedural matters. But, the following is an informal summary:
  • An instructor can charge a student with academic dishonesty and impose a penalty within the course, including an "R" grade.
  • The instructor informs the University of the charge, where it is recorded. If it is a first-offense, the University takes no further action. If it is not, a University committee is convened. For other than first offenses, the Committee, not the instructor determines the penalty, which can include academic actions such as expulsion or suspension, as well as less-severe actions. The student may appear at this hearing, and the instructor might also ask to appear or be asked to appear.
  • Even on a first offense, the instructor can ask the University to convene a Committee as discussed above. This might be done, for example, in the case of a particularly flagrant case, or under atypical circumstances.
  • The student has the right to appeal an instructors finding of academic dishonesty. Such an appeal is heard by the same Committee as discussed above. In the event that both the student and faculty member request a Committee, the same Committee will hear both.
  • University procedure provides for the appeal of decisions by the Committee.
  • In the event that the instructor charges a student with Academic Dishonesty, it is suggested that the student consider the totality of the circumstances calmly and rationally and seek advice from the instructor -- as well as third parties, such as the student's advisor, academic dean, or a dean of student affairs. It is may not be in the student's best interest to take a rash action, such as attempting to drop the course.
  • Students who are charge with Academic Dishonesty should be aware that there will be no prejudice against them in the course, beyond the penalty directly imposed, as a result of the charge, or of any appeal.

Late Work

You have five (5) "Late Days" for use on assignments this semester. You can use one day on each of five assignments, five days on one assignment, &c. There are no half days -- an assignment 1 second late requires the use of a full late day. The only exception is that, consistent with University policy, the last assignment cannot be turned in after 11:59PM of the last day of class

These late days are not "procrastination days". They are instead designed much like "personal days" at work to handle the little things that come up during the semester: short illnesses, injuries, visiting family or friends, a burst of work in other classes, doctors vists, &c.

The use of these days is completely at your discretion -- but, once they are gone, they are gone. That's it. The course staff cannot give you more. Late work is not accepted, other than through the use of "Late Days".

There is, of course, the possibility that exceptions to this policy will arise. We certainly hope that nothing incapacitating will happen to any of you. But, in the event that there is some major life event including major medical issues, emotional problems, family problems, &c, the course staff stands ready to work with you, as appropriate.

But, because these events are major events that likely will affect more than one class, we refer these circumstances to other University officials, typically academic deans, deans of student affairs, and/or assigned academic advisors.

In the event that you need help of this kind, please see a member of the course staff, and advisor, dean, or other appropriate University official. If you contact us, we'll likely begin by contacting your advisor or dean. But, regardless who you contact first, we'll work together with your academic unit and/or student affairs, and (most importantly) you, to do the Right Thing. We are, in fact, here to help.
The use of late days on the last project may be limited to ensure the ability of students to prepare for final exams. Stay tuned.

Electronically Mediated Communication - "A.M. Memorial Policy"

You are not permitted to engage in any electronically mediated communication during class - the penalty, even for a first offense, is an "R" in the course. No TXTing. No IMing. No email. No surfing the Web. No net games. No talking on your cell phone. You get the idea: If something is being communicated and anything even vaguely electronic is involved, you flunk. If you are not comfortable with this -- find a different section.

This might seem extreme to you, but it necessary. The ubiquity and pervasiveness of these technologies is threatening the classroom dynamic. Unless it is controlled, it will become cultural - and the loss to education permanent and tremendous.

Since it is somewhat difficult to prove allegations of this kind from the front of the classroom, the penalty is severe to act as a deterrent. Other instructors, student assistants, staff members, and/or other trusted individuals may be asked to monitor the classroom from various points of observation to aid in the enforcement of this policy and still photographic evidence may be acquired and used to document violations.


High-fidelity recordings of class, including any audio and/or video recordings, regardless of the media or format, and regardless of the intended or actual use, are not permitted without prior written permission of the instructor. The class will be notified in advance should any such recording be approved. The penalty for violating this policy is an "R" in the course. If you are not comfortable with this, drop the course now. Students have no right to record classes under any University policy.

This policy is intended to protect the privacy of the students. No student should run the risk of potential employers finding a naown that, excluding special cases such as use by students with disabilities or distance learners, undergraduate students do not improve their performance through the use of high fidelity recordings.

MIME Attachments

Unless specifically requested, please send only plain-text email to course staff - never send MIME attachments. These bog down the staff's ability to respond to email via cell phones and other light clients.