DM883: Distributed Systems
Entry requirements
Academic preconditions
The student is expected to be familiar with the basics of operating systems and computer networks and have a basic understanding of concurrent programming.
Course introduction
The course aims to provide students with the foundations and tools for the design and implementation of distributed systems. For this purpose, the course is organised into three main parts:
- The first covers architectural aspects of distributed systems by analysing the main paradigms and patterns.
- The second covers communication models that can be adopted in these distributed systems and the corresponding middleware solutions.
- The third deals with the main problems that commonly arise in distributed programming, such as achievement of consensus, detection of failures and deadlocks, resource management and replication, by providing adequate techniques and algorithmic solutions.
In relation to the competence profile of the degree it is the explicit focus of the course to:
- Give the competence to reflect on the knowledge of the field of Computer Science and to identify scientific issues.
- Give skills to elucidate hypotheses on a qualified theoretical background and critically refer to own and others' research results and scientific models.
- Give knowledge and understanding of how scientific knowledge is obtained and modeled through an interplay between theory and experiment.
Expected learning outcome
The learning objective of the course is that the student demonstrates independence in the analysis, design, and programming of distributed systems. Specifically, after the course the student is expected to be able to:
- Identify fundamental scenarios and solutions in distributed systems.
- Describe distributed architectures and algorithms covered in the course.
- Explain fundamental problems, techniques, and solutions for distributed systems.
- Reason about properties of concrete distributed systems.
- Describe and analyse distributed architectures and algorithms using model-based approaches.
- Design and implement non-trivial distributed systems.
Content
The following main topics are contained in the course:
- Logical time and global state in distributed systems.
- Communication paradigms, message ordering, and group communication.
- Distributed coordination and shared memory.
- Consensus and agreement in distributed systems.
- Replication, consistency, and fault tolerance.
- Decentralised and peer-to-peer architectures.
Literature
Examination regulations
Exam element a)
Timing
Tests
Projects and oral examination
EKA
Assessment
Grading
Identification
Language
Duration
Examination aids
To be announced during the course.
ECTS value
Additional information
Indicative number of lessons
Teaching Method
The teaching method is based on three phase model.
- Intro phase: 24 hours.
- Skills training phase: 16 hours, hereof tutorials: 16 hours.
Activities during the study phase:
- Self study of various parts of the course material.
- Reflection upon the intro and training sections.
- Solving small assignments, individually or in small groups.