Il corso ha lo scopo di fornire agli studenti una visione organica delle basi della programmazione concorrente e distribuita. Le lezioni si focalizzano su modelli di sistemi e su vari tipi di framework a supporto dello sviluppo di sistemi concorrenti, a diversi livelli di astrazione e su differenti piattaforme.
The course is aimed at providing students with a comprehensive vision of the foundations of concurrent and distributed programming. The main focus of the lectures is on system models and on different types of frameworks intended to support the development of concurrent systems at different abstraction levels and on different underlying platforms.
La conoscenza delle basi teoriche e degli aspetti tecnologici di alto livello verrà verificata in sede di esame orale. Lo studente è chiamato a fornire risposte utilizzando un linguaggio appropriato e tecnicamente corretto.
The knowledge of the basic theoretical foundations and the high-level technological aspects will be assessed in during the oral exam. The student is expected to answer all the questions using a proper and technically sound language.
Ci si aspetta che lo studente diventi in grado di affrontare problemi di coordinazione in applicazioni software concorrenti e distribuite, sviluppando soluzioni efficaci. Particolare importaza riveste la conoscenza delle caratteristiche concorrenti del linguaggio Java.
Gli studenti dovranno acquisire le capacità fondamentali per partecipare al progetto, sviluppo e integrazione di sistemi software concorrenti e distribuiti, eventualmente costituiti da moduli eterogenei.
The student is expected to become able to tackle coordination problems in concurrent and distributed software applications, developing effective solutions. Particular emphasys is given to the concurrent features of the Java programming language.
Students will acquire the basic skills to participate in the design, implementation and integration of concurrent and distributed software systems, possibly made of heterogeneous components.
La capacità dello studente di progettare e sviluppare software concorrente e distribuito nelle loro varie forme verrà verificata tramite i risultati conseguiti nel progetto assegnato. Tale progetto darà allo studente la possibilità di mostrare il livello raggiunto nella progettazione e nella programmazione.
The student's ability in designing and developing concurrent and distributed software in their different forms will be assessed through the results obtained in developing an assigned project. Such a project will give the student the opportunity to show his/her proficiency in design and coding.
Lo studente svilupperà la sua sensibilità nell'individuare, all'interno di sistemi software, problemi molto sottili legati alla loro natura concorrente.
The student will develop his/her awareness in spotting out subtle problems in software systems whose origin can be related to inherent concurrency issues.
La sensibilità nell'individuare problematiche concorrenti è verificata nel progetto finale, nonché attraverso opportune domande in sede di orale.
The developed ability to spot out concurrent problems will be assessed in the final project, as well as through specific questions in the oral exam.
Nozioni di architettura dei calcolatori e di sistemi operativi. Padronanza dei principali costrutti dei linguaggi di programmazione Java e C.
Notions of computer architecture and operating systems. Mastering of the basic constructs of the Java and C programming languages.
Tipo di lezione: frontale
Attività di apprendimento:
Frequenza: Consigliata
Metodi d'insegnamento:
Delivery: face to face
Learning activities:
Attendance: Advised
Teaching methods:
Nozioni di concorrenza, gestione di tasks/threads, paradigmi/modelli di concorrenza.
Modello a memoria condivisa, mutua esclusione, costrutti e tecniche di sincronizzazione, modelli di consistenza.
Modello a scambio di messaggi, sistemi asincroni e sincroni, precedenza e causalità, algoritmi distribuiti fondamentali, guasti distribuiti.
Paradigmi di comunicazione (diretta/indiretta), RPC, RMI, Message-Oriented Messaging.
Framework paralleli/distribuiti: pattern, applicazioni web, component-based enterprise applications.
Tecnologie per Cloud Computing: virtualizzazione, paravirtualizzazione, file system distribuiti, containers, live migration.
Consultare il sito web del corso per qualsiasi ulteriore dettaglio sul programma.
Notion of concurrency, management of tasks/threads, concurrent models/paradigms.
Shared memory model, mutual exclusion, synchronisation constructs and techniques, consistency models.
Message passing model, asynchronous vs. synchronous systems, precedence and causality, basic distributed algorithms, distributed faults.
Communication paradigms (direct vs. indirect), RPC, RMI, Message-Oriented Messaging.
Parallel/distributed frameworks: patterns, web applications, component-based enterprise applications.
Technologies for Cloud Computing: virtualization, paravirtualization, distributed file systems, containers, live migration.
Please refer to the course website for any further detail on the syllabus.
Il materiale didattico, nonchè letture o libri consigliati, è indicato (e continuamente aggiornato) sul sito del corso. Il docente è disponibile riguardo a qualsiasi richiesta inerente al materiale didattico da usare.
Learning material, as well as recommended readings/books, are listed and continuously updated on the course website. The teacher is available to discuss any issue around learning material, if any, with the interested students.
Gli studenti non frequentanti sono invitati a contattare il docente per discutere riguardo al migliore approccio per arrivare a sostenere l'esame.
Students that cannot attend lectures are invited to contact the teacher to find the better way to study the course subjects and pass the final exam.
L'esame finale è organizzato com segue:
a) sviluppo di un progetto, in gruppi di studenti
b) prova orale (eventualmente anche con esercizi da svolgere alla lavagna).
Il tema del progetto è proposto dal gruppo di studenti, e le relative specifiche sono definite insieme al docente. Dopo aver svolto il progetto, il gruppo deve formalmente presentare al docente il lavoro svolto, per averne la valutazione. La prova orale può essere sostenuta soltanto previo giudizio positivo sulla presentazione del progetto.
Durante la prova orale, lo studente deve rispondere a varie domande relative all'intero programma del corso.
The final test is organized as follows:
a) development of a project, in groups of students
b) oral exam (possibly with written exercises).
The project theme is proposed by groups of students, and the specifications are refined together with the teacher. After the project development, the group must present the complete work to the teacher for its assessment. Admission to the oral exam is granted upon the positive assessment of the project work.
During the oral exams, the student is asked to answer multiple questions on topics in the whole course syllabus.
Vedi sito web del corso.
See the course website.
Nessuna.
None.