PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

Elenco notifiche



Distributed systems programming

01TXZSM

A.A. 2024/25

Lingua dell'insegnamento

Inglese

Corsi di studio

Corso di Laurea Magistrale in Data Science And Engineering - Torino

Organizzazione dell'insegnamento
Didattica Ore
Docenti
Docente Qualifica Settore h.Lez h.Es h.Lab h.Tut Anni incarico
Collaboratori
Espandi

Didattica
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 6 D - A scelta dello studente A scelta dello studente
2020/21
The course, taught in English in the first semester of the second year of the Master of Science in Computer Engineering, aims at presenting the main theoretical and practical foundations of the most widely used software architectures and programming paradigms for distributed systems. The students are expected to gain the knowledge of such foundations, as well as the ability to apply them within different distributed systems architectures.
Knowledge of the following foundations of software architectures and programming paradigms for distributed systems: - distributed systems properties, architectural styles, protocol styles, - the web architecture and its main alternatives, - main distributed algorithms and techniques for error management, serialization/deserialization and validation - principles and guidelines for distributed services design, with special emphasis on REST APIs. Skill to apply the learned foundations to the design and implementation of distributed applications and services
The course builds upon knowledge and skills provided by the "System and device programming" and "Web applications I" courses: Prerequirements coming from Web Applications I: - Knowledge of the main aspects of HTML, Javascript - Ability to use Javascript at an advanced level for creating web applications at the front-end level. - Ability to create complete web applications, by using a simple back-end server. Prerequirements coming from System and Device Programming: - Knowledge of system programming APIs (system calls) - Skill to understand and implement concurrent programs based on processes/threads - Skill to understand and implement concurrent programs exploiting advanced synchronization, message passing, and data sharing techniques Other basic prerequirements: - Ability to program in procedural languages and object oriented languages (Java in particular), and corresponding debugging skills. - Basic knowledge of computer network architectures, TCP/IP, HTTP.
The course builds upon knowledge and skills provided by the "System and device programming" and "Web applications I" courses: Prerequirements coming from Web Applications I: - Knowledge of the main aspects of HTML, Javascript - Ability to use Javascript at an advanced level for creating web applications at the front-end level. - Ability to create complete web applications, by using a simple back-end server. Prerequirements coming from System and Device Programming: - Knowledge of system programming APIs (system calls) - Skill to understand and implement concurrent programs based on processes/threads - Skill to understand and implement concurrent programs exploiting advanced synchronization, message passing, and data sharing techniques Other basic prerequirements: - Ability to program in procedural languages and object oriented languages (Java in particular), and corresponding debugging skills. - Basic knowledge of computer network architectures, TCP/IP, HTTP.
Distributed Systems foundations - properties of distributed systems (scalability, consistency, partition tolerance, replication, fault-tolerance, CAP theorem, security properties) - architectural styles for distributed systems (client-server, peer-to-peer, master-slave) and relative roles, main protocol styles (request/response, publish/subscribe) - distributed algorithms (election, consensus, etc) - techniques for error management (management of timeouts, disconnections, soft failures and error recovery strategies) - techniques for serialization/deserialization and validation (JSON, XML, protocol buffers, schema, abstract syntaxes) Web and non-web architectures - HTTP and the REST architecture - HTTP2.0, gRPC, protocol buffers - Websockets and realtime web - main alternatives to the web, TCP/IP sockets, MQTT Design aspects - principles and guidelines for designing distributed services and their interfaces, with special emphasis on REST APIs: models and patterns, management of robustness, performance, and security aspects - REST maturity levels The foundations and the design aspects will be illustrated with reference to the architectures illustrated in the course.
In addition to classes, that include both lectures and exercises in classroom (4 credits), the course includes programming laboratories (2 credits) consisting of exercises on the application of the topics presented in the classes. The laboratories consist of programming exercises about the application of the topics learnt during the classes. During the labs the students will discuss with the teachers on their solutions to the assigned exercises.
The teacher will provide the material (copy of slides and links to on-line resources) on the website of the course. Textbooks: M. van Steen, A. S. Tanenbaum, Distributed Systems, 3rd Edition, 2017-2018, available online (https://www.distributed-systems.net/index.php/books/ds3/) L. Richardson, S. Ruby, RESTful Web Services, O'Reilly 2007, available online (http://restfulwebapis.org/RESTful_Web_Services.pdf)
Modalità di esame:
Exam:
...
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Exam:
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.
Esporta Word