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

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 tutti gli insegnamenti è consultabile all'indirizzo 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

Dati Ora Luogo Tipologia Note
11/01/2024 09:00 GENOVA Scritto
08/02/2024 09:00 GENOVA Scritto
07/06/2024 09:00 GENOVA Scritto
03/07/2024 09:00 GENOVA Scritto
16/09/2024 09:00 GENOVA Scritto