Learning objectives
The course aims to provide in-depth knowledge of the algorithms used to ensure the proper functioning of a distributed system, of the architectures and models that characterize them, and of the techniques and technologies used for their development.
In addition, the course aims to provide a good ability to use the knowledge acquired, the experience accumulated during the exercises, to identify the best distributed solutions to a problem, and to create satisfactory implementations, both in terms of the quality of the system created, and in terms of the cost of development.
Prerequisites
Software Engineering, Database Systems.
Course unit content
The course presents the main characteristics of distributed systems and the techniques and technologies for their development.
In particular, the course addresses the following topics:
Introduction
Middleware
Synchronization and coordination
Reliability and scalability
Development techniques and tools
Applications
Store cooperation
Multi-agent systems and simulation
Java for distributed systems.
Full programme
Distributed system features
Architecture models
Middleware
Naming
Communication
Synchronization
Coordination
Fault Tolerance
Distributed Transactions
Design
Applications
Development technologies
Multi-agent systems
Multi-agent systems simulation
Java for distributed systems
Bibliography
A. Tanenbaum - M. Van Steen. Distributed Systems. Prentice Hall, 4th edition, 2023
Teaching methods
The course is based on theoretical lessons and laboratory exercises. In particular, the laboratory activities will be dedicated to the development of some applications and software systems using the Java language and the tools presented during the course. In these activities, students will work individually or in pairs, clearly under the guidance and with the support of the course teacher and without precluding positive interactions between students. The slides used to support the lessons will be uploaded to the Elly platform before each lesson. To download the slides, registration for the course through the Elly platform is required. The slides are considered an integral part of the teaching material. Therefore, non-attending students will have to check the teaching material and the instructions provided by the teacher available on the Elly platform.
Assessment methods and criteria
There are written tests and practical tests.
The written tests are based on open-ended questions on theory to be answered without the help of notes and books. These questions are intended to assess the knowledge acquired on the topics discussed during the course.
The practical tests consist of the development of software applications and systems and can be carried out by students individually or in groups of up to 2 people.
The main purpose of these tests is to assess the ability to apply the knowledge acquired during the course. Furthermore, the evaluation of the tests will depend on the quality of the applications and systems developed, and the related documentation.
The duration of a written test is 1 hour and thirty minutes; the duration of a practical test will depend on the complexity of the assignment.
The written and practical tests are evaluated on a scale of 0-30. A test is passed if its result is greater than or equal to 18. The final grade is equal to the arithmetic mean of the grades of the tests. Honors can be awarded in the case of achieving the maximum score on all the tests.
Other information
- - -
2030 agenda goals for sustainable development
- - -