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/2026

Il 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.

CURRICULUM TIPO:

2° Anno   Attivato nell'A.A. 2025/2026

InsegnamentiCreditiTAFSSD
3 modules among the following 
(A.A. 2025/2026 Internet of medical things not activated)
6
C
ING-INF/04 ,MED/50
6
C
ING-INF/06 ,MED/37
Attivato nell'A.A. 2025/2026
InsegnamentiCreditiTAFSSD
3 modules among the following 
(A.A. 2025/2026 Internet of medical things not activated)
6
C
ING-INF/04 ,MED/50
6
C
ING-INF/06 ,MED/37
Insegnamenti Crediti TAF SSD
Tra gli anni: 1°- 2°
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
6
B
ING-INF/05
6
B
ING-INF/04
Tra gli anni: 1°- 2°
Tra gli anni: 1°- 2°
Further activities
6
F
-

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.




S Stage e tirocini presso imprese, enti pubblici o privati, ordini professionali

Codice insegnamento

4S012362

Crediti

6

Coordinatore

Antonio Faccioli

Lingua di erogazione

Inglese en

Settore Scientifico Disciplinare (SSD)

INF/01 - INFORMATICA

Corsi Singoli

Autorizzato

L'insegnamento è organizzato come segue:

Part 2
Attività mutuata da Cloud computing and distributed systems - Part 2 del corso: Laurea magistrale in Computer Engineering for intelligent Systems

Crediti

3

Periodo

II semestre

Docenti

Antonio Faccioli

Part 1
Attività mutuata da Cloud computing and distributed systems - Part 1 del corso: Laurea magistrale in Computer Engineering for intelligent Systems

Crediti

3

Periodo

II semestre

Docenti

Antonio Faccioli

Obiettivi di apprendimento

Il corso si propone di fornire i concetti fondamentali dei sistemi per l'elaborazione di grandi quantità di dati, insieme ai paradigmi di programmazione adottati da tali sistemi, e agli strumenti su cloud utilizzati per creare una pipeline di elaborazione. Al termine del corso lo studente avrà acquisito le conoscenze necessarie per valutare le possibili alternative nella progettazione dell'analisi di grandi moli di dati, considerando i benefici e le limitazioni dei diversi approcci. Queste conoscenze consentiranno allo studente di: progettare soluzioni per analizzare grandi moli di dati; valutare le risorse necessarie per le soluzioni progettate; configurare sistemi utilizzando risorse locali o cloud; proseguire gli studi in modo autonomo nell’ambito dello sviluppo di analisi avanzate di grandi moli di dati.

Prerequisiti e nozioni di base

Nessuno

Programma

Teoria dei sistemi distribuiti
Fondamenti e tassonomia dei sistemi distribuiti; modelli di comunicazione tra processi (RPC, gRPC); tempo e sincronizzazione (orologi logici e fisici); algoritmi di elezione del leader e protocolli di consenso (Raft); modelli di coerenza dei dati e teorema CAP.

Architettura e virtualizzazione dei data center
Organizzazione fisica di un data center: rack, domini di errore e topologia di rete. Evoluzione dalla virtualizzazione bare-metal alla virtualizzazione basata su hypervisor (Tipo 1 vs Tipo 2). Confronto tra macchine virtuali e container: condivisione del kernel, prestazioni e compromessi di isolamento. Proxmox VE come piattaforma hypervisor di Tipo 1: provisioning di macchine virtuali basato su KVM, gestione dei container LXC, pool di storage e configurazione del bridge di rete.

Containerizzazione con Docker
Architettura interna di Docker (Namespace, Cgroup, Layering); gestione di immagini, reti e volumi persistenti; strategie di ottimizzazione del ciclo di vita del software tramite build multi-stadio; orchestrazione dichiarativa multi-container con Docker Compose.

Orchestrazione con Kubernetes
Architettura del cluster (Control Plane e nodi worker); gestione dichiarativa delle risorse tramite file di configurazione (YAML); astrazioni fondamentali (Pods, Deployment, Service, ConfigMaps, Secrets); storage persistente (PersistentVolumes e PersistentVolumeClaims); meccanismi di Service Discovery, bilanciamento del carico e Ingress. Ruolo di Proxmox come livello infrastrutturale per cluster Kubernetes on-premise: creazione di nodi worker basati su VM tramite kubeadm, installazione del plugin CNI e gestione del ciclo di vita del cluster. Confronto tra Kubernetes self-hosted su Proxmox e offerte gestite in cloud (AKS, EKS, GKE): compromessi operativi, modelli di costo e vendor lock-in.

Database NoSQL e distribuiti
Tassonomia dei database non relazionali: modelli a documenti, chiave-valore, famiglia di colonne e grafo. Compromessi di coerenza nei database distribuiti analizzati attraverso la lente del teorema CAP. Implementazione e interazione con sistemi NoSQL su infrastrutture containerizzate.

