MENY
This is the study programme for 2019/2020. It is subject to change.


The course gives insight into both theoretical and practical aspects of distributed computing systems, with particular emphasis on techniques for building fault tolerant systems.

Learning outcome

Knowledge
- Be familiar with important principles for design and implementation of distributed systems. - Be familiar with the most important system architectures for distributed systems. - Be familiar with important techniques for solving various problems in distributed systems.
Skills
- Be able to develop advanced distributed applications with fault tolerance properties. - Be able to perform independent research in distributed systems. - Be able to reason about problems that involve distributed components.
General competency
- Know how to develop distributed computer systems.

Contents

The course gives insight into important theoretical principles of distributed computing, including: system models for interaction and failure, interprocess communication, synchronization, time and global states, protocols for coordination and consensus (Paxos), distributed transactions, fault tolerance, consistency, and replication. The course also covers concrete systems and architectures for distributed systems: map-reduce, distributed hash tables, peer-to-peer systems, gossip-based systems, and distributed filesystem.
The course also includes a larger programming project in which you will implement the well-known Paxos consensus algorithm, and to implement a fault tolerant servicing using Paxos.
The programming project in this course shall be implemented using the Go programming language.

Required prerequisite knowledge

None.

Recommended previous knowledge

Operating systems, computer networking, advanced programming

Exam

Written exam and exercises
Weight Duration Marks Aid
Written6/104 hoursA - FNone permitted
Programming project4/10 A - F
Project consisting of four programming assignments. The project is to be performed in a group. The grade for the project will be based on the submitted program code and an individual oral examination (lab exam) of the submitted program code. Only a single grade is given for these four lab exercises, but each group member can receive a different grade based on their performance during the oral examination.

Coursework requirements

Compulsory assignments
Two mandatory individual lab exercises (programming exercises). Pass/Fail. All programming exercises must be passed within the specified deadlines to attend the written exam and lab exam. Approval takes place through the Autograder system for automated evaluation, followed by in-lab approval.
Completion of mandatory lab assignments are to be made at the times and in the groups that are assigned. Absence due to illness or for other reasons must be communicated as soon as possible to the laboratory personnel. One cannot expect that provisions for completion of the lab assignments at other times are made unless prior arrangements with the laboratory personnel have been agreed upon.
Failure to complete the assigned labs on time or not having them approved will result in barring from taking the exam of the course.

Course teacher(s)

Casual teacher
Leander Nikolaus Jehl
Course coordinator
Hein Meling
Head of Department
Tom Ryen

Method of work

4 hours of lectures and 4 hours of mandatory work. All mandatory work (such as hand-ins, lab.work and projects etc. ) must be approved within the specified deadlines throughout the course.

Overlapping courses

Course Reduction (SP)
Distributed systems (MID110_1) 10

Open to

Master studies at the Faculty of Science and Technology.

Course assessment

Form and/or discussion

Literature

Text book: Introduction to Reliable and Secure Distributed Programming, Christian Cachin, Rachid Guerraoui and Luis Rodrigues (2nd ed). In addition, selected articles will be given at the start of term.


This is the study programme for 2019/2020. It is subject to change.

Sist oppdatert: 15.12.2019