Distributed Systems Course (fall 2019/2020)

Lecturer: Konrad Iwanicki
Assistants: Mateusz Banaszek
Lectures: Wednesday, 2:15 PM - 3:45 PM, Room 4420
Lab classes: Wednesday, 4:15 PM - 5:45 PM, Rooms 3042 (KI's group), 3045 (MB's group)
Final exam: Wednesday, January 22, 2:15 PM - 3:45 PM (may be shorter), Room 4420

This (tenth) edition of the course consists of two components: lectures and lab classes. The lectures cover the principles, advanced concepts, and technologies of distributed systems, including communication, replication, fault tolerance, and security. The objective of the lab, in turn, is to give every student a chance to design, implement, and evaluate his own distributed system in the area of cloud computing or the Internet of Things, as well as to broaden the students' knowledge on the state of the art in distributed systems. The course is recommended for graduate students attending the distributed systems seminar and following the DOS Master's track, as well as for other students interested in computer systems. The course may be given in English.

Passing Rules

To pass the course, a student has to score at least 60 out of a total of 100 points and pass the lab (see below). The points can be scored for:

  • lab assignments: up to 50 points
  • a written exam at the end of the semester: up to 50 points

The final grade is calculated as follows:

Points 0-51 52-59 60-67 68-75 76-83 84-91 92-...
Grade 2 (fail) 2+ (fail) 3 3+ 4 4.5 5

Lab Rules

The goals of the lab are twofold. First, the lab allows each student to build her own simple distributed system(s). The building process will consist of at least two assignments. Second, the lab creates an opportunity for the student to update other students with a piece of recent work in the area of distributed systems. This will have the form of an oral presentation.

To pass the lab, each student has to score a total of at least 31.5 points and a given number of points per each assignment. The detailed breakdown of the scores and deadlines is as follows:

KI's Group
What When How many points Min. required points
Entry Assignment October 8, 2019, 23:59 CEST 5 3
Assignment 1 November 24, 2019, 23:59 CET 15 8
Assignment 2 To be announced 25 14
Oral Presentation Individually set date (schedule) 15 8
MB's Group
What When How many points Min. required points
Entry Assignment October 8, 2019, 23:59 CEST 5 3
Lab Activities During proper lab classes 15 8
Assignment 1 To be announced 15 8
Assignment 2 To be announced 15 8
Oral Presentation Individually set date (schedule) 10 5

Assignment solutions have to be handed in on time by submitting e-mails with topic “[DS2019] Solution X” (where X can be 0 for the entry assignment, or 1, 2, ... for the proper assignments) to the tutor of your group (respectively, Konrad Iwanicki or Mateusz Banaszek). Since the tutors receive an excessive number of e-mails, e-mails with different topics may be ignored. Moreover, each day of delay in submitting a solution results in subtracting 2 points from the scores received for the solution. Normally, the delay must not be more than 7 days, after which an assignment is considered as failed (the student receives 0 points). However, each day a student participates in both a lecture and a lab gives the student one extra day of delay (for this day, the points are not subtracted). No future days during which the student intends to participate will be counted toward the reduction. For students working in pairs, the reduction will be counted as the average of the lectures attended by each of the participants (rounded down if necessary).

It is allowed to talk about your ideas on solving the assignments with your colleagues. It is NOT allowed to show, share, exchange code (in any form) without a prior permission from the lecturer.

Additional rules for KI's Group

At the beginning of the course, students may decide if they want to work on the assignments individually or in pairs. No larger groups will be allowed. The decision cannot be changed during the semester. The tutor will not regard any conflicts within pairs as circumstances affecting grades. In other words, if you work in a pair, choose your partner well.

A presentation is in turn prepared individually and normally given in English (unless your tutor agrees to a different language) with slides in English. However, if foregin students enroll for the course, all presentations will be required to be given in English. The strict time limit of a single talk is 60 minutes, in case of one presentation per class, or 45 minutes, if there are two presentations during a single class. The presenting student will be interrupted after this period. During the talk, other students are discouraged from asking questions. After the talk, there is a questions-and-answers session, during which the presenter answers question posed by the lecturer and other students. The objective of the questions could be, for instance, to clarify some aspects of the paper or to learn the presenter's opinion on a problem related to the paper.

During her presentation of a paper, a student is obliged to display slides for the paper. As a reminder, they have to be in English. The student has to prepare the slides on her own. If some slides for the paper already exist on the Internet, the concents of those slides can be re-used by the student preparing her own slides only if re-using the contents does not violate any copyrights, especially when the student's presentation is made available online. Moreover, the student has to acknowledge using somebody else's slides. Finally, note that conference slides are typically meant for 20-30 minutes, whereas a lab presentation is 45 or 60 minutes, depending on the available time, as explained above.

Additional rules for MB's Group

