Distributed Systems

Course Description

Definition and basic characteristics of distributed systems. Processes and communication: client/server, distributed objects, message-oriented, publish-subscribe, peer to peer. Synchronization in distributed environments. Distributed transactions. Selected distributed algorithms, synchronous and asynchronous network models. Consensus and coordination without and with failures. Group communication. Performance evaluation of distributed systems. Peer-to-peer systems. Cloud computing.

General Competencies

Students will gain fundamental knowledge of distributed systems, their architecture and design methods, as well as selected distributed algorithms. They will gain theoretical and practical knowledge, as well as programming skills enabling them participation in complex projects involving distributed systems and algorithms.

Learning Outcomes

  1. identify distributed system characteristics
  2. explain the models for distributed processing and communication
  3. develop a simple distributed system
  4. analyze distributed algorithms
  5. evaluate the performance of distributed systems
  6. evaluate the characteristics of a particular distributed system

Forms of Teaching


The classes are organized in two blocks: The first block comprises 7 classes and a midterm exam, while the second comprises 6 classes and a final exam. this makes in total 15 weeks with 3 hours per week.


Midterm exam (week 8) and final exam (week 15).

Acquisition of Skills

Students need to resolve independently 3 practical tasks (homework assignements).

Other Forms of Group and Self Study

Homework assignments focusing on practical programing tasks in the area of distributed systems.

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Homeworks 0 % 20 % 0 % 20 %
Class participation 0 % 5 % 0 % 5 %
Mid Term Exam: Written 0 % 30 % 0 %
Final Exam: Written 0 % 30 %
Final Exam: Oral 15 %
Exam: Written 50 % 60 %
Exam: Oral 15 %

Week by Week Schedule

  1. Introduction to distributed systems, definitions and basic characteristics: transparency, openness, scalability, fault tolerance, security.
  2. Basic communication models: client/server, distributed objects, publish-subscribe systems.
  3. Fundamental communication mechanisms and communication middleware: remote procedure call, remote method invocation, message-oriented communication.
  4. Web-application architecture and web technologies.
  5. Naming systems.
  6. Selected distributed algorithms, synchronous and asynchronous network models.
  7. Processes, communication and coordination. Physical and logical time, time stamps and ordering.
  8. Midterm exam.
  9. Data replication and consistency.
  10. Fault tolerance. Consensus and coordination without and with failures. Group communication: membership management, reliable multicasting.
  11. Performance evaluation of distributed systems.
  12. Software tools for performance evaluation of distributed systems.
  13. Peet-to-peer systems: distributed and decentralized information search.
  14. Data clusters and data grids. Cloud computing.
  15. Final exam.

Study Programmes

University graduate
Computer Science (profile)
Specialization Course (1. semester) (3. semester)
Software Engineering and Information Systems (profile)
Theoretical Course (1. semester)
Telecommunication and Informatics (profile)
Theoretical Course (1. semester)


A. S. Tanenbaum, M. van Steen (2007.), Distributed Systems: Principles and Practice, Prentice Hall
G. Coulouris, J. Dollimore, T. Kindberg (2012.), Distributed Systems: Concepts and Design (5rd edition), Addison-Wesley
A.D. Kshemkalyani, M. Singhal (2008.), Distributed Computing: Principles, Algorithms, and Systems, Cambridge University Press


ID 34456
  Winter semester
L1 English Level
L1 e-Learning
45 Lectures
0 Exercises
0 Laboratory exercises
0 Project laboratory

Grading System

85 Excellent
75 Very Good
65 Good
55 Acceptable