
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, Sérgio Marco Duarte
Weekly hours
5
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. Direct communication
2.1 Point-to-point communication
2.2 Multicast
3. Remote invocation
3.1 Model
3.2 Interfaces and data representation
3.3 Protocols and semantics in the presence of faults
3.4 Binding and concurrency in the server
4. Remote invocation in the Internet
4.1 Web-services
4.2 REST
4.3 Asynchronous invocation (e.g. AJAX) and push models
5. Indirect communication
5.1 Group communication
5.2 Publish/subscribe
5.3 Message queues
6. Architectures and models
6.1 Architectures: client/server variants, p2p, proxy
6.2 Fault, interaction and security models
7 Security
7.1 Models
7.2 Cryptography
7.3 Case studies: TLS, OAuth
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
10. Naming in distributed systems
10.1 Problems and concepts
10.2 Name services
10.3 Directory services
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
Grading
Components:
- Lectures (65%) >= 9.5 (0-20 scale)
- Tests 1 and 2, weight 32.5% each
- Exam (65%)
- Labs (35%) => 9.5 (0-20 scale)
- 2 Lab Assignments, 17.5% each
- Labs assignments graded individually via a test defence