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
- 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: