Skip to Main Content (Press Enter)

Logo UNIFE
  • ×
  • Home
  • Corsi
  • Insegnamenti
  • Professioni
  • Persone
  • Pubblicazioni
  • Strutture

UNI-FIND
Logo UNIFE

|

UNI-FIND

unife.it
  • ×
  • Home
  • Corsi
  • Insegnamenti
  • Professioni
  • Persone
  • Pubblicazioni
  • Strutture
  1. Insegnamenti

54246 - PROGRAMMAZIONE CONCORRENTE

insegnamento
ID:
54246
Tipo Insegnamento:
Opzionale
Durata (ore):
64
CFU:
8
SSD:
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Url:
Dettaglio Insegnamento:
INGEGNERIA INFORMATICA E DELL’AUTOMAZIONE/Percorso Comune Anno: 1
Dettaglio Insegnamento:
INGEGNERIA INFORMATICA E DELL’AUTOMAZIONE/Percorso Comune Anno: 2
Anno:
2025
  • Dati Generali
  • Syllabus
  • Corsi
  • Persone

Dati Generali

Periodo di attività

Primo Semestre (22/09/2025 - 17/12/2025)

Syllabus

Obiettivi Formativi

Il corso affronta il tema della programmazione concorrente, di fondamentale importanza per la realizzazione di applicazioni multithreaded che possano garantire elevate prestazioni sulle macchine multiprocessore (o multicore) e nei moderni sistemi distribuiti (come lo stesso Web). Le principali conoscenze acquisite saranno: motivazioni alla base della programmazione concorrente; principali costrutti della programmazione concorrente (semafori e monitor); metodologie e soluzioni per il progetto di applicazioni concorrenti multithreaded corrette, quindi prive di interferenze e corse critiche; la programmazione concorrente in Java. Le principali abilità (cioè la capacità di applicare le conoscenze sopra descritte): analisi dei requisiti di un progetto software multithreaded per identificare le criticità ai fini di una corretta gestione della concorrenza; capacità di progettazione di sistemi software concorrenti; capacità di sviluppare applicazioni concorrenti nel linguaggio Java.

Prerequisiti

Il corso richiede la conoscenza approfondita dei linguaggi C e Java.

Metodi didattici

Il corso è organizzato nel seguente modo: lezioni in aula su tutti gli argomenti del corso (circa 56 ore) (le lezioni saranno anche registrate e i video caricati sul Classroom del corso); esercitazioni nel laboratorio di informatica per la progettazione e realizzazione di applicazioni concorrenti in Java (circa 8 ore) (ogni studente avrà a disposizione una macchina per svolgere singolarmente le esercitazioni assegnate, sotto la supervisione del docente). Ricevimento studenti il martedì alle 14:30. L'ufficio del prof. Stefanelli si trova in fondo al corridoio di sinistra del primo piano (piano giallo) del Dipartimento di Ingegneria.

Verifica Apprendimento

L'esame vuole verificare il livello di raggiungimento degli obiettivi formativi sopra indicati ed è costituito da una prova orale, nel corso della quale si verificherà la preparazione dello studente mediante: risoluzione di un problema di programmazione concorrente da svolgere con i costrutti visti nel corso, i.e., Monitor e/o i costrutti Java; verifica della preparazione sulla parte di teoria di programmazione concorrente. Si prevedono appelli orali con frequenza settimanale. Per non interferire con le lezioni, durante i periodi di lezione saranno disponibili appelli riservati ai soli studenti fuori corso. Le date vengono inserite poco per volta, nel Servizio Web di iscrizione alle liste di esame (è obbligatorio iscriversi via Web). Scrivere al docente per avere ulteriori informazioni e appelli. Gli esami saranno svolti solo in presenza.

Testi

I principali testi di riferimento sono: P. Ancilotti, M. Boari, Programmazione concorrente e distribuita, McGraw-Hill, 2007. J. Magee, J. Kramer, Concurrency, State Models and Java programs, second edition, Wiley, 2006. G. Andrews, Foundations of multithreaded, parallel, and distributed programming, Addison Wesley, 2000. S. Oaks, H. Wong, Java Threads, third edition, O’Reilly, 2004. D. Lea, Concurrent Programming in Java, Addison-Wesley, 1999. La copia delle slide presentate a lezione saranno disponibili sul sito Classroom.

Contenuti

Il corso prevede 64 ore di didattica tra lezioni ed esercitazioni in laboratorio. Introduzione alla programmazione concorrente (circa 16 ore): motivazioni, definizioni, problematiche; concorrenza e parallelismo; modelli di processo ad ambiente globale e locale; il problema della sincronizzazione dei processi in ambiente globale; i thread in Java. I principali costrutti per la sincronizzazione dei processi (circa 24 ore): semafori, regioni critiche e monitor; esempi di applicazioni concorrenti (produttore/consumatore, lettori/scrittori, filosofi); safety e liveness di un'applicazione concorrente; il problema del deadlock. La programmazione concorrente in Java (circa 16 ore, di cui circa 8 in laboratorio): i costrutti di base del linguaggio; le concurrency utilities; progetto e sviluppo di applicazioni concorrenti multithreaded in Java. Ciclo di seminari su strumenti AI a supporto della programmazione (8 ore): prompt engineering, chatGPT e Copilot.

Lingua Insegnamento

ITALIANO

Corsi

Corsi

INGEGNERIA INFORMATICA E DELL’AUTOMAZIONE 
Laurea Magistrale
2 anni
No Results Found

Persone

Persone

STEFANELLI Cesare
AREA MIN. 09 - Ingegneria industriale e dell'informazione
Gruppo 09/IINF-05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Settore IINF-05/A - Sistemi di elaborazione delle informazioni
Docenti di ruolo di Ia fascia
No Results Found
  • Utilizzo dei cookie

Realizzato con VIVO | Designed by Cineca | 25.8.0.1