The goal of the course is to provide an in-depth knowledge on the algorithms used to guarantee an efficient and effective behavior of a distributed system, on their reference models and architectures, and on the techniques and some technologies used for their development.
Moreover, the course has the goal to provide to the students the ability to use the acquired knowledge and the experience, gained during the lab activities, to identify the best-distributed solutions of a problem and to develop satisfying implementations for both the properties and the cost of the developed system.
Software Engineering, Database Systems.
The course presents the main features of distributed systems and the techniques and technologies for their development. In particular, the course copes with the following topics: architecture and computing models, design and performance analysis, concurrent and distributed programming languages, middleware, naming resolution algorithms, synchronization and coordination, replication, fault tolerance, security, distributed transactions, service oriented systems, multi-agent systems, modeling and simulation, development technologies, and applications.
Architecture and computing models
Design and performance analysis
Concurrent and distributed programming languages
Naming resolution algorithms
Synchronization and coordination
Service oriented systems
Modeling and simulation
G. Coulouris, J. Dollimore, T. Kindber. Distributed Systems - Concepts and Design, Addison Wesley, Fifth Edition, 2012.
The course is based on theoretical lectures and lab activities. In particular, the lab activities are dedicated to the development of some distributed systems taking advantage of the technologies discussed during the course. In these activities, students work individually, of course under the control and with the support of the teacher and without any restriction on positive interaction among them.
The slides used to support the teaching activities will be uploaded on the Elly platform before each lecture. Students need to subscribe to the online course to download the corresponding slides. Slides are an integral part of the teaching material. Therefore, non-attending students need to check the teaching material and the teacher’s recommendations available on the Elly platform.
Evaluation consists of a written test and a practical test. Written tests are composed of eight open-ended questions to be answered without the use of books and notebooks. These tests have the goal to evaluate the acquired knowledge on the arguments discussed during the course. Written tests duration is an hour and thirty minutes, their score scale is 0-30 and grades will be communicated within two weeks after the tests through the Elly system. Practical tests consist in the development of a software system and can be carried out by students individually or in groups of up to two people. These tests have the goal to evaluate the capability to apply the knowledge acquired during the course. Moreover, the value of such an evaluation will depend on the quality of the developed system, of the related documentation and of the oral presentation (with the use of slides) of the system. The score scale of practical tests is 0-30 and grades are communicated at the end of the presentation. The exam is passed if the grade of both the tests is greater or equal to 18. Final evaluation is the average grade of the two tests. Honors can be awarded in case of achieving the highest score on both tests.