Distributed systems 1000-217bSR
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.
Type of course
Course coordinators
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 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/
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.
Additional information
Information on level of this course, year of study and semester when the course unit is delivered, types and amount of class hours - can be found in course structure diagrams of apropriate study programmes. This course is related to the following study programmes:
- Bachelor's degree, first cycle programme, Computer Science
- Master's degree, second cycle programme, Computer Science
Additional information (registration calendar, class conductors, localization and schedules of classes), might be available in the USOSweb system: