Distributed Systems

Course Description

Definition and characteristics of distributed systems. Distributed system architectures, centralized and decentralized, system design tradeoffs. Processes and communication: client/server, distributed objects, RPC, message-oriented, publish-subscribe. Programming middleware for distributed systems. Microservices. Distributed system modelling: synchronous and asynchronous models. Synchronization in distributed environments. Consensus and coordination without and with failures. Group communication. Distributed transactions. Data replication and consistency. Cloud computing and services (IaaS, PaaS, SaaS). Overlay networks: peer-to-peer systems, Blockchain and Distributed Ledger Technology.

Learning Outcomes

  1. identify distributed system characteristics
  2. explain the models for distributed processing and communication
  3. design and develop a complex distributed system
  4. analyze distributed algorithms
  5. evaluate the characteristics of a particular distributed system
  6. compare centralized and decentralized distributed solution

Forms of Teaching

Lectures

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.

Independent assignments

Students need to resolve independently practical tasks as preparation for laboratory exercises.

Laboratory

Laboratory exercises are aimed at solving practical programing tasks using modern technologies and tools (Spring, Docker, GRPC, Kafka). Focus on decentralized solutions.

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 25 % 30 % 25 % 30 %
Class participation 0 % 5 % 0 % 5 %
Mid Term Exam: Written 0 % 25 % 0 %
Final Exam: Written 0 % 30 %
Final Exam: Oral 10 %
Exam: Written 0 % 55 %
Exam: Oral 10 %

Week by Week Schedule

  1. Distributed system architectures. Centralized and decentralized solutions.
  2. Processes and communication in distributed systems. Client-server model: Socket API, RPC, RMI.
  3. Programming middleware for distributed systems: message-oriented communication, publish/subscribe.
  4. Web-application archiectures and web-technologies, REST, WebSocket.
  5. Microservices and design of distributed systems.
  6. Formal models of distributed systems (synchronous and asynchronous), selected algorithms as examples.
  7. Process synchronisation: physical and logical time
  8. Midterm exam
  9. Data replication and consistency.
  10. Data replication and consistency.
  11. Fault tolerance in distributed systems.
  12. Cloud computing. Docker, Kubernetes.
  13. Peer-to-peer (P2P) systems.
  14. Blockchain i Distributed Ledger Technology (DLT).
  15. Final exam

Study Programmes

University graduate
[FER3-HR] Audio Technologies and Electroacoustics - profile
Elective Courses (1. semester) (3. semester)
[FER3-HR] Communication and Space Technologies - profile
Elective Courses (1. semester) (3. semester)
[FER3-HR] Computational Modelling in Engineering - profile
Elective Courses (1. semester) (3. semester)
[FER3-HR] Computer Engineering - profile
Elective Course of the Profile (1. semester)
Elective Courses (1. semester)
[FER3-HR] Control Systems and Robotics - profile
Elective Courses (1. semester) (3. semester)
[FER3-HR] Data Science - profile
Elective Courses (1. semester) (3. semester)
[FER3-HR] Electrical Power Engineering - profile
Elective Courses (1. semester) (3. semester)
[FER3-HR] Electric Machines, Drives and Automation - profile
Elective Courses (1. semester) (3. semester)
[FER3-HR] Electronic and Computer Engineering - profile
Elective Courses (1. semester) (3. semester)
[FER3-HR] Electronics - profile
Elective Courses (1. semester) (3. semester)
[FER3-HR] Information and Communication Engineering - profile
Elective Courses (1. semester) (3. semester)
[FER3-HR] Network Science - profile
(1. semester)
[FER3-HR] Software Engineering and Information Systems - profile
Elective Course of the profile (3. semester)
Elective Course of the Profile (1. semester)
Elective Courses (1. semester) (3. semester)
[FER2-HR] Computer Science - profile
Specialization Course (1. semester) (3. semester)
[FER2-HR] Software Engineering and Information Systems - profile
Theoretical Course (1. semester)
[FER2-HR] Telecommunication and Informatics - profile
Theoretical Course (1. semester)

Literature

Maarten van Steen, Andrew S. Tanenbaum (2017.), Distributed Systems, Createspace Independent Publishing Platform
George F. Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair (2011.), Distributed Systems, Addison-Wesley Longman
Ajay D. Kshemkalyani, Mukesh Singhal (2011.), Distributed Computing, Cambridge University Press

Laboratory exercises

For students

General

ID 222664
  Winter semester
5 ECTS
L1 English Level
L1 e-Learning
45 Lectures
0 Seminar
0 Exercises
12 Laboratory exercises
0 Project laboratory

Grading System

85 Excellent
75 Very Good
65 Good
55 Acceptable