Introduzione alla programmazione multithreaded, concorrente, ad eventi e distribuita.
L'insegnamento introduce concetti di base legati ad architetture multicore, multithreading nei sistemi operativi e nella programmazione di algoritmi ed architetture di base per sistemi distribuiti.
L'insegnamento ha una parte di teoria in classe e una serie di laboratori.
Comprendere i problemi e le metodologie necessarie allo sviluppo di programmi concorrenti e asincroni attraverso lo studio dei principi di comunicazione e sincronizzazione tra processi con memoria condivisa e tra processi distribuiti su linguaggi e piattaforme differenti.
Le lezioni di teoria sono mirate ad acquisire conoscenza sulle problematiche della programmazione concorrente: aspetti di architetture, sistemi operativi e software e degli algoritmi distribuiti.
La parte di teoria inoltre mostra diversi livelli di astrazione attraverso lo studio di librerie a basso livello e ad alto livello.
La parte di teoria presenterà anche metodi per la verifica automatica di sistemi concorrenti.
I laboratori sono mirati a costruire vari sistemi distribuiti e risolvere in pratica problemi di concorrenza.
Questo corso offrirà in più la possibilità di assegnare agli studenti che lo desiderano i seguenti Open Badge:
Gli studenti che vogliono ottenere gli open badge dovranno preparare una presentazione di due laboratori svolti in gruppo e correggere due laboratori di altri gruppi.
Ricevimento: Ricevimento su appuntamento via mail.
ARNAUD HENRI PAUL SANGNIER (Presidente)
DAVIDE ANCONA
GIORGIO DELZANNO (Presidente Supplente)
In accordo con il calendario didattico approvato dal Consiglio dei Corsi di Studio in Informatica
L'esame consiste in un esame scritto di 2 ore e la consegna di alcuni laboratori fatti durante l'anno
La prova scritta verifica la capacità dello studente di mettere in pratica le nozioni viste a lezione e la consegna di alcuni laboratori permette di controllare che lo studente è capace di usare i concetti visti in pratica.