Salta al contenuto principale
CODICE 80302
ANNO ACCADEMICO 2018/2019
CFU
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

Commissione d'esame

GIORGIO DELZANNO (Presidente)

GIOVANNI CHIOLA

MARINA RIBAUDO

LEZIONI

INIZIO LEZIONI

25 settembre 2017

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