University of Warsaw - Central Authentication System
Strona główna

Distributed systems

General data

Course ID: 1000-217bSR
Erasmus code / ISCED: 11.3 The subject classification code consists of three to five digits, where the first three represent the classification of the discipline according to the Discipline code list applicable to the Socrates/Erasmus program, the fourth (usually 0) - possible further specification of discipline information, the fifth - the degree of subject determined based on the year of study for which the subject is intended. / (0612) Database and network design and administration The ISCED (International Standard Classification of Education) code has been designed by UNESCO.
Course title: Distributed systems
Name in Polish: Systemy rozproszone
Organizational unit: Faculty of Mathematics, Informatics, and Mechanics
Course groups: (in Polish) Grupa fundamentalnych przedmiotów systemowych dla informatyki magisterskiej
(in Polish) Grupa przedmiotów obowiązkowych dla informatyki magisterskiej-specjalność Systemy informatyczne
(in Polish) Przedmioty obieralne na studiach drugiego stopnia na kierunku bioinformatyka
Elective courses for Computer Science and Machine Learning
Elective courses: concurrent and distributed programming
ECTS credit allocation (and other scores): 6.00 OR 9.00 (differs over time) Basic information on ECTS credits allocation principles:
  • the annual hourly workload of the student’s work required to achieve the expected learning outcomes for a given stage is 1500-1800h, corresponding to 60 ECTS;
  • the student’s weekly hourly workload is 45 h;
  • 1 ECTS point corresponds to 25-30 hours of student work needed to achieve the assumed learning outcomes;
  • weekly student workload necessary to achieve the assumed learning outcomes allows to obtain 1.5 ECTS;
  • work required to pass the course, which has been assigned 3 ECTS, constitutes 10% of the semester student load.

view allocation of credits
Language: English
Type of course:

obligatory courses

Short description:

This course consists of two components: a lecture and a practical work. The lecture will cover the principles, advanced concepts, and technologies of distributed systems, including communication, replication, fault tolerance, and security. The practical part, in turn, will give students an opportunity to test the new knowledge in the real world. More specifically, individually or in pairs, the students will build a distributed system related to cloud computing.

The practical work is very demanding in terms of the dedicated time and required programming skills.

Full description:

Core topics:

1. Introduction: definitions, types of distributed systems. (1 lecture)

2. Architectures: system architectures, architectures vs. middleware, self-management in distributed systems. (1-2 lectures)

3. Processes: threads, virtualization, clients, servers, code migration (1-2 lectures)

4. Communication: remote procedure call, message-oriented communication, stream-oriented communication, multicast. (1-2 lectures)

5. Naming: flat naming, structured naming, attribute-based naming. (1-2 lectures)

6. Synchronization: clock synchronization, logical clocks, mutual exclusion, global positioning of nodes, election algorithms. (1-2 lectures)

7. Consistency and replication: data-centric consistency models, client-centric consistency models, replica management, consistency protocols. (1-2 lectures)

8. Fault tolerance: process resilience, reliable client-server communication, distributed commit, recovery. (1-2 lectures)

9. Security: secure channels, access control, security management. (1-2 lectures)

Optional topics (depending on the available time):

1. Distributed object-based systems.

2. Distributed file systems.

3. Distributed web-based systems.

4. Distributed coordination-based systems.

Bibliography:

1. A. S. Tanenbaum and M. van Steen, “Distributed Systems: Principles and Paradigms,” Second Edition, Prentice Hall, 2007.

2. Selected papers from top systems conferences and journals, including SOSP, OSDI, NSDI, and SIGCOMM.

Learning outcomes:

Knowledge

1. Knows process synchronization techniques and process communication techniques in centralized and distributed model of programming [K_W04].

2. Knows algorithms of mutual exclusion and synchronization in distributed systems [K_W05].

3. Recognizes the need for building distributed systems.

4. Knows various applications of distributed systems.

5. Is familiar with different programming models employed in distributed system development.

6. Is able to differentiate between the roles of physical and logical system organizations.

7. Is familiar with the role of middleware in distributed systems.

8. Knows self-organization mechanisms in distributed systems.

9. Is aware of the roles of processes, threads, virtualization and code migration in distributed systems.

10. Knows basic communication paradigms in distributed systems (RPC, messaging, streams).

11. Is familiar with the roles of names in distributed systems and algorithms employed for handling various naming schemes (e.g., distributed hash tables).

12. Recognizes the problems associated with synchronizing processes in distributed systems, in particular, with physical and logical clocks.

13. Knows various synchronization algorithms.

14. Knows multicasting algorithms that guarantee message ordering (e.g., total ordering or causal ordering).

15. Recognizes problems stemming for the need for consistency in distributed systems.

16. Knows various consistency models: data-centric consistency, client-centric consistency, commit-based consistency.

17. Understands the need for fault tolerance in distributed systems.

18. Is familiar with various failure models.

19. Knows fault tolerance algorithms for these models.

20. Is aware of the importance of security in distributed systems.

21. Knows various techniques helping build secure systems.

Skills

1. Is able to apply mechanisms of process and thread synchronization in selected technologies depending on the architecture and capacity of a particular computer [K_U06].

2. Uses modern techniques of computation distribution and parallelization. [K_U08].

3. Has command of a foreign language in the subject of computer science according to the requirements of the level B2+ of Common European Framework of Reference for Languages, in particular: identifies main and side topics of lectures, talks, academic debates, discussions; is able to understand the text being read and critically review academic texts; is able to take part in discussion and scientific debate, is able to orally summarize information, results of studies, author's opinions and points included in a scientific text [K_U14].

4. Is capable of designing and implementing components of a distributed system.

5. Is capable of testing components of a distributed system.

Assessment methods and assessment criteria:

Programming assignments and final exam with ratio 50:50. Both items must be passed to get a positive grade.

To pass laboratory part one has to deliver all assignments on time and get at least 50% of points. One of the laboratory assignments may be (according to the coordinator's view) a mini-examination. The points obtained in the laboratory classes are part of the final grade.

Passing the course in the zeroth term requires scoring at least 38 of points in the laboratory classes. The total number of points obtained in the zeroth term is as follows: min(50, L) x 1.6, where L is the number of points scored in the laboratory classes.

More information on the course website:

https://www.mimuw.edu.pl/~iwanicki/courses/ds/

Classes in period "Winter semester 2024/25" (past)

Time span: 2024-10-01 - 2025-01-26
Selected timetable range:
Go to timetable
Type of class:
Lab, 30 hours more information
Lecture, 30 hours more information
Coordinators: Konrad Iwanicki
Group instructors: Wojciech Ciszewski, Konrad Iwanicki, Maciej Matraszek
Students list: (inaccessible to you)
Credit: Examination

Classes in period "Winter semester 2025/26" (future)

Time span: 2025-10-01 - 2026-01-25

Selected timetable range:
Go to timetable
Type of class:
Lab, 30 hours more information
Lecture, 30 hours more information
Coordinators: Konrad Iwanicki
Group instructors: Konrad Iwanicki, Paweł Żuk
Students list: (inaccessible to you)
Credit: Course - Examination
Lecture - Examination
Course descriptions are protected by copyright.
Copyright by University of Warsaw.
ul. Banacha 2
02-097 Warszawa
tel: +48 22 55 44 214 https://www.mimuw.edu.pl/
contact accessibility statement site map USOSweb 7.1.2.0-bc9fa12b9 (2025-06-25)