
Plan
Distributed Systems
(22 hours)
Overall goal:
Students understand the basics of how distributed systems work and are built, and can use distributed systems in their own research projects.
Part 1: What is a distributed system?
Structure of distributed systems
Distribution transparency
Openness
Dependability
Security
Scalability
Part 2: Classification of distributed system
High-performance distributed computing
Distributed information systems
Middleware and Enterprise Application Integration
Pervasive systems
Ubiquitous systems
Mobile computing
Sensor networks
Part 3: Architectures of distributed systems
Layered architecture
Service-oriented architectures
Publish-subscribe architectures
Middleware and distributed systems
Layered-system architectures
Structured peer-to-peer systems
Unstructured peer-to-peer systems
Super-peer networks
Cloud computing
Edge-server architecture
Blockchain architectures
Part 4: Introduction to parallel programming with Python
Processes, multitasking, and threads
The Abstract Interface: concurrent.futures
The Flexible Interface: threading and multiprocessing
Cooperative Multitasking
A Cooperative Web Crawler
Part 5: Processes
Threads and operating systems
Virtualization. Containers. Virtual machine and cloud computing
Client-server interaction. Servers and state
Object servers
Server clusters
Wide-area clusters
Code mobility
Part 6: Communication
Layered Protocols.RPC
Sockets
Messaging
Application-level multicasting
Part 7: Coordination
Physical clocks. Logical clocks. Vector clocks
Totally ordered multicast
Mutual exclusion
Token ring algorithm
ZooKeeper
Election algorithms
Gossip-based coordination
Secure gossiping
Part 8: Student Task
Create your own distributed system :
multiprocessor distributed computing systems,
or web pages,
or chatbots.
Presentation of mini-projects. Feedback and discussion
Literature
1. Maarten van Steen, M., & Tanenbaum, A. S. (2025). "Distributed Systems". 669 p.
2. Coulouris G., Dollimore J., Kindberg T., Blair D. Distributed Systems. Concepts and Design, Addison-Wesley, Munich, 5th Ed., 2012, 1063 p. ISBN 10: 0-273-76059-9
3. Johannes Ernesti, Peter Kaiser, Python 3, Rheinwerk Verlag GmbH, 2022, 1036 p. ISBN 978-3-8362-9131-6
4. MIT 6.824: Distributed Systems https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB
5. Distributed Programming: From Basics to Advanced Concepts
https://dev.to/daviducolo/distributed-programming-from-basics-to-advanced-concepts-5h66
6. Kleppmann, M. (2017). "Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems." O'Reilly Media.
7. Burns, B. (2018). "Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services." O'Reilly Media
- Dozent/in: Dumin Oleksandr
