Distributed Systems Project

Networking and Services
Advanced studies
Practical exercises on distributed systems in form of a programming project. Project topics revolve around the concepts of the distributed systems course and show how they can be implemented in practice. Pre-requisites: Distributed Systems course.


Year Semester Date Period Language In charge
2011 spring 18.01-24.02. 3-3 English Jussi Kangasharju


Time Room Lecturer Date
Tue 10-12 D122 Jussi Kangasharju 18.01.2011-24.02.2011
Thu 10-12 D122 Jussi Kangasharju 18.01.2011-24.02.2011

Ensimmäinen kokoontuminen on tiistaina 18.1. klo 10 salissa D122 ja myöhemmistä kokoontumisista sovitaan ensimmäisellä kerralla.

The first meeting is on Tue 18th of January at 10 in room D122 and the rest of the meetings are agreed then.


In this course, you will familiarize yourself with practical aspects of distributed systems and algorithms. The course consists of three small (group) projects which concentrate on different aspects of distributed systems. You are allowed to work in groups of up to 3 students. The three projects focus in the areas of

  • Consistency
  • Distributed algorithms
  • Multitier architectures

In the project "Consistency", you can select a real distributed system and investigate how consistency is managed in that system. You do not need to program the system yourself, but should instead pick an existing system (e.g., Google Gears, cloud platforms, etc.) and try to investigate how consistency is managed in that system. You should also try to see what are the limits of that system's capabilities, i.e., when does the consistency break.

In the project "Distributed algorithms", you need to implement vector clocks and demonstrate that your implementation functions correctly.

In the project "Multitier architectures", you take a standard web application and by using Ajax-technologies move some of the functionality of the web application from the server to the client.

Completing the course

Each of the projects is graded separately on scale 1-5. To pass the course you need to successfully complete each of the projects (i.e., get at least 1 from each of them). The schedule of the course is as follows:

  • 18.1. First meeting, start of project "Consistency"
  • 1.2. Deadline for "Consistency", start of project "Distributed algorithms"
  • 10.2.  (10-12, D122) Additional Q&A session for second assignment
  • 16.2. (Wednesday, 10-12, room C220) Additional Q&A session for second assignment
  • 17.2. Deadline for "Distributed algorithms", start of project "Multitier architectures"
  • 13.3. Deadline for "Multitier architectures"

Deadlines are strict and no extensions will be given. Note: Deadline for second assignment has been postponed by 2 days and consequently the start of the third assignment will be Thursday 17.2.

The final grade is a weighted average of the individual project grades where "Consistency" and "Distributed algorithms" have weight 1 and "Multitier architectures" has weight 2.

Literature and material

  •  Material from the Distributed Systems course
  • Information from the web as needed

Introductory slides

First assignment

Second assignment. You can find examples of configuration and input files here. With this script, you can generate new input files. See the parameters at the top of the file.

NOTE: In the second assignment, you MUST send messages between clients. Simply simulating the behavior and printing the result will not get a passing grade.

Summary of Q&A on 8.2.

NOTE: Even if your code for the second assignment does not fully work, return it anyway. Depending on the overall level of quality of returned assignments, we will set the threshold for passing accordingly and passing does not require a fully working implementation.

For figuring out the number of the sending client, you can either add the identifier of the sending client in the message or figure it out from the sending IP address and port (in some cases). You can also figure it out from the vector itself.

 NOTE: For the demo session on 22.02., you only need to be able to show your programs running. There is no need to prepare additional slides or any other material.

Assignment 3

On Tuesday 22.02. there will be a demo session for the second assignment. Please be prepared to demo your solution either on your own laptop or the department's computers.

There will be Q&A for the third assignment on 22.02. and 24.02. On weeks 9 and 10 we attempt to organize Q&A if needed, but please first ask via email. We will post answers to common questions on this page.