Registration for this course is open until Monday, 21.04.2025 23:59.

News

Team Registration

Written on 10.04.25 by Vabuk Pahari

Hi everyone,

The team registration is open in the following link: Team Registration.

Room Change for Today's TA Session

Written on 10.04.25 (last change on 10.04.25) by Vabuk Pahari

Hi everyone,

The TA session will take place today in E 1.5 Room 005. From next week onwards, it will be held in Room 029.

Links

Links to the course schedule, project schedule and class material.

Lecture Timings

Mondays, 16:00 - 18:00 and Wednesdays, 10:00 - 12:00. Room: HS 003 in E1.3.

The first meeting of the course is on Monday, April 7.

Course Staff

Instructors: Peter Druschel, Deepak Garg

Teaching assistants: Vabuk Pahari, Pierfrancesco (Pier) Ingo 

Contact: {druschel, dg, vpahari, pieringo}@mpi-sws.org

Office hours of the course staff: See here

Course Description

This course introduces 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, synchronization, fault tolerance, naming, addressing, distributed databases, and distributed security and privacy. A course project exposes students to the implementation aspects of distributed systems and serves to solidify students' understanding of the course material.

This course does not have tutorials. Instead, the teaching assistants have weekly office hours, during which students may ask for clarifications on the lectures and the class project.

Intended Audience / Prerequisites

This core course is open to Bachelor and Master students. Bachelor students must have passed the basic courses Programming 2 and Math 2. Proficiency in programming (C/C++) and UNIX development tools (e.g. make, gcc, gdb) is required to successfully complete 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

There is no prescribed textbook, but the following books are reasonable references:

- Distributed Systems: Concepts and Design, by George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair. (Addison Wesley; 5th edition, 2012);

- Distributed Systems, by Maarten van Steen and Andrew S. Tanenbaum (Prentice Hall; 3rd edition, 2017)

A small number of papers will be made available to the class. The lectures will cover some topics in more depth than the books, and also in a different order.

Lecture Notes

Summary lecture notes or slides 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.

Class Project

In a sequence of project assignments, students will 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. consensus, 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 can work on the projects in small teams of two students. It is the responsibility of the students to form and manage their own teams. If your teammate drops the course you must immediately find a replacement, irrespective 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!

Full details about team registration and individual projects will be made available here soon.

In-class Quizzes

After every project assignment’s submission, there will be a short in-class quiz (a mini-test) to check students' understanding of that project stage. These quizzes must be attempted individually even if the project assignment was submitted in a group. Every quiz will be graded with a pass/fail grade. Passing the quiz is mandatory to get points for the corresponding project assignment. Quizzes will not count towards your course grade in any other way.

Exams

There will be a midterm exam (covering material from the first half of the course), a final exam (covering the entire course, but focusing on the second half), and a repeat exam (covering the entire course). The exams carry equal weight and only the best two of the three exams count towards your grade. All exams will be open book and based on the material covered in lectures, paper readings, and projects. 

Digital Device and Digital Assistant Policy

  • You can bring a digital device (phone, tablet, or laptop) pre-loaded with notes, books, slides, or any other readings of your choice to the course exams. However, the use of the Internet or an interactive assistant (including LLM-based assistants like ChatGPT) is strictly forbidden during exams. It is also forbidden to take pictures of the exam questions or your solution. We strongly encourage you to consider using a digital device instead of printed paper during exams.
  • The code you submit for the projects must have been written by you or your team members. Discussing design Ideas with fellow students and the course staff is allowed and encouraged. However, sharing of any code beyond your team, even handwritten code, is strictly forbidden. It is also strictly forbidden to turn in code that was written with the assistance of a tool that has code-writing capabilities (like ChatGPT and Microsoft CoPilot).
  • Even aside from exams and projects, we discourage the use of AI assistants to learn and explore course-related material because, in our experience, AI assistants provide confusing, contradictory or false information quite often and without warning. Besides wasting your time, this can be counter-productive for learning, and it can negatively impact your grade.

Grading

To pass the course, a student's total score on the project assignments must be at least 50% of the maximum possible score, and the student must pass at least two of the three exams. The course grade will be based on a weighted score, where 50% of the weight will be on the project assignments, and 25% will be on each of the best two of the three exams (we will ignore the exam with the lowest score).

 

Privacy Policy | Legal Notice
If you encounter technical problems, please contact the administrators.