Archiviazione distribuita e paradigma MapReduce
Architettura di file system distribuiti (HDFS): NameNode, DataNode e strategie di replica. Il modello di programmazione MapReduce: fasi di map, shuffle e reduce. Panoramica dell'ecosistema Hadoop. L'archiviazione di oggetti come alternativa cloud-native: il protocollo S3 e il suo ruolo nelle architetture di data lake.

Elaborazione di Big Data con Apache Spark
Motivazioni per l'elaborazione in memoria rispetto a MapReduce basato su disco. Architettura di Spark: Driver, Executors e SparkContext. Resilient Distributed Datasets (RDD) rispetto ai DataFrame. Valutazione lazy, trasformazioni e azioni. Spark SQL, aggregazioni e join distribuiti. Introduzione a Spark MLlib per pipeline di machine learning distribuite. Implementazione di workload Spark su Kubernetes tramite spark-submit.

Sistemi IoT e protocolli distribuiti
Architettura di riferimento IoT: livello di percezione, livello di rete e livello applicativo. Edge computing, fog computing e cloud computing: compromessi tra latenza, larghezza di banda e capacità di elaborazione lungo tutto il continuum computazionale. Programmazione di dispositivi con risorse limitate: modello di broker MQTT e livelli di QoS, CoAP per la semantica RESTful su hardware con risorse limitate e AMQP per la messaggistica aziendale. Sfide di sicurezza nelle implementazioni IoT: autenticazione dei dispositivi, crittografia end-to-end e gestione della flotta su larga scala. Progettazione di pipeline end-to-end dal sensore alla dashboard: broker MQTT containerizzati, elaborazione di flussi con Spark Structured Streaming, archiviazione di serie temporali con InfluxDB e Prometheus e visibilità operativa tramite Grafana.

Osservabilità e modelli di intelligenza artificiale
Metriche, log e tracce come i tre pilastri dell'osservabilità. Architettura Prometheus (scraping basato su pull) e PromQL per l'analisi delle metriche del cluster. Dashboard Grafana per la visibilità operativa. Modelli di distribuzione dei modelli: containerizzazione dei modelli scikit-learn e FastAPI, esposizione di endpoint di inferenza REST su Kubernetes e gestione del versioning dei modelli.

Modalità didattiche

- Lezioni frontali: esposizione dei modelli teorici dei sistemi distribuiti, della logica di coordinamento e delle tecniche di isolamento tramite container. Le sessioni teoriche prevedono l'utilizzo di strumenti digitali interattivi per favorire il confronto immediato in aula e verificare il grado di apprendimento dei concetti trattati.
- Esercitazioni metodologiche: sessioni dedicate alla risoluzione di problemi di sincronizzazione, analisi dei modelli di coerenza e algoritmi di consenso.
- Laboratorio informatico: implementazione pratica dei modelli progettati tramite ambiente di containerizzazione.

Modalità di verifica dell'apprendimento

Discussione di un progetto elaborato dagli studenti e concordato con il docente.
Ulteriori dettagli verranno forniti durante il corso e pubblicati su Moodle.

Le/gli studentesse/studenti con disabilità o disturbi specifici di apprendimento (DSA), che intendano richiedere l'adattamento della prova d'esame, devono seguire le indicazioni riportate QUI

Criteri di valutazione

Rigore metodologico nella progettazione
Capacità di tradurre i requisiti di un'applicazione in un modello distribuito coerente e isolato tramite container, dimostrando padronanza delle regole di derivazione per i sistemi a microservizi.

Padronanza di linguaggi e strumenti
Correttezza sintattica e logica nell'uso di gRPC per la comunicazione, Docker per la gestione della persistenza e del packaging del software, manifest di Kubernetes (YAML) per l'orchestrazione e Proxmox per la virtualizzazione dell'infrastruttura.

Progettazione di sistemi Big Data
Capacità di selezionare il modello di storage e di elaborazione distribuito appropriato (HDFS, NoSQL, Spark) in base ai requisiti dell'applicazione, giustificando i compromessi architetturali.

Progettazione di sistemi IoT
Capacità di progettare una pipeline end-to-end per l'acquisizione e l'elaborazione di dati IoT, selezionando protocolli appropriati (MQTT, CoAP) e strategie di implementazione lungo il continuum edge-fog-cloud.

Competenze di analisi e automazione
Capacità di strutturare flussi operativi complessi tramite codice, con particolare attenzione all'osservabilità, alla gestione della persistenza e alla risoluzione dei problemi in contesti cloud-native.

Terminologia tecnica
Uso corretto della terminologia tecnica specifica nel campo dell'ingegneria dei sistemi intelligenti e dei sistemi informativi distribuiti.

Risoluzione dei problemi
Capacità di applicare concetti teorici (come consenso, bilanciamento del carico o partizionamento dei dati) a casi di studio pratici derivati ​​da contesti professionali.

Criteri di composizione del voto finale

La prova vale al massimo 30 punti.
La lode sarà assegnata a chi avrà ottenuto un punteggio finale maggiore di 30.

Lingua dell'esame

Inglese

Sustainable Development Goals - SDGs

Questa iniziativa contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.
Maggiori informazioni su www.univr.it/sostenibilita