PROGRAMMAZIONE CONCORRENTE E ALGORITMI DISTRIBUITI

PROGRAMMAZIONE CONCORRENTE E ALGORITMI DISTRIBUITI

_
iten
Codice
80302
ANNO ACCADEMICO
2017/2018
CFU
9 cfu al 2° anno di 8759 INFORMATICA (L-31) GENOVA
SETTORE SCIENTIFICO DISCIPLINARE
INF/01
LINGUA
Italiano
SEDE
GENOVA (INFORMATICA )
periodo
2° Semestre
materiale didattico

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.

Modalità 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)

MARINA RIBAUDO

GIOVANNI CHIOLA

LEZIONI

Modalità didattiche

Tradizionale: Lezioni in classe ed esercitazioni guidate in laboratorio.

INIZIO LEZIONI

25 settembre 2017

ORARI

L'orario di tutti gli insegnamenti è consultabile su EasyAcademy.

Vedi anche:

PROGRAMMAZIONE CONCORRENTE E ALGORITMI DISTRIBUITI

ESAMI

Modalità d'esame

Prova scritta e progetto finale

Modalità di accertamento

Correzione e discussione dello scritto e discussione progetto