
Distributed Systems
Code
8153
Academic unit
Faculdade de Ciências e Tecnologia
Department
Departamento de Informática
Credits
6.0
Teacher in charge
Nuno Manuel Ribeiro Preguiça
Weekly hours
4
Total hours
52
Teaching language
Português
Objectives
This is an optional consolidation course on distributed systems. It provides the basic knowledge on the models, methods and techniques for developing distributed systems. As prerequisites students should have previous acquaintance with algorithms, programming, and computer networks.
Knowledge
- Problems and challenges for the design of distributed systems;
- Architectural models for building distributed systems;
- Models and systems for direct and indirect communication;
- Alternatives for naming, including name and directory services;
- Essential solutions for ordering and tracking causality of events;
- Basic consistency models and solutions for caching and replication.
Know-how
- Design a distributed system for solving a non-trivial problem.
- Leverage standard communication sub-systems for programming distributed systems;
- Program non-trivial distributed systems.
Prerequisites
As prerequisites students should have previous acquaintance with algorithms, programming, and computer networks.
Good Java programming skills are essential.
Subject matter
1. Introduction
1.1 Examples, characteristics, challenges
2. Architectures and models
2.1 Architectures: client/server, p2p, proxy
2.2 Fault, interaction and security models
3. Direct communication
3.1 Point-to-point communication
3.2 Multicast
4. Remote invocation
4.1 Model
4.2 Interfaces and data representation
4.3 Protocols and semantics in the presence of faults
4.4 Binding and concurrency in the server
5. Remote invocation in the Internet
5.1 Web-services
5.2 REST
5.3 Asynchronous invocation (e.g. AJAX) and push models
6. Indirect communication
6.1 Group communication
6.2 Publish/subscribe
6.3 Message queues
7. Naming in distributed systems
7.1 Problems and concepts
7.2 Name services
7.3 Directory services
8. Time
8.1 Physical clocks
8.2 Logical clocks
8.3 Vector clocks
8.4 Version vectors
9. Introduction to replication and consistency
9.1 Caching
9.2 Primary/backup replication
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
Lectures for presenting and discussing fundamental concepts and techniques/algorithms.
Labs are used for presenting basic distributed systems techniques (see program). Some sessions are used exclusively for discussing solutions and problems in the implementation of the course projects.
Evaluation method
Método de avaliação dos alunos
Componentes da avaliação
- Dois mini-testes, com o peso na nota final de 35% cada um.
- Dois trabalhos práticos, com peso na nota final de 15% cada um.
Notas a ter em atenção
- A nota final é aproximada ao valor, as notas intermédias à décima de valor.
- Os mini-testes são realizados sem consulta.
- 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 valoes. A nota de frequência é calculada da seguinte forma:
- Nota de frequência = 50% * trab 1 + 50% * trab 2
A nota do trabalho prático será obtido pela avaliação do trabalho efectuado, a qual pode incluir uma discussão sobre o mesmo.
Nota final
Para os alunos com frequência, a nota final será calculada da seguinte forma:
- Nota final = 35% * teste 1 + 35% * teste 2 + 15% * trab 1 + 15% * trab 2
Para os alunos que vão a exame, a nota final será calculada da seguinte forma:
- Nota final = 70% * exame + 15% * trab 1 + 15% * trab 2
- Nota final = MAX( 35% * teste 1 + 35% * teste 2, 70% * exame) + 15% * trab 1 + 15% * 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,0 valores;
3. Nota final superior ou igual a 9,5 valores.