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

L'insegnamento introduce concetti di base legati ad architetture multicore, multithreading nei sistemi operativi e nella programmazione  di algoritmi ed architetture di base per sistemi  distribuiti.

L'insegnamento ha una parte di teoria in classe e una serie di laboratori.

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: aspetti di architetture, sistemi operativi e software e degli algoritmi distribuiti.

La parte di teoria inoltre mostra diversi livelli di astrazione attraverso lo studio di librerie a basso livello e ad alto livello.

La parte di teoria presenterà anche metodi per la verifica automatica di sistemi concorrenti.

I laboratori sono mirati a costruire vari sistemi distribuiti e risolvere in pratica problemi di concorrenza.

Questo corso offrirà in più la possibilità di assegnare agli studenti che lo desiderano i seguenti Open Badge:

  • Competenza alfabetica funzionale - livello avanzato
  • Competenza sociale – livello base
  • Capacità di imparare a imparare - livello avanzato

Gli studenti che vogliono ottenere gli open badge dovranno preparare una presentazione di due laboratori svolti in gruppo e correggere due laboratori di altri gruppi.

 

PREREQUISITI

  • Programmazione in Linguaggio Java/C
  • Sistemi Operativi 
  • Programmazione rete
  • Concetti di Base di Reti di Calcolatori


 

MODALITA' DIDATTICHE

  • Lezioni frontali di teoria
  • Esercitazioni in classe
  • Esercitazioni di laboratorio

 

PROGRAMMA/CONTENUTO

  • Concorrenza nel SO e in sistemi multithreading
  • Introduzione alla Programmazione Concorrente
  • Introduzione pratica alla concorrenza
  • Librerie di sincronizzazione standard come mutex e barriere
  • Semafori e monitorss
  • Introduzione ad Algoritmi Distribuiti
  • Programmazione concorrente distribuita in rete
  • Introduzione alla teoria del model-checking

 

 

TESTI/BIBLIOGRAFIA

  • Lucidi e note del docente messe a disposizione su Aulaweb
  • Materiale online
  • The Art of Multiprocessing Programming. M. Herlihy and N. Shavit. 
  • Principles of Concurrent and Distributed Programming - Mordechai Ben-Ari

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 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 fatti 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 usare i concetti visti in pratica.

Calendario appelli

Data appello Orario Luogo Tipologia Note
09/01/2025 09:00 GENOVA Scritto
10/02/2025 09:00 GENOVA Scritto
09/06/2025 09:00 GENOVA Scritto
02/07/2025 09:00 GENOVA Scritto
19/09/2025 09:00 GENOVA Scritto

Agenda 2030

Agenda 2030
Istruzione di qualità
Istruzione di qualità