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). Obiettivo principale del corso è indicare le metodologie e fornire gli strumenti di programmazione che permettano agli studenti di progettare e realizzare delle applicazioni concorrenti multithreaded corrette, quindi prive di interferenze e corse critiche. Le principali conoscenze acquisite saranno: - motivazioni alla base della programmazione concorrente; - conoscenza dei principali costrutti della programmazione concorrente (semafori e monitor); - conoscenza degli strumenti di programmazione concorrente nel linguaggio 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 e distribuite in vari linguaggi di programmazione.

Prerequisiti

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

Metodi didattici

Il corso è principalmente costituito da lezioni in aula. Alcune esercitazioni verranno svolte in laboratorio per aiutare gli studenti a familiarizzare con linguaggi e framework di sviluppo. Le lezioni saranno anche video registrate e quindi caricate sul sito classroom (codice: u2cv7spr). Ricevimento studenti su appuntamento, inviare richiesta al docente via mail. 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 (codice: u2cv7spr).

Contenuti

Il corso prevede 64 ore di didattica tra lezioni ed esercitazioni in laboratorio. Introduzione alla programmazione concorrente (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 (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 (20 ore): I costrutti di base del linguaggio - Le concurrency utilities - Progetto e sviluppo di applicazioni concorrenti multithreaded in Java. Strumenti AI a supporto della programmazione: prompt engineering, chatGPT e Copilot. (4 ore)

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