Distributed Systems

Saarland University

Winter Semester 2012


Overview | Announcements | Course Description | Schedule | Project


Course Overview

Instructors:

Peter Druschel
Allen Clement

Email:http://www.mpi-sws.org/membersources/email/druschel.gif
Email:
http://www.mpi-sws.org/membersources/email/aclement.gif

Office hours: Thursdays, after class, Room 435, Building E1.5 (SB)
Office hours: Thursdays, after class, Room 312, Building 49 (KL)

Teaching Assistants:


Eslam Elnikety
Reinhard Munz


Email:
http://www.mpi-sws.org/membersources/email/elnikety.gif
Email:
http://www.mpi-sws.org/membersources/email/munz.gif


Office hours: Fridays 11:30-13:30, Room 334, Building E1.5 (SB)
Office hours: Tuesdays 13:00-15:00, Room 316, Building 49 (KL)

Lectures:

The class meets on Mondays and Thursdays, 12:00-14:00 hours. The location is building E1.5, room 0.29 in Saarbruecken, and building 49, room 206 in Kaiserslautern. Lectures are held in one location and videocast to the other. (Normally, Peter lectures in SB and Allen in KL.)

Lecture notes, course schedule, recommended readings, and assignments can be found here.

Students are encouraged to meet the teaching staff during office hours for help with any questions or problems. Tutorials will be offered when needed.

Mailing Lists:

<ds-ws12@lists.mpi-sws.org>: 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-ws12.

<ds-ws12-staff@mpi-sws.org> : includes all members of the teaching staff, the instructors as well as the teaching assistants. Students should use this for all communication with the course staff.

Please, email individual staff members only when the communication is personal, and is not related to the course in general.

 


Announcements

Lab 8 has been posted.

Lab 7 has been posted.

Lab 6 has been posted.

Lab 5 has been posted.

A sample mid-term exam can be found here.

Lab 4 has been posted.

Lab scores can be found here. A detailed explanation of how we test lab submissions can be found here.

Lab 3 has been posted.

A clarification of the policy regarding team registration:

1) For each project, the teams must be registered 48 hours before the submission deadline for that project (Exceptions: the deadline for the first project stage was Nov 1; the deadline for the second project stage is Nov 8). 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 future projects.

4) 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 can not opt out of using available slip days if the other team members continue working on the project.

Lab 2 has been posted.

Lab 1 has been posted.

A tentative course schedule is now available.

The course mailing list is now set up. Please subscribe at https://lists.mpi-sws.org/listinfo/ds-ws12 using the same email address you use to send messages (postings from non-members will be rejected).

 

 



Course Description

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 and data centers. A course project exposes students to the implementation aspects of distributed systems and serves to solidify students' understanding of the course material.

Intended 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.

Textbook

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.

Lecture Notes

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.

Exams

There will be a midterm exam (covering material from the first half of the course), a term end exam (covering material from the second half of the course), and a 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.

Grading

To pass the course, a student must (i) pass the project assignments, and (ii) pass at least two out of the three exams. 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 an exam, a student must score at least 50% of the maximum possible points in the exam.

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 score.

Class Project

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 tests.

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 projects!

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 <ds-assignment@mpi-sws.org>. Expect a confimation 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 increments of one day. 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 extensions.

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 strictly prohibited.