COMPUTING INFRASTRUCTURES FOR DATA SCIENCE

Vincenzo Lomonaco

Obiettivi formativi

Il corso introduce i concetti fondamentali delle infrastrutture computazionali per la data science. L'obiettivo è fornire agli studenti una solida comprensione delle architetture hardware e software, dei sistemi distribuiti, del cloud computing e degli strumenti per la gestione efficiente di dati su larga scala. Particolare attenzione è dedicata alla scalabilità, all'affidabilità, alle prestazioni e all'ottimizzazione delle risorse, mettendo gli studenti in grado di progettare e utilizzare moderne infrastrutture di calcolo per applicazioni data-intensive.

Prerequisiti

Conoscenze di base di programmazione (preferibilmente Python) e concetti introduttivi di informatica. È consigliata una familiarità con l'analisi dei dati e con l'uso di ambienti di sviluppo software.

Risultati di apprendimento attesi

Conoscenza e comprensione: Gli studenti acquisiranno conoscenza delle principali infrastrutture computazionali per la data science, incluse architetture di calcolo, sistemi di storage, sistemi distribuiti e paralleli, piattaforme cloud e framework per l'elaborazione dei dati. Capacità di applicare conoscenza e comprensione: Gli studenti saranno in grado di selezionare e utilizzare le infrastrutture e gli strumenti appropriati per i compiti di data science, configurare ambienti distribuiti e cloud di base, e gestire flussi di elaborazione dati in modo efficiente. Autonomia di giudizio: Gli studenti svilupperanno la capacità di valutare criticamente diverse soluzioni infrastrutturali, valutando i trade-off in termini di prestazioni, scalabilità, costi e affidabilità per specifiche applicazioni. Abilità comunicative: Gli studenti saranno in grado di comunicare chiaramente concetti tecnici relativi alle infrastrutture di calcolo, usando terminologia appropriata, anche in sede di presentazione del progetto finale. Capacità di apprendimento: Le conoscenze acquisite permetteranno agli studenti di aggiornarsi autonomamente e di adattarsi alle tecnologie in evoluzione.

Contenuti Del Corso

- Introduzione alle infrastrutture computazionali per la data science - Architetture hardware: CPU, GPU, acceleratori e gerarchie di memoria - Sistemi di storage e gestione dei dati - Modelli di calcolo distribuito e parallelo - Framework per l'elaborazione di big data: Hadoop e Apache Spark - Cloud computing: modelli di servizio (IaaS, PaaS, SaaS) e piattaforme - Containerizzazione e orchestrazione: Docker e Kubernetes - Scalabilità, affidabilità e tolleranza ai guasti - Valutazione e ottimizzazione delle prestazioni

Testi Di Riferimento

- T. White (2015), Hadoop: The Definitive Guide, O'Reilly Media - M. Zaharia et al. (2016), Spark: The Definitive Guide, O'Reilly Media - B. Burns et al. (2022), Kubernetes: Up and Running, O'Reilly Media - Slide, articoli scientifici e materiale didattico integrativo forniti durante il corso (disponibili su MyLuiss)

Metodologie Didattiche

Il corso si articola in lezioni frontali (24 ore totali, 2 ore a settimana per 12 settimane) ed esercitazioni pratiche di laboratorio aggiuntive. Le lezioni frontali coprono i contenuti teorici e concettuali del corso. Le sessioni di laboratorio aggiuntive, offrono agli studenti la possibilità di applicare concretamente le conoscenze acquisite attraverso l'utilizzo di strumenti e piattaforme reali (Docker, Hadoop, Spark, servizi cloud). Queste sessioni sono orientate allo sviluppo del progetto finale.

Modalità di verifica dell'apprendimento

La valutazione del corso avviene in forma di idoneità (superato/non superato). Il superamento dell'idoneità è subordinato alla realizzazione e alla presentazione orale di un progetto pratico, sviluppato autonomamente durante le sessioni di laboratorio aggiuntive nel corso del semestre. Il progetto deve dimostrare la capacità dello studente di progettare, implementare e valutare un'infrastruttura computazionale per un caso d'uso di data science, facendo uso degli strumenti trattati nel corso. La presentazione del progetto si svolge in forma orale, con supporto visivo (slide), al termine del semestre (settimana 12).

Criteri per l’assegnazione dell’elaborato finale

