CODICE 80302 ANNO ACCADEMICO 2018/2019 CFU 9 cfu anno 2 INFORMATICA 8759 (L-31) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Italiano SEDE GENOVA PERIODO 2° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE Introduzione alle problematiche e alle metodologie di programmazione per lo sviluppo di sistemi concorrenti e distribuiti. I contenuti sono ispirati alle seguenti tematiche del Computer Science Curriculum dell'ACM/IEEE (link): OS/Concurrency, Scheduling and Dispatch PL/Event-Driven and Reactive Programming, Concurrency and Parallelism PD/Communication and Coordination, Distributed Systems PBD/Mobile Platforms OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Comprendere i problemi e le metodologie necessarie allo sviluppo di programmi concorrenti ed asincroni attraverso lo studio dei principi di cooperazione e sincronizzazione tra processi con memoria condivisa e tra processi distribuiti. Esercitazioni in laboratorio sull'uso di librerie per concorrenza e distribuzione in diversi linguaggi/piattaforme. MODALITA' DIDATTICHE Tradizionale: Lezioni in classe ed esercitazioni guidate in laboratorio. PROGRAMMA/CONTENUTO Teoria Programmazione multithread Esempi di costrutti e programmi (pseudo codice) Problema della sezione critica (PSC) e data race: Mutua esclusione, starvation-freedom, deadlock-freedom Soluzioni software a PSC: Peterson's algorithm, Lamport's algorithm Spinlock, Semafori, Mutex, Monitor, Barriere Memory models: Strict and Sequential Consistency, Relaxed Memory Models: Weak Consistency Lock-free programming: CAS, Test and Set Lock, Swap and Compare Strutture dati concorrenti Laboratorio Programmazione concorrente: Thread, Pool, Synchronized, wait e notify, Future, Callback Programmazione distribuita e di rete: Socket, RPC,RMI, Servizi web Programmazione in Android: LABO Programmazione multithreaded in C, Java e Android Progetto finale Applicazione client-server con server concorrente e client Java e Android TESTI/BIBLIOGRAFIA The Art of Multiprocessor Programming - Herlihy, Shavit Concurrent Programming: Algorithms, Principles and Foundations: M. Raynal Programmazione concorrente e distribuita - Crafa Android Developer: http://developer.android.co DOCENTI E COMMISSIONI GIORGIO DELZANNO Commissione d'esame GIORGIO DELZANNO (Presidente) GIOVANNI CHIOLA MARINA RIBAUDO LEZIONI INIZIO LEZIONI 25 settembre 2017 Orari delle lezioni PROGRAMMAZIONE CONCORRENTE E ALGORITMI DISTRIBUITI ESAMI MODALITA' D'ESAME Prova scritta e progetto finale MODALITA' DI ACCERTAMENTO Correzione e discussione dello scritto e discussione progetto Calendario appelli Data appello Orario Luogo Tipologia Note 04/02/2019 09:00 GENOVA Scritto 14/06/2019 09:00 GENOVA Scritto 01/07/2019 09:00 GENOVA Scritto 18/07/2019 09:00 GENOVA Scritto 11/09/2019 09:00 GENOVA Scritto 03/02/2020 09:00 GENOVA Scritto