Distributed Systems will run exclusively online. Schedule and zoom links are posted on the course Moodle.
Distributed Systems: Concepts and Design, by George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair. (Addison Wesley; 5th edition, 2012); or
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 lecture will cover some topics in more depth than the books, and also in a different order.
Due to the online setting, we have divided each class session into a pre-recorded video lecture, and a live QA session.
The QA sessions will be held twice per week: Monday at 12pm and Wednesday 10am to 12pm.
Each QA session will have one or more accompanying video lectures. You must watch these video lectures before attending the QA session. Each video lecture will be approximately 45 minutes in duration. We will also provide written lecture notes for the material covered in each video. The QA session will be an opportunity to ask questions directly to the lecturer and cover the video topics in more detail.
The full class schedule can be found on the course Moodle.
In addition to the lectures, the other main component of the class is a sequence of 8 project assignments.
In these projects 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!
Full details about team registration and individual projects are available on the course Moodle
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
To be admitted to the final and repeat exams, a student must pass the project assignments and pass the midterm exam.
To pass the final exam or repeat exam, a student must score at least 50% of the maximal 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.