I temi dei progetti finali vengono proposti dal docente all'inizio del semestre e assegnati individualmente o in piccoli gruppi. I temi riguardano la progettazione e l'implementazione di soluzioni basate sulle infrastrutture computazionali trattate nel corso (es. pipeline di elaborazione dati con Apache Spark, deployment di un'applicazione su cloud, gestione di un cluster containerizzato con Kubernetes). L'assegnazione del tema avviene tenendo conto delle preferenze degli studenti e della coerenza con il percorso formativo. Il progetto è accompagnato da una presentazione orale (10-15 minuti). Criteri di valutazione: correttezza tecnica, qualità dell'implementazione, chiarezza della presentazione, capacità critica nella discussione delle scelte progettuali.

Settimana 1

Argomenti: Introduzione alle infrastrutture computazionali per la data science. Panoramica del corso, obiettivi e struttura. Motivazioni e scenari applicativi: perché l'infrastruttura è cruciale per la data science. Principi fondamentali di architettura dei sistemi informatici. Materiale didattico: Slide della lezione (MyLuiss). Lettura consigliata: Cap. 1 di Hadoop: The Definitive Guide.

Settimana 2

Argomenti: Architetture hardware – CPU, pipeline e gerarchie di memoria. Modelli di calcolo sequenziale. Colli di bottiglia nei sistemi data-intensive. Caching, prefetching e ottimizzazione dell'accesso alla memoria. Materiale didattico: Slide della lezione (MyLuiss).

Settimana 3

Argomenti: GPU e acceleratori hardware per l'intelligenza artificiale e la data science. Differenze architetturali tra CPU e GPU. Introduzione al calcolo parallelo massivo su GPU. Panoramica di acceleratori specializzati (TPU, FPGA). Materiale didattico: Slide della lezione (MyLuiss).

Settimana 4

Argomenti: Sistemi di storage – HDD, SSD, NAS, SAN. File system locali e distribuiti. Principi di gestione e ottimizzazione dell'accesso ai dati. Introduzione al concetto di data lake e data warehouse. Materiale didattico: Slide della lezione (MyLuiss).

Settimana 5

Argomenti: Modelli di calcolo distribuito. Architetture client-server e peer-to-peer. Comunicazione tra processi: RPC, REST, messaggistica. Principi di consistenza, disponibilità e partizione (teorema CAP). Materiale didattico: Slide della lezione (MyLuiss).

Settimana 6

Argomenti: Calcolo parallelo e paradigma MapReduce. Modelli di programmazione per sistemi distribuiti. Introduzione all'ecosistema Hadoop: HDFS, YARN, MapReduce. Materiale didattico: Slide della lezione (MyLuiss). Lettura consigliata: Cap. 2-3 di Hadoop: The Definitive Guide.

Settimana 7

Argomenti: Apache Hadoop – architettura approfondita di HDFS e YARN. Configurazione e gestione di un cluster Hadoop. Sessione di laboratorio aggiuntiva: installazione e utilizzo di Hadoop in ambiente virtualizzato. Materiale didattico: Slide della lezione e guide di laboratorio (MyLuiss). Lettura consigliata: Cap. 4-6 di Hadoop: The Definitive Guide.

Settimana 8

Argomenti: Apache Spark – architettura, RDD, DataFrame e Spark SQL. Confronto tra Spark e Hadoop MapReduce. Sessione di laboratorio aggiuntiva: elaborazione dati con PySpark. Materiale didattico: Slide della lezione e guide di laboratorio (MyLuiss). Lettura consigliata: Cap. 1-5 di Spark: The Definitive Guide.

Settimana 9

Argomenti: Cloud computing – modelli di servizio (IaaS, PaaS, SaaS) e modelli di deployment (pubblico, privato, ibrido). Principali piattaforme cloud: AWS, Microsoft Azure, Google Cloud Platform. Sessione di laboratorio aggiuntiva: creazione e configurazione di un ambiente cloud. Materiale didattico: Slide della lezione e guide di laboratorio (MyLuiss).

Settimana 10

Argomenti: Servizi cloud per la data science – storage object (S3, Blob), calcolo on-demand, machine learning as a service. Costi, ottimizzazione e governance del cloud. Sessione di laboratorio aggiuntiva: utilizzo di servizi cloud per pipeline di dati. Materiale didattico: Slide della lezione e guide di laboratorio (MyLuiss).

Settimana 11

Argomenti: Containerizzazione con Docker – immagini, container, Dockerfile. Orchestrazione con Kubernetes – pod, deployment, service. Principi di architettura a microservizi. Sessione di laboratorio aggiuntiva: deployment di applicazioni containerizzate, avanzamento del progetto finale. Materiale didattico: Slide della lezione e guide di laboratorio (MyLuiss). Lettura consigliata: Cap. 1-4 di Kubernetes: Up and Running.

Settimana 12

Argomenti: Scalabilità, affidabilità e tolleranza ai guasti nei sistemi distribuiti. Valutazione delle prestazioni e ottimizzazione delle infrastrutture. Riepilogo del corso. Sessione di laboratorio aggiuntiva: completamento e presentazione dei progetti finali. Gli studenti presentano il proprio progetto (10-15 minuti) con supporto di slide. Materiale didattico: Slide della lezione (MyLuiss).