Office hours: Monday 11:00-12:00, Room
414, Building E1.5 (SB)
Office hours: Wednesday 13:00-14:00, Room
302, Building E1.5 (SB)
Monday 14:00-15:00, Room 605, Building G 26 (KL)
Office hours: none
The class meets on Mondays 12:00-14:00
hours and Wednesdays 14:00-16:00 hours. The location is building E1.5, room 0.29
in SB, and building G26, room 111 in KL. Lectures are held in one location
and videocast to the other.
Students are encouraged to meet the
teaching staff during office hours for help with any questions or problems.
Tutorials will be offered when needed.
includes everyone involved with the course, the teaching staff as well as the
students. Important announcements, such as exam schedules and assignment deadlines,
will be posted on this list. Students can also use it to form project teams,
to discuss projects, and to exchange ideas and experience. Everyone should
join and read this group mailing list daily. To subscribe, please visit https://lists.mpi-sws.org/listinfo/ds-ws16.
: includes all members of the teaching staff, the instructors as well as the
teaching assistants. Students should use this for all communication with the
email individual staff members only when the communication is personal, and
is not related to the course in general.
notes, course schedule
Lecture notes, course schedule, recommended
readings, and assignments can be found here.
are available here
midterm exam is available here.
mailing list is now set up. Please subscribe at https://lists.mpi-sws.org/listinfo/ds-ws16
using the same email address you use to send messages (postings from
non-members will be rejected).
This course introduces students to the
principles, design, and implementation of distributed systems. The lectures
focus primarily on the principles and design of distributed systems, and
cover communication, distributed storage, naming, synchronization, fault
tolerance, peer-to-peer systems, social media systems, and data centers. A
course project exposes students to the implementation aspects of distributed
systems and serves to solidify students' understanding of the course
Audience / Prerequisites
This core course is open to Bachelor and
Master students. Bachelor students must have passed the basic courses on
Programming 2 and Math 2, as well as the concurrent programming or
alternatively the operating systems course. Proficiency in programming
(C/C++) and UNIX development tools (e.g. make, gcc,
gdb) is strictly required to take this course.
The language of the course is English. All
lectures, office hours, tutorials and communication with the course staff
will be conducted exclusively in English.
Distributed Systems: Concepts and Design,
by Jean Dollimore, Tim Jindberg,
George Coulouris. (Addison
Wesley; 4th edition, May 2005); or
Distributed Systems: Principles and
Paradigms, by Andrew S. Tanenbaum and Maarten van Steen. (Prentice Hall; 2nd
edition, October 2006)
A small number of papers will be made
available to the class. The lecture will cover some topics in more depth than
the books, and also in a different order.
Summary lecture notes will be available on
the course web-site for some of the material covered in the class. These
notes are primarily meant to help students with taking notes. However, they
will not accurately or consistently cover all the material discussed in the
lectures. Students are expected to know all material covered in the lectures,
and in the assigned readings and projects. Therefore, students should not
rely only on the lecture notes. They should attend class regularly, take
their own notes, and complete all assignments.
There will be a midterm exam (covering
material from the first half of the course), a final exam (focusing on the
second half of the course), and an optional repeat exam (covering the entire
course). The exams carry equal weight. All exams will be open book and based
on the material covered in lectures, readings, and projects.
To pass the course, a student must pass
either the final or the repeat exam. Students may choose to take the repeat
exam, even if they have passed the final exam, to try and improve their
grade. To be admitted to the final and repeat exams, a student must (i) pass the project assignments and (ii) pass the midterm
exam. To pass the project assignments, the sum of all points earned by a
student in the project assignments must be at least 50% of the maximal
possible points. To pass the midterm exam, a student must score at least 30%
of the maximum possible points in the exam. To pass the final exam or repeat
exam, a student must score at least 50% of the maximal possible points in the
Your course grade will be based on a
weighted score computed from the points you earn in your successful
examinations and your project assignments. If a student takes all three
examinations, then the exam with the lowest result will not be considered
when computing the course grade. Project scores count towards 50% of the
weighted score and exam scores account for the remaining 50% of the weighted
In a sequence of project assignments,
you'll build a multi-server file system called Yet-Another File System (yfs) in the spirit of Frangipani.
The eight project stages correspond to the design and implementation of (1)
lock server, (2) basic file server, (3) reading, writing and sharing files,
(4) MKDIR, REMOVE and locking, (5) caching lock server, (6) caching extent
server and consistency, (7) Paxos, and (8)
replicated lock server.
The project will require a substantial amount
of software design and implementation. The software produced will be graded
based on its ability to successfully pass a set of functional and performance
Project teams: Students are required to work on the projects in
small teams of two students. It is the responsibility of the students to form
and manage their own teams. We do not allow individual project solutions. If
your teammate drops the course you must immediately find a replacement,
irrespectively of the current project stage.
All team members must be involved in all
aspects of the project. To collaborate effectively, team members should
divide the project responsibilities so that they can work in parallel.
However, each member is responsible for, and should be familiar with, all the
work done by the team. Proper time management is critical – if you don't
start working on the assignments early you will not be able to complete the
Rules for team registration:
1) For each project, the teams must be registered 48 hours before the submission deadline
for that project, by sending an email to the address used for submissions
stated below. Team membership is sticky --- the team assignments from project
X+1 is the team assignments for project X unless a new team is explicitly
registered by the deadline for project X+1.
2) Teams must have a size of 2. If there
are an odd number of students in the class, then one team of 3 will be
allowed on a first-come-first-serve basis. If there is a single student who
is unable to find a team by the deadline and there is a team of 3, then the
third member of the team of three will be re-assigned to work with the
singleton in a team of 2.
3) Only project submissions from registered
teams are accepted. Failure to register a team for project X results in a grade
of 0 for project X but does not preclude registering teams and submitting
Project deadlines: Programming projects must be submitted by 11:59 PM
on their due dates (posted on this website). Projects should be submitted by
email to firstname.lastname@example.org.
Expect a confirmation within 48 hours of handing in your project and please
contact the instructors if you don't receive one. Please remove all
unnecessary files from the code you hand in, such as object files or
executables. When submitting the project, please use the following format for
the subject line: Assignment N - LastName1 LastName2
Late submissions: We will apply a flexible slip date policy for late
submissions. Each student is allocated an automatic extension of 4 calendar
days for the entire semester. Students can use the extension on any project
during the semester in hourly increments. For instance, you can hand in one
project assignment 4 days late, or one assignment 2 days late and two
assignments 1 day late.
For team submissions, the slip time will be
deducted from each team member's remaining slip time. Students will not
receive credit for late submissions beyond the automatic extension. If a new
team is formed, then each team member can only take as many slip days as he
or she has remaining from the previous project stages. A team member must
stop working on the project once (s)he is out of
slip days, while other team member(s) can continue to work on the project as
long as they have remaining slip days. In such cases, all team members must
state in writing, at the time of the project submission, when they have
stopped to work on the project. Note that a team member cannot opt out of
using available slip days if the other team members continue working on the
Honor code: It is acceptable to discuss ideas, algorithms, or
approaches to solving problems and assignments with other students. We encourage
you to give and get such advice as it will help you learn the material better
and improve your ability to work in a team. However, what you submit must be
the work of your own group; copying code or solution sets from any source is