Distributed Systems

Objectives

This is a mandatory course on distributed systems. It provides the basic knowledge on the models, methods and techniques for developing secure distributed systems. As prerequisites students should have previous acquaintance with algorithms, programming, and computer networks.

Knowledge 

* Understand the problems and challenges for the design of dist. sys.;
* Understand the architectures of dist. sys.;
* Know the models and systems for direct and indirect communication;
* Understand the algorithms for establishing secure channels;
* Know the alternatives for naming: name and directory services;
* Understand the mechanisms for ordering and tracking causality of events;
* Understand the caching and replication algorithms and associated consistency models.

Know-how

* To design a secure dist. sys. for solving a non-trivial problem.
* To program dist. sys. leveraging standard communication sub-systems;
* To use of replication as a technique for improving fault tolerance and performance.

General characterization

Code

8153

Credits

6.0

Responsible teacher

Nuno Manuel Ribeiro Preguiça

Hours

Weekly - 5

Total - 65

Teaching language

Português

Prerequisites

As prerequisites students should have previous acquaintance with algorithms, programming, and computer networks.

Bibliography

Distributed Systems: Concepts and Design

George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair

Publisher: Addison Wesley; 5th edition

ISBN-13: 978-0132143011

Teaching method

In lectures, the key points of the syllabus are presented, using examples of existing distributed systems whenever possible. This presentation should be complemented with studying the recommended book.

 The laboratory classes target the presentation and resolution of two programing projects, providing students with experience in using the studied techniques for programming distributed systems. Projects will include a sequence of steps that follow the topics studied. Examples will be presented in laboratory classes, where each step of the project will be started.

Evaluation method

 

Método de avaliação dos alunos

Componentes da avaliação

  • Dois testes, com o peso na nota final de 30% cada um.
  • Dois trabalhos práticos, com peso na nota final de 20% cada um.

Notas a ter em atenção

  • A nota final é aproximada ao valor, as notas intermédias à décima de valor.
  • Os testes são realizados sem consulta.
  • Tests/exam will be in-campus, if possible. If it is necessary to do the tests/exams online, the tests will be performed using the proctoring tools provided by FCT (Respondus).
  • Ter êxito na frequência é condição necessária para aceder ao exame de recurso.

Avaliação da frequência

Têm frequência os alunos cuja nota de frequência seja igual ou superior a 8,5 valoes. A nota de frequência é calculada da seguinte forma:

  • Nota de frequência = 50% * trab 1 + 50% * trab 2

A nota dos trabalhos práticos poderá ainda incluir uma discussão sobre o mesmo. Os alunos que, sem justificação, não compareçam a uma discussão não têm frequência.

A frequência de anos anteriores é válida este ano.

Nota final

Para os alunos com frequência, a nota final será calculada da seguinte forma:

  • Nota final = 30% * teste 1 + 30% * teste 2 + 20% * trab 1 + 20% * trab 2

Para os alunos que vão a exame, a nota final será calculada da seguinte forma:

  • Nota final = 60% * exame + 20% * trab 1 + 20% * trab 2
Para os alunos que pretendem fazer melhoria, a nota final será calculada da seguinte forma:
  • Nota final = MAX( 30% * teste 1 + 30% * teste 2, 60% * exame) + 20% * trab 1 + 20% * trab 2

Condições de aprovação na cadeira

1. Trabalho prático válido;

2. Avaliação de frequência superior ou igual a 8,5 valores;

3. Média(teste 1, teste 2) >= 8.5 ou exame >= 8.5;

4. Nota final superior ou igual a 9,5 valores.

Subject matter

1. Introduction

2. Architectures
2.1 Architectures: client/server, p2p and variants
2.2 System models

3. Direct communication
3.1 Base systems: TCP, UDP, IP multicast, HTTP
3.2 Asynchronous systems: HTTP asynchronous, web sockets

4. Remote invocation
4.1 Model
4.2 Interfaces and data representation
4.3 Protocols
4.4 Binding and server concurrency

5. Client/server invocation in the web
5.1 SOAP
5.2 REST

6. Evaluation of distributed systems
6.1 Functional testing and load testing

6. Security
6.1 Cryptography
6.2 Authentication, certificates and secure channels
6.3 TLS and O.Auth

7. Time and ordering of events
7.1 Limitations of physical clocks
7.2 Logical clocks, vector clocks and version vectors

8. Replication and consistency
8.1 Caching
8.2 Replication: strong: primary-backup; weak: epidemic replication and Coda

9. Indirect communication
9.1 Group communication: properties
9.2 Pub/sub and message queues
9.3 Providing fault tolerance

10. Naming
10.1 Concepts
10.2 Name and directory services

Programs

Programs where the course is taught: