• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site
Bachelor 2026/2027

Distributed System Design

Type: Elective course (Software Engineering)
When: 3 year, 3, 4 module
Open to: students of one campus
Language: English
ECTS credits: 5
Contact hours: 60

Course Syllabus

Abstract

Distributed computing and application systems have become central concept of how computers are used, from web applications to e-commerce and to content distribution. Distributed systems help programmers aggregate the resources of many networked computers to construct highly available and scalable services. This course teaches the abstractions, design and implementation techniques that enable the building of efficient, scalable, fault-tolerant distributed systems. A course will cover abstractions and implementation techniques for the construction of distributed systems, including client server computing, the web, cloud computing, peer-to-peer systems, and distributed storage systems. Topics will include remote procedure call, preventing and finding errors in distributed programs, maintaining consistency of distributed state, fault tolerance, high availability, multithreading, etc. Case studies of distributed systems will be considered.
Learning Objectives

Learning Objectives

  • To introduce students to the fundamental problems, concepts, and approaches in the design and analysis of distributed data-intensive application systems
  • To familiarize students with the stages of the distributed system design cycle, including system architecture, data and processes arrangements, naming, communication and coordination issues, consistency and replication, fault tolerance and security issues, and evaluating the effectiveness of distributed application systems for specific data, task, and user types
Expected Learning Outcomes

Expected Learning Outcomes

  • Understand the specifics of different database types. Understand message brokers and delivery mechanics in distributed systems. Understand standard patterns and approaches for designing distributed systems. Estimate load, select architectural components, and justify decisions
Course Contents

Course Contents

  • Topic 1. Relational DBMS
  • Topic 2. Non-Relational DBMS
  • Topic 3. Message Brokers
  • Topic 4. Replication and Partitioning
  • Topic 5. Scaling
  • Topic 6. Monolithic and Microservice Architectures
  • Topic 7. Transactions
  • Topic 8. Problems of Distributed Systems
  • Topic 9. System Design
  • Topic 10. System Design Interview
Assessment Elements

Assessment Elements

  • non-blocking ATT
  • non-blocking ASS
  • non-blocking ACT
  • non-blocking EXM
  • non-blocking PRJ
Interim Assessment

Interim Assessment

  • 2026/2027 4th module
    0.2 * ASS + 0.2 * ACT + 0.3 * PRJ + 0.1 * ATT + 0.2 * EXM
Bibliography

Bibliography

Recommended Core Bibliography

  • Burns, B. (2018). Designing Distributed Systems : Patterns and Paradigms for Scalable, Reliable Services (Vol. First edition). Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1713745
  • Distributed Systems. (2017). Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsnar&AN=edsnar.oai.ris.utwente.nl.publications.db6a761f.b353.419e.b65a.81e3740bbe53

Recommended Additional Bibliography

  • Kleppmann, M. (2017). Designing Data-Intensive Applications : The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1487643

Authors

  • Panfilov Petr Borisovich
  • Butskaia Evgeniia Aleksandrovna