Distributed Systems

Networking and Services
Advanced studies
This course presents the basic concepts and solution principles of distributed systems. The main topics are synchronization, consistency, fault tolerance, distributed consensus, and security. The course considers different kinds of distributed systems, from modern warehouse-scale datacenters to wide-area, loosely-coupled distributed systems. The focus is on gaining an understanding on how modern distributed systems are designed and built and what are their theoretical underpinnings. The course covers the basic algorithms of distributed systems and the current state of research in the area. Course material: Largely based on research articles and supplemental material. Selected material from the book "Barroso, L. A., Clidaras, J. and Hölzle, U.: The Datacenter as a Computer¿. (book is available online)


12.12.2012 16.30 B123
Year Semester Date Period Language In charge
2012 autumn 03.09-03.12. 1-2 English Sini Ruohomaa


Time Room Lecturer Date
Mon 10-12 B119 Sini Ruohomaa 03.09.2012-03.09.2012
Thu 10-12 C222 Sini Ruohomaa 03.09.2012-11.10.2012
Mon 10-12 D122 Sini Ruohomaa 10.09.2012-11.10.2012
Mon 10-12 C222 Sini Ruohomaa 29.10.2012-03.12.2012
Thu 10-12 D122 Sini Ruohomaa 29.10.2012-03.12.2012

Exercise groups

Group: 1
Time Room Instructor Date Observe
Fri 14-16 B222 Ossi Karkulahti 10.09.2012—12.10.2012
Fri 14-16 B222 Ossi Karkulahti 29.10.2012—07.12.2012

The course starts already on Mon 3rd of September! If the groups are full, you can still register to the queue, and we will organize another exercise group if needed.


Friday exercise groups are biweekly and begin on the second week on this course. We will have the Thursday workshop lecture on the first week. Also, note that the course actually begins at the start of the period, 3.9. and the first lecture is at C222, 2nd floor, not as seen above.  (The first Monday morning lecture is before the traditional university opening ceremony teaching blockade starts. The first week's classroom oddity was caused by late-discovered error in the course start date, which was inherited from last year. Lesson: Follow standards, generate fewer innovative errors. ;))

The course aims to give insight into the main concepts and design principles related with distribution. Goals, challenges, problems, and various solutions are presented and discussed. The emphasis is on concepts and principles, not on practical implementations.

As a student taking the course, you should study the main themes and learning goals of the course accessible through the link on the upper left of all courses. These goals direct both the course teaching and grading. "Prerequisite knowledge" is assumed to be known when coming to the course in order to be able to absorb the new information. "Approaches the learning objectives" is required for passing the course. Handling everything in "Reaches the learning objectives" will get a full grade from the course; any non-overlapping parts from the previous column are needed for it as well, as you need to pass the course before you can get a grade. Finally, the "Deepens the learning objectives" column stores hooks for future learning that builds on the things learned on this course but which is not taught on this course as such. (On some courses, it may also reference future courses that you may be taking.)

Completing the course

The course can be taken either through participating in a lecture course or through a final exam.

To pass the lecture course you need to

  • participate in the biweekly excercise sessions (in English) (12 points)
  • return the written homework assignments (4 assignments); each will be graded (12 points)
  • pass a traditional exam - on Wed 12.12 at 16:30 in B123. (42 points) - note the exotic start time!

You are allowed to bring an A4 hand-written "cheatsheet" (in Finnish, Swedish or English) to the exam. You can use both sides of the paper. Include your name and the course name on the sheet and return it with your exam. It is not a part of your answer and will not be graded. The requirement to have it hand-written is because printed (let alone copied) cheatsheets are less likely to support your learning, which is the best part of these cheatsheets.

You need minimum 30 points to pass with a minimum of 16 points in the exam. With 50 points you will get a 5. To take a course you have to register yourself through the ILMO system.

The course lectures are divided into two categories:  Monday lectures discuss new theoretical content. The Thursday lecture slots are workshops (resembling other 'paja' practices at the department) that provide support for working on the exercises of the course and in your future MSc studies.

The detailed schedule of the course can be seen at the Time allocation subpage.


Literature and material

The Tanenbaum & Van Steen course book "Distributed Systems - Principles and Paradigms" can be accessed through the Kumpula Science library in Physicum if you do not have a copy of your own. The auxiliary book Barroso L. A. and Hölzle U.: "The Datacenter as a Computer" is available online; chapters 4 and 5 are not covered.

If you have trouble getting your hands on the Tanenbaum & Van Steen 2007 book, you can use the 2002 edition as backup; also Colouris, Dollimore, Kindberg: "Distributed Systems, Concepts and Design"; Addison-Wesley 2005 should cover the equivalent material. You can use the slides to give you an idea of the breadth of topics covered.

Lecture slides are not designed to be suitable for independent study, but as lecture background. Copies of the slides will appear here as they are finalized. The course will mostly follow previous years'  content. You can check the previous year's course page for an overview.

Lecture slides for Chapter 0 (course introduction)

Lecture slides for Chapter 1

Lecture slides for Chapter 2 (interprocess communication - errata: adjusted the printer server example's semantics notes)

Lecture slides for Chapter 3 (clocks, synchronization and coordination)

Lecture slides for Chapter 4 (replication and consistency - errata: note: according to older course material, release consistency does synchronize local data on Acquire(L), also added a slide about atomic transactions)

Lecture slides for Chapter 5 (fault tolerance methods)

Lecture slides for Chapter 6 (case: the World Wide Web as a distributed system)

Lecture slides for Chapter 7 (case: warehouse-scale computing)

The course material is now complete. I compiled supporting lecture slides for the course rehash of the last lecture too.

Monday 26.11. we will look at an old exam, which you can try to solve if you like, and discuss how exams are used to measure learning at the department (including how we read the answers and how this varies in different places). This is to reduce "cultural difference" errors in the use of the exam as a measurement tool, and possibly to broaden your mind about human-related measurement in general. (This is mostly aimed for students who have not already acquired a 3-year experience from a local BSc in how examiners think at the department, although the metalevel discussion may be useful if you are planning to take an exotic minor subject or further studies abroad - or are just interested in improving your study skills.)

Monday 3.12. is the last lecture, and will be used for an overview of the course material particularly focusing on questions you might have; you can send questions to Sini beforehand to ensure a coherent answer ;), but this is not obligatory.