CODICE 80302 ANNO ACCADEMICO 2023/2024 CFU 6 cfu anno 3 INFORMATICA 8759 (L-31) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Italiano SEDE GENOVA PERIODO 2° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE Introduzione alla programmazione multithreaded, concorrente, ad eventi e distribuita. Nel corso vengono introdotti concetti di base legati ad architetture multicore, multithreading nei sistemi operativi e nella programmazione algoritmi ed architetture di base per sistemi distribuiti. Il corso ha una parte di teoria in classe e una serie di laboratori (Pthread, Java Concorrente). OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI 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. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Le lezioni di teoria sono mirate ad acquisire conoscenza sulle problematiche della programmazione concorrente che richiede conoscenza di aspetti di architetture, sistemi operativi e software e degli algoritmi distribuiti. La parte di teoria inoltre mostra diversi livelli di astrazione a livello di costrutti di programmazione attraverso il passaggio da libreri a basso livello in C a libreria ad alto livello in Java. I laboratori sono mirati a costruire vari sistemi distribuiti e risolvere in pratica problemi di concorrenza. PREREQUISITI Programmazione Linguaggio Java Sistemi Operativi Concetti di Base di Reti di Calcolatori MODALITA' DIDATTICHE Lezioni frontali di teoria Esercitazioni in classe Esercitazioni di laboratorio PROGRAMMA/CONTENUTO -Concorrenza nel SO & MultiThreading -Introduzione alla Programmazione Concorrente -Introduzione pratica alla concorrenza - Librerie di sincronizzazione standard come mutex e barriere -Pthread, semafori, monitor e barriere di sincronizzazione -Concurrent Java -Metodologie e pattern in Concurrent Java -Introduzione ad Algoritmi Distribuiti -Distributed Programming in Java - Schemi di sincronizzazione lock-free TESTI/BIBLIOGRAFIA Lucidi e note del docente messe a disposizione su Aulaweb Materiale online (documentazione Java) M. Herlihy and N. Shavit. The Art of Multiprocessing Programming. MK DOCENTI E COMMISSIONI ARNAUD HENRI PAUL SANGNIER Commissione d'esame ARNAUD HENRI PAUL SANGNIER (Presidente) DAVIDE ANCONA GIORGIO DELZANNO (Presidente Supplente) LEZIONI INIZIO LEZIONI In accordo con il calendario didattico approvato dal Consiglio dei Corsi di Studio in Informatica Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME L'esame consiste in un esame scritto di 2 ore e la consegna di alcuni laboratori consegnati durante l'anno MODALITA' DI ACCERTAMENTO 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 usage i concetti visti in pratica. Calendario appelli Data appello Orario Luogo Tipologia Note 11/01/2024 09:00 GENOVA Scritto 08/02/2024 09:00 GENOVA Scritto 10/06/2024 09:00 GENOVA Scritto 03/07/2024 09:00 GENOVA Scritto 20/09/2024 09:00 GENOVA Scritto