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
João Carlos Antunes Leitão, 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
M. van Steen and A.S. Tanenbaum, Distributed Systems, 4th ed., distributed-systems.net, 2023. https://www.distributed-systems.net/index.php/books/ds4/
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
Student Evaluation Method
Evaluation Components
- Two tests, each contributing 30% to the final grade.
- A practical assignment, divided into two phases, each contributing 20% to the final grade.
Important Notes
- The final grade is rounded to the nearest whole number, while intermediate grades are rounded to one decimal place.
- Tests are conducted without consultation.
- Passing the continuous assessment is a prerequisite for taking the resit exam.
Continuous Assessment Evaluation
Students who achieve a continuous assessment grade of 9.0 or higher are considered to have passed the continuous assessment. The grade is calculated as follows:
- Continuous assessment base grade = 50% * work - phase 1 + 50% * work - phase 2
There will be a mandatory discussion (to assess each student''s knowledge of their submitted work), which will be conducted in person and individually. The discussion consists of modifying the code to solve a slightly altered version of the original problem, as defined in the discussion statement.
The grading criteria for the discussion are as follows:
- 20: The modifications are globally correct.
- 16: The modifications are confusing or largely incomplete, but the approach could be correct.
- 12: The modifications contain both correct and incorrect elements.
- 4: No modifications were made, the changes were minimal, or the modifications did not make sense.
In general, a student''s continuous assessment grade is the minimum between their continuous assessment base grade (based on their submitted group work) and their discussion grade (which is zero if they miss the discussion without justification):
- Continuous assessment grade = min(continuous assessment base grade, discussion grade)
Continuous assessment from previous years is valid for this year.
Note on the Use of Generative AI Tools: The use of AI tools for repetitive code generation in the assignment is allowed, but it must be reported upon submission.
Final Grade Calculation
For students who pass the continuous assessment, the final grade is calculated as:
- Final grade = 30% * Test 1 + 30% * Test 2 + 40% * Continuous Assessment Grade
For students with continuous assessment who take the exam, the final grade is:
- Final grade = 60% * Exam + 40% * Continuous Assessment Grade
- Final grade = MAX( 30% * Test 1 + 30% * Test 2, 60% * Exam) + 40% * Continuous Assessment Grade
For students whose average test score or exam grade is lower than 9.5, the final grade will be equal to that score.
Course Passing Conditions
To pass the course, students must meet the following conditions:
1. Valid practical assignment submission.
2. Continuous assessment grade of 9.0 or higher.
3. Average(Test 1, Test 2) >= 9.5 or Exam >= 9.5.
4. Final grade of 9.5 or higher.
During an assessment, a student may not have any electronic devices capable of accessing the internet or with Bluetooth connectivity (e.g., smartphones, smartwatches, smartglasses, tablets, laptops) with them, even if they are turned off. Violation of this rule results in immediate failure of the curricular unit by exclusion and will be reported to the Scientific Committee of the respective program.
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