Lab activities need to be performed and presented during proper lab classes. If you do not manage to present your solution during classes (or block of classes) when the activity is scheduled, you can present your solution during following classes. You are encouraged to cooperate with and help other students, but solutions must be presented individually. Most of the lab activities require access to devices, which are provided by the tutor during the classes.

A presentation is expected to last 15 minutes. It must be prepared and presented individually. It is required that the presentation is accompanied by slides in English. The talk can be given in English or Polish, but the latter results in 3 points penalty. The presentation is followed by a short questions-and-answers session. One week before your presentation you must submit a (very) short abstract of your talk. More details (e.g. allowed topics) can be found here.

Tips for giving a presentation

  • Read your paper well in advance to understand it and to later be able to answer other students' questions.
  • Practice your talk to fit in the time limit.
  • Try to briefly go over the related work cited in the paper as this can give you some valuable input on the problem the paper is solving.
  • Try to find any follow-ups on the paper because this can be rewarding as well. Skimming through follow-up papers will help you better understand the topic.
  • Ask the presenter questions that, rather than proving the presenter doesn't know something, lead to interesting discussions. You are not awarded points for mean or stupid questions.
  • If you have read and understood the presented paper, and if you have practiced your talk, relax during your presentation: you will surely be able to answer all questions.

Exam Rules

The exam covers the lecture topics. Each question has three subquestions with binary (TRUE/FALSE) answers. A students scores a point for a question only if the answers to all subquestions of the question are correct. Conversely, if an answer to any subquestion of the question is incorrect, no point is given for the entire question. Note that these scoring rules are really demanding (cf. the scores for 2018/2019).

Lecture Topics and Schedule

Since this is still a developing course, this year's lectures will be given mostly based on a book by my PhD adviser and the head of my former research group: Maarten van Steen and Andrew S. Tanenbaum, “Distributed Systems,” CreateSpace Independent Publishing Platform, 3.01 edition (February 1, 2017), 596 pages, ISBN 978-1543057386. Purchasing the book is not mandatory as the lecture slides will be available here. There will be a few lectures with an extra material, though.

Date Topics Slides
October 2, 2019 Introduction:
definition of distributed system, properties of distributed systems, common types of distributed systems
lecture 01
October 9, 2019 Architectures:
architectural styles, system architectures
lecture 02
October 16, 2019 Processes:
threads, virtualization, clients & servers, server clusters, code migration
lecture 03
October 23, 2019 Communication:
fundamentals, remote procedure call, message-oriented communication, stream-oriented communication, multicast communication
lectures 04-05 (part A and B)
October 30, 2019
November 6, 2019 Naming:
basic terms and definitions, flat naming, structured naming, attribute-based naming
lecture 06 (part A and B)
November 13, 2019 Synchronization and Coordination:
clock synchronization, logical clocks, total-ordered multicast, causal-ordered multicast, mutual exclusion, positioning of nodes, leader election
lectures 07-08 (part A and B)
November 20, 2019
November 27, 2019
December 4, 2019
December 11, 2019
December 18, 2019
January 8, 2020
January 15, 2020
January 22, 2020 FINAL EXAM

Lab Topics and Schedule

The schedule of the lab classes for KI's Group with material relevant to building the distributed system is as follows:

Date Materials
October 2, 2019 Passing rules and Entry Assignment
October 9, 2019 Scenario 01
October 16, 2019 Scenario 02
October 23, 2019 Scenario 03
October 30, 2019 Scenario 04 and Assignment 01
November 6, 2019 Individual work and questions about Assignment 01
November 13, 2019 Scenario 05
November 20, 2019 Scenario 06
November 27, 2019 Scenario 07
December 4, 2019 Scenario 08 and Assignment 02
December 11, 2019 Individual work, questions about Assignment 02, Assignment 01 grading in spare time
December 18, 2019 Individual work, questions about Assignment 02, Assignment 01 grading in spare time
January 8, 2020 Assignment 02 grading
January 15, 2020
January 22, 2020

The schedule of the lab classes for MB's Group is available here.

Student Presentation Topics and Schedule

The schedule of the students' presentations for is as follows:

KI's Group

