After taking this course, students will be able to:
- understand the intricacies related to designing and developing a
distributed computer system.
- understand the tradeoffs between centralized, distributed, and fully
- understand the impact of scalability on performance and fault-
tolerance of a distributed system.
- understand the impact of performance and fault tolerance on data
- understand the peculiarities of process coordination on large scale.
It is difficult to imagine a standalone modern computer system: every
such system is one way or the other connected through a communication
network with other computer systems. A collection of networked
computer systems is generally referred to as a distributed (computer)
system. As with any computer system, we expect a distributed system to
simply work, and often even behave as if it were a single computer
system. In other words, we would generally like to see all the issues
related to the fact that data, processes, and control are actually
distributed across a network hidden behind well-defined and properly
implemented interfaces. Unfortunately, life is not that easy.
As it turns out, distributed systems time and again exhibit emergent
behavior that is difficult to understand by simply looking at
individual components. In fact, many aspects of a distributed system
cannot even be confined to a few components, as is easily seen by just
In this course, we pay attention to the principles from which modern
distributed systems are built. Unfortunately, these principles cannot be
viewed independently from each other: each one is equally important
for understanding why a distributed system behaves the way it does.
We will consider the following principles:
- consistency and replication
- fault tolerance
These principles will be discussed in the context of a few simplifying
concepts that have been used to master the complexity of developing
distributed systems: objects, files, documents, and events.
Form of tuition
The course is taught as a series of lectures, in combination with
Type of assessment
This year, we will use a reader. Details about its distribution will be
announced via blackboard in due time.
Recommended background knowledge
Students should have taken a standard course on computer networks.
Experience with (distributed) programming will be helpful.
mCS, mPDCS, mSNE (UvA)