Studiare
In questa sezione è possibile reperire le informazioni riguardanti l'organizzazione pratica del corso, lo svolgimento delle attività didattiche, le opportunità formative e i contatti utili durante tutto il percorso di studi, fino al conseguimento del titolo finale.
Piano Didattico
Queste informazioni sono destinate esclusivamente agli studenti e alle studentesse già iscritti a questo corso.Se sei un nuovo studente interessato all'immatricolazione, trovi le informazioni sul percorso di studi alla pagina del corso:
Laurea magistrale in Computer Engineering for intelligent Systems - Immatricolazione dal 2025/2026Il piano didattico è l'elenco degli insegnamenti e delle altre attività formative che devono essere sostenute nel corso della propria carriera universitaria.
Selezionare il piano didattico in base all'anno accademico di iscrizione.
1° Anno
Insegnamenti | Crediti | TAF | SSD |
---|
2° Anno Sarà attivato nell'A.A. 2025/2026
Insegnamenti | Crediti | TAF | SSD |
---|
3 modules among the following
Insegnamenti | Crediti | TAF | SSD |
---|
Insegnamenti | Crediti | TAF | SSD |
---|
3 modules among the following
Insegnamenti | Crediti | TAF | SSD |
---|
4 modules among the following:
- 1st year: Advanced visual computing and 3d modeling, Computer vision, Embedded & IoT systems design, Embedded operating systems, Robotics
- 2nd year: Advanced control systems
Legenda | Tipo Attività Formativa (TAF)
TAF (Tipologia Attività Formativa) Tutti gli insegnamenti e le attività sono classificate in diversi tipi di attività formativa, indicati da una lettera.
Computer architectures and programming for intelligent systems (2024/2025)
Codice insegnamento
4S012351
Docente
Coordinatore
Crediti
6
Offerto anche nei corsi:
- Advanced computer architectures del corso Laurea magistrale in Computer Engineering for Robotics and Smart Industry
Lingua di erogazione
Inglese
Settore Scientifico Disciplinare (SSD)
ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Periodo
I semestre dal 1 ott 2024 al 31 gen 2025.
Corsi Singoli
Autorizzato
Obiettivi di apprendimento
Il corso si propone di fornire conoscenze teoriche e pratiche sulle architetture di calcolo per sistemi intelligenti e sui corrispondenti linguaggi di programmazione, con particolare attenzione alle piattaforme eterogenee per il continuum Edge-Cloud. Al termine del corso lo studente dovrà dimostrare di saper applicare le conoscenze necessarie per individuare tecniche di programmazione software avanzata per sistemi intelligenti, anche in un contesto di ricerca, attraverso l'analisi dell'efficienza applicativa e considerando vincoli di progettazione sia funzionali che extra-funzionali (es. correttezza, prestazioni, consumo energetico, efficienza energetica). Questa conoscenza consentirà allo studente di analizzare le prestazioni ed eseguire il code profiling, individuando le zone critiche e le relative ottimizzazioni e considerando le caratteristiche architetturali della piattaforma di calcolo. Al termine del corso, gli studenti dimostreranno la capacità di confrontare modelli per lo sviluppo software avanzato e di selezionare quello migliore considerando il caso d'uso. Definendo la struttura del codice ottimizzato, lo studente dimostrerà la capacità di identificare le scelte architetturali appropriate, considerando i contesti dell'applicazione e della piattaforma di destinazione. Infine, lo studente dovrà dimostrare la capacità di proseguire autonomamente lo studio nel campo delle architetture informatiche e dei linguaggi di programmazione per sistemi intelligenti.
Prerequisiti e nozioni di base
Programmazione di base
Architetture degli elaboratori di base
Programma
Modulo TEORIA (24 ore):
-) Introduzione alle architetture avanzate di calcolo.
-) Modelli di programmazione parallela e per architetture programmabili at-the-edge.
-) Misura e analisi delle prestazioni, legge di Amdhal e metriche per la misura delle prestazioni.
-) Consumi di potenza ed efficienza energetica: modelli di programmazione
-) Data-level parallelism: architetture GPU e CPU-iGPU
-) Pipeline: concetti base ed avanzati.
-) Instruction-level parallelism (ILP).
-) Tecniche avanzate di branch prediction, static scheduling e speculation.
-) Gerarchie di memoria: concetti base ed avanzati.
-) Tecniche avanzate per l'ottimizzazione delle performance della cache.
-) Thread-level parallelism (TLP).
-) Coerenza della cache in architetture shared-memory, protocolli Snoopy.
-) Edge computing e Deep Learning at the edge
Modulo LABORATORIO (24 ore):
-) Programmazione architetture eterogenee (CPU-iGPU)
-) Utilizzo di compilatori paralleli per architetture multi-core.
-) Inferenza basata su CNN e transfer learning at the edge
Bibliografia
Modalità didattiche
Lezioni frontali per teoria
Lezioni frontali e sviluppo codice per lab
Modalità di verifica dell'apprendimento
Esercizi a risposta libera per la parte di teoria, sviluppo codice per la parte di lab. Tempo totale 2 ore.
Criteri di valutazione
Per superare l'esame lo studente dovrà dimostrare di:
- aver compreso i principi alla base della programmazione di sistemi intelligenti;
- essere in grado di esporre le proprie argomentazioni in modo preciso e organico senza divagazioni;
- saper applicare le conoscenze acquisite per risolvere problemi applicativi presentati sotto forma di esercizi, domande e progetti.
Criteri di composizione del voto finale
L'esame consiste in una prova scritta, contenente domande a risposta multipla, domande a risposta aperta ed esercizi riguardanti sia la parte teorica che di laboratorio. Lo studente potrà elaborare un progetto assegnato dal docente per un bonus (fino a +5 punti).
Lingua dell'esame
English