• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Distributed Computing

Academic Year
Instruction in English
ECTS credits
Delivered at:
Department of Information Technologies in Business (Faculty of Computer Science, Economics, and Social Sciences)
Course type:
Compulsory course
4 year, 2, 3 module


Course Syllabus


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 computing systems and applications.
  • To familiarize students with the stages of the distributed system design cycle, including system architecture, data and processes arrangements, naming, communication and coordination issues, existing distributed computing paradigms, techniques, and tools, and evaluating the effectiveness of distributed application systems for specific data, task, and user types.
Expected Learning Outcomes

Expected Learning Outcomes

  • understand an importance of the replication of data in distributed systems; know consistency models for shared data and their implementation; discuss and explain difference between data-centric and client-centric consistency models; understand the issue of managing replica servers; know the alternatives for implementing strong consistency for replicas
  • understand client-server organizations in distributed systems; understand typical organizations of both clients and servers; know the design issues for servers including those used in object-based distributed systems
  • understand the concept of processes and how the different types of processes play a crucial role in distributed systems; understand threads and their role in obtaining performance in multicore and multiprocessor environments and in structuring clients and servers; know basic principles of virtualization for making applications to run concurrently and independently of the underlying hardware and platforms
  • understand the distinction between distributed computing systems, distributed information systems and pervasive systems
  • understand the evolution of the distributed computing from its early beginnings as multi-processor and multi-computer systems, to computer networks, to the emerging cloud, edge (fog, dew, mist) and heterogeneous computing environments
  • understand the existing distributed computing paradigms and systematic issues; understand some commonly applied architectural styles toward organizing distributed computing systems; know the role of middleware layer in separating applications from underlying platforms
  • understand the importance of cooperation and synchronization of actions between processes; understand the goal of process coordination, coordination problems and solutions in distributed systems; understand coordination of a group of processes by means of election algorithms
  • understand the practical issues and choices that can be made to instantiate and place software components on the real machines; understand the difference between centralized and decentralized architecture
  • understand the usage of names in resource sharing, identifying entities, referring to locations, and other uses in distributed systems; understand the difference in implementing naming system in distributed systems and nondistributed systems; know what a flat-naming system is, and what mechanisms are needed to trace the location of entities in distributed system; understand general principles and scalability issues of structured name systems; know the use of Domain Name System (DNS)
  • understand the ways that processes on different machines in distributed system can exchange information; know the widely used models of communication: Remote Procedure Call (RPC), and Message-Oriented Middleware (MOM); know what an application-level routing means for the message-oriented communication; know how to set up multicast facilities for data dissemination in distributed systems
Course Contents

Course Contents

  • Introduction: Design goals
  • Introduction: Types of systems
  • Architectures: Architectural styles. Middleware.
  • Architectures: System architecture.
  • Processes: Threads. Virtualization.
  • Processes: Clients. Servers.
  • Communication: Foundations. RPC.MOM. Multicasting.
  • Naming: Names, IDs. Flat naming. Structured naming. Attribute-based naming.
  • Coordination: Clock synchronization. Mutual exclusion. Election algorithms.
  • Consistency and replication: Data-centric & Client-centric models. Replica management. Consistency protocols.
Assessment Elements

Assessment Elements

  • non-blocking Лабораторная работа №1
  • non-blocking Лабораторная работа №2
  • non-blocking Лабораторная работа №3
  • non-blocking Лабораторная работа №4
  • non-blocking Экзамен
  • non-blocking Лабораторная работа №6
  • non-blocking Лабораторная работа №5
  • non-blocking Контрольная работа №1
  • non-blocking Контрольная работа №2
  • non-blocking Контрольная работа №3
  • non-blocking Контрольная работа №4
Interim Assessment

Interim Assessment

  • 2022/2023 3rd module
    0.1 * Лабораторная работа №4 + 0.2 * Экзамен + 0.025 * Контрольная работа №3 + 0.1 * Лабораторная работа №2 + 0.025 * Контрольная работа №2 + 0.2 * Лабораторная работа №6 + 0.1 * Лабораторная работа №3 + 0.1 * Лабораторная работа №1 + 0.025 * Контрольная работа №4 + 0.1 * Лабораторная работа №5 + 0.025 * Контрольная работа №1


Recommended Core Bibliography

  • 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
  • Tanenbaum, A. S., & Steen, M. van. (2014). Distributed Systems: Pearson New International Edition : Principles and Paradigms (Vol. 2nd ed). Harlow, Essex: Pearson. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1418515

Recommended Additional Bibliography

  • Distributed systems : concepts and design, Coulouris, G., 2012