Lecturer(s)
|
-
Brenkus David, Ing. Ph.D.
|
Course content
|
1. Introduction to distributed systems, their properties, architecture, requirements, models and design goals. 2. Distributed algorithms, taxonomy, basic properties and solved problems, applications of distributed algorithms, deadlock detection. 3. Leader election, mutual exclusion, event ordering, group management and reliable group communication, atomic broadcast and distributed consensus. 4. The problem of distributed systems debugging, logical time stamps, consistent global state, observability and monitoring. 5. Solving elementary coordination tasks in distributed systems using distributed stores. 6. Generalization of the distributed consensus, replication, replicated state machine, Paxos and RAFT 7. Consistency in distributed systems, the CAP theorem, overview of consistency models, CRDT - Conflict-free Replicated Data Types 8. Data centric and client centric consistency models. 9. Transactions, nested transactions, distributed transaktions, locking, time-stamps, failure recovery. Blockchain, the Saga pattern, process orchestration vs choreography, event driven processing, reactive services, SQRS and event sourcing, FaaS 10. Architectural design patterns in distributed systems, hexagonal architecture, data sharding and distributed hash tables. 11. Resource management and task scheduling in distributed systems 12. Swarm intelligence, intelligent networks, distributed simulation 13. Distributed systems security, introduction to PKI, SCEP, authentication services, OAuth and JWT
|
Learning activities and teaching methods
|
- Contact hours
- 65 hours per semester
- Preparation for an examination (30-60)
- 45 hours per semester
- Graduate study programme term essay (40-50)
- 50 hours per semester
|
prerequisite |
---|
Knowledge |
---|
To demonstrate knowledge of computer network at the level of the KIV/PSI course To demonstrate knowledge of operating systems at the level of the KIV/OS course To demonstrate knowledge of the C programing language To demonstrate knowledge of finite state automata and their implementation in the C programming language To demonstrate ability to develop networking applications To demonstrate basic ability to programmatically create parallel threads and processes To demonstrate knowledge of synchronization methods in the Linux operating system (POSIX interface) |
Skills |
---|
To be able to use common development and versioning tools. Basic Linux OS usage skills. Basic skills in C language development environment usage. To be able to develop more complex software using the C programming language To be able to develop networking software using the BSD sockets API |
Competences |
---|
N/A |
N/A |
learning outcomes |
---|
Knowledge |
---|
To be familiar with problems solved in distributed systems problems. To demonstrate theoretical knowledge of various problems, that can be correctly solved by coordinating independent programs, including algorithms used for their solution. To demonstrate thorough knowledge of network programming, especially system functions. To demonstrate knowledge of selected distributed algorithms. To demonstrate knowledge of time synchronization, consistency, multiple copies, distributed transactions, distributed file systems. To demonstrate knowledge in the field of reliability and failure detection in distributed systems. |
Skills |
---|
To have practical experience with parallel process programming, threads and their synchronization, be able to pass data between processes and threads in the Unix/Linux operating system environment. To be familiar with Linux command line commands, especially command related to the networking subsystem. To preform analysis of and checking network settings and problem diagnostics. To design and implement client-server networking applications. To design and implement selected distributed algorithms. To be able to debug software in a distributed environment. To perform software analysis including localization of possible errors. |
Competences |
---|
N/A |
teaching methods |
---|
Knowledge |
---|
Lecture supplemented with a discussion |
Group discussion |
Self-study of literature |
Skills |
---|
Practicum |
Skills demonstration |
Group discussion |
Competences |
---|
Interactive lecture |
assessment methods |
---|
Knowledge |
---|
Continuous assessment |
Written exam |
Skills |
---|
Skills demonstration during practicum |
Continuous assessment |
Competences |
---|
Written exam |
Recommended literature
|
-
Burns, Brendan. Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services. 2018. ISBN 978-1-492-03177-2.
-
Coulouris, George; Dollimore, Jean; Kindberg, Tim. Distributed systems : concepts and design. 5th ed.. 2012. ISBN 978-0-13-214301-1.
-
Özsu M.Tamer; Valduriez Patrick. Principles of Distributed Database Systems, 4th ed.. Springer, 2020. ISBN 978-3-030-26252-5.
-
Tanenbaum, Andrew S.; Van Steen, Maarten. Distributed systems 3rd Edition. 2017. ISBN 978-15-430573-8-9.
|