Distributed Systems

 
Course code:
X_400130
Period:
Period 2
Credits:
6.0
Language of tuition:
English
Faculty:
Faculteit der Exacte Wetenschappen
Coordinator:
O.W. Schrofer
Lecturers:
prof. dr. ir. A. Iosup
Teaching method(s):
Lecture, Seminar
Level:
400

Course objective

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
decentralized solutions.

- understand the impact of scalability on performance and fault-
tolerance of a distributed system.

- understand the impact of performance and fault tolerance on data
consistency.

- understand the peculiarities of process coordination on large scale.

Course content

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
considering security.

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:

- architectures
- processes
- communication
- naming
- coordination
- 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
exercise classes.

Type of assessment

Written exam.

Course reading

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.

Target audience

mCS, mPDCS, mSNE (UvA)

© Copyright VU University Amsterdam
asnDCcreatorasvVUAmsterdam asnDCdateasv2017 asnstudyguideasvmodule asnDCidentifierasv50049478 asnDCtitleasvDistributedSystems asnperiodasv120 asnperiodasv asncreditsasv6p0 asnvoertaalasvE asnfacultyasv50000044 asnDCcoverageasvprofdrirAIosup