Date Presenter Topic
October 2, 2019 Konrad Iwanicki Lab organization and rules. Entry Assignment.
October 9, 2019 Konrad Iwanicki Assignment presentation.
October 16, 2017 Piotr Olczak Jonathan Kaldor, Jonathan Mace, Michal Bejda, Edison Gao, Joe O'Neill, Kian Win Ong, Bill Schaller, Pingjia Shan, Brendan Viscomi, Vinod Venkataraman, Kaushik Veerarraghavan, Yee Jiun Song: “Canopy: An End-to-End Performance Tracing And Analysis System”
October 23, 2019 Lukasz Raszkiewicz Xu Zhao, Kirk Rodrigues, Yu Luo, Michael Stumm, Ding Yuan, Yuanyuan Zhou: “Log20: Fully Automated Optimal Placement of Log Printing Statements under Specified Overhead Threshold”
October 30, 2019 Marek Smolarczyk Henry Qin, Qian Li, Jacqueline Speiser, Peter Kraft, John Ousterhout: “Arachne: Core-Aware Thread Management”
November 6, 2019 Andrzej Swatowski Filipe Manco, Costin Lupu, Florian Schmidt, Jose Mendes, Simon Kuenzer, Sumit Sati, Kenichi Yasukata, Costin Raiciu, Felipe Huici: “My VM is Lighter (and Safer) than your Container”
Marek Puzyna Yizhou Shan, Yutong Huang, Yilun Chen, Yiying Zhang: “LegoOS: A Disseminated, Distributed OS for Hardware Resource Disaggregation”
November 13, 2019 Jonas Umland Qi Huang, Petchean Ang, Peter Knowles, Tomasz Nykiel, Iaroslav Tverdokhlib, Amit Yajurvedi, Paul Dapolito IV, Xifan Yan, Maxim Bykov, Chuen Liang, Mohit Talwar, Abhishek Mathur, Sachin Kulkarni, Matthew Burke, Wyatt Lloyd: “SVE: Distributed Video Processing at Facebook Scale”
November 20, 2019 Mieczyslaw Krawiarz Bojie Li, Zhenyuan Ruan, Wencong Xiao, Yuanwei Lu, Yongqiang Xiong, Andrew Putnam, Enhong Chen, Lintao Zhang: “KV-Direct: High-Performance In-Memory Key-Value Store with Programmable NIC”
November 27, 2019 Likely no presentation due to the tutor's PC meeting
December 4, 2019 Jakub Tuznik Weidong Cui, Xinyang Ge, Baris Kasikci, Ben Niu, Upamanyu Sharma, Ruoyu Wang, Insu Yun: “REPT: Reverse Debugging of Failures in Deployed Software”
December 11, 2019 Michal Naruniec Chinmay Kulkarni, Aniraj Kesavan, Tian Zhang, Robert Ricci, Ryan Stutsman: “Rocksteady: Fast Migration for Low-latency In-memory Storage”
Kamil Braun Muthukaruppan Annamalai, Kaushik Ravichandran, Harish Srinivas, Igor Zinkovsky, Luning Pan, Tony Savor, David Nagle, Michael Stumm: “Sharding the Shards: Managing Datastore Locality at Scale with Akkio”
December 18, 2019 Kajetan Boroszko Peng Huang, Chuanxiong Guo, Jacob R. Lorch, Lidong Zhou, Yingnong Dang: “Capturing and Enhancing In Situ System Observability for Failure Detection”
Stanislaw Kazmierowski Kaushik Veeraraghavan, Justin Meza, Scott Michelson, Sankaralingam Panneerselvam, Alex Gyori, David Chou, Sonia Margulis, Daniel Obenshain, Shruti Padmanabha, Ashish Shah, Yee Jiun Song, Tianyin Xu: “Maelstrom: Mitigating Datacenter-level Disasters by Draining Interdependent Traffic Safely and Efficiently”
January 8, 2020 Marcin Chrzanowski Kiwan Maeng, Brandon Lucia: “Adaptive Dynamic Checkpointing for Safe Efficient Intermittent Computing”
Magdalena Grodzinska Kexin Pei, Yinzhi Cao, Junfeng Yang, Suman Jana: “DeepXplore: Automated Whitebox Testing of Deep Learning Systems”
January 15, 2020 No presentations: grading Assignment 2
January 22, 2020 No presentations: grading Assignment 2

MB's Group

The schedule is available here.

Past Exams

Below, you can find the questions from past exams:

Year Exam Set Participants Points
Course Exam % Available Min Avg Med Max
2018/2019 Final (test) 28 22 78.6 25 2 11.52 11 18
2017/2018 Final (test) 33 24 72.7 25 2 10.38 11 19
2016/2017 Final (test) 20 15 75.0 25 7 13.13 13 20
2015/2016 Final (test) 16 13 81.3 25 4 10.08 10 22
2014/2015 Final (test) 17 17 100 25 5 12.76 13 20
2013/2014 Final (test) 16 16 100 25 11 14.69 13 21
2012/2013 Final (test) 34 34 100 25 3 10.33 10 22
2011/2012 Final 36 34 94.4 50 10 29.85 30.5 49
2010/2011 Part II 26 21 80.8 25 3.75 16.27 13.5 24.25
2010/2011 Late Part I 26 11 42.3 25 13.75 21.6 21.25 24.75
2010/2011 Early Part I 26 17 65.4 25 9.25 14.9 13.5 22