Dettaglio insegnamento

SISTEMI DISTRIBUITI E BIG DATA

MF0651

Insegnamento
SISTEMI DISTRIBUITI E BIG DATA
Codice
MF0651
Anno Accademico
2025/2026
Anno regolamento
2025/2026
Corso di studio
INTELLIGENZA ARTIFICIALE E INNOVAZIONE DIGITALE
Curriculum
000 - 000-GENERICO
Responsabile didattico
CFU
12
Ore di lezione
96
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OPZ - Opzionale
Anno
1
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Lingua insegnamento
Italiano
Contenuti
Principi e soluzioni tecniche e metodologiche per la progettazione e la gestione di sistemi, architetture, e applicazioni distribuite per l’analisi dei Big Data.
Testi di riferimento
Per la parte "Big Data Systems", non c'è un libro di testo di riferimento specifico. Il materiale di studio si basa su articoli scientifici, documentazione tecnica e altro materiale fornito dal docente.
Tuttavia, i libri di testo elencati di seguito coprono una buona parte degli argomenti trattati nella prima parte del corso:
* M. van Steen e A.S. Tanenbaum, "Distributed Systems, 4th ed.," 2023 (scaricabile gratuitamente dal sito web: https://www.distributed-systems.net).
* M. Kleppman, "Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems," O'Reilly, 2017.
* J. S. Damji, B. Wenig, T. Das, e D. Lee, "Learning Spark: Lightning-Fast Data Analytics, 2/E," O'Reilly, 2020.

Per la parte "Rust Programming" non c'e' un libro di riferimento: il docente fornirà tutto il materiale attraverso le slide, i suoi appunti e link a materiale in rete.

Per la parte "Cloud Computing", il libro di riferimento è quello scaricabile al seguente link: https://iris.uniupo.it/handle/11579/140999.
Obiettivi formativi
Il corso ha l’obiettivo di illustrare i principi e le attuali soluzioni tecniche e metodologiche per la progettazione e la gestione di sistemi, architetture, e applicazioni distribuite per l’analisi dei Big Data. In particolare, il corso affronta le diverse problematiche inerenti all’acquisizione, memorizzazione e processamento dei Big Data, presentando le principali soluzioni (hardware e software) che sono state proposte per la loro gestione. Il corso inoltre introduce il linguaggio di programmazione Rust e le peculiarità che lo rendono adatto al processamento di Big Data. Il corso prevede esercitazioni di laboratorio al fine di poter combinare gli aspetti metodologici e tecnologici visti in classe.

* Conoscenze:
Al termine del corso, lo studente/la studentessa avrà appreso i principi e le principali soluzioni tecniche e metodologiche per la progettazione e la gestione di sistemi, architetture, e applicazioni distribuite per l’analisi dei Big Data nonché concetti avanzati di programmazione in particolare relazione con l’analisi statica (attraverso i tipi) della memoria.

* Competenze ed abilità:
Al termine del corso, lo studente/la studentessa avrà appreso le conoscenze per il raggiungimento degli obiettivi formativi, nel modo misurato dal voto d'esame. In particolare, lo studente/la studentessa sarà in grado di approfondire autonomamente argomenti inerenti ai sistemi e alle architetture per Big Data, e di utilizzare tali conoscenze per valutare in maniera critica sistemi e applicazioni esistenti, e affrontare nuovi problemi, e valutare l’appropriatezza della loro implementabilità in Rust.
Prerequisiti
Fondamenti di programmazione, basi di dati e sistemi operativi.
Metodi didattici
Lezioni frontali ed esercitazioni di laboratorio.
Altre informazioni
Non sono previste prove in itinere.

Le studentesse e gli studenti con disabilità o con Disturbi Specifici dell’Apprendimento (DSA) o con Bisogni Educativi Speciali (BES) possono richiedere servizi e strumenti specifici a loro dedicati rivolgendosi allo Staff "Sviluppo e Coordinamento Carriere e Servizi alle Studentesse e agli Studenti" e consultando la pagina dedicata del sito di Ateneo: https://uniupo.it/it/servizi/servizi-studenti-disabili-e-dsa
Le studentesse e gli studenti con disabilità, DSA, BES, una volta preso contatto con lo Staff di Ateneo, possono contattare la/il docente titolare dell'insegnamento in relazione alla declinazione delle modalità di esame, in merito agli aspetti didattici.
Modalità di verifica dell'apprendimento
La valutazione finale viene stabilita collegialmente dai docenti del corso tenendo conto delle conoscenze e competenze acquisite dalla studentessa/dallo studente verificate attraverso le risposte a una serie di domande teoriche ed esercizi sugli argomenti della parte di "Big Data Systems", lo sviluppo di 7 o 8 esercizi pratici con relativa discussione sugli argomenti trattati nella parte "Rust Programming”, e una discussione orale e la consegna di un esercizio per la parte "Cloud Computing”: su ciascuna delle tre componenti occorre superare una soglia minima.
In particolare, per la parte di "Big Data Systems", ad ogni domanda è associato un punteggio espresso in trentesimi; per raggiungere la sufficienza è necessario ottenere almeno 18 punti, mentre il superamento di 30 punti consente di raggiungere il punteggio di 30 e lode.
Per la parte di "Rust Programming", la sufficienza è raggiunta se lo studente/la studentessa dimostra di aver eseguito in autonomia gli esercizi. Questo viene controllato con una discussione in cui si chiede allo studente/alla studentessa di sviluppare una variazione di alcuni degli esercizi svolti commentandone i punti salienti. I voti poi sono graduati considerando lo stile di programmazione.
Per la parte "Cloud Computing” lo studente deve rispondere ad una serie di domande per raggiungere il voto di 25/30 mentre la consegna e discussione dell'esercizio proposto, può portarlo al voto di 30/30 con lode.
Nella valutazione finale, la parte di "Big Data Systems" pesa per il 50%, quella di "Rust Programming" per il 25%, e infine quella di "Cloud Computing" per il 25%, in coerenza con il numero di CFU erogati per le tre parti.
Programma esteso
Il corso si compone di tre parti:

1. Parte "Big Data Systems" (6 CFU):
- Introduzione ai Big Data: motivazioni, principi e problematiche.
- Sistemi per l'acquisizione dei dati.
- File system e data store distribuiti.
- Sistemi per la gestione di risorse di cluster computazionali.
- Sistemi e framework per il processamento di batch di dati.
- Sistemi e framework per il processamento di flussi di dati.

2. Parte "Rust Programming" (3 CFU):
- Introduzione al Cloud Computing.
- Teoria e pratica su Google Cloud Platform.
- Teoria e pratica su Amazon Web Services.
- Teoria e pratica su OpenStack.

3. Parte "Cloud Computing" (3 CFU):
Introduzione alla programmazione in Rust:
- Gestione della memoria automatica: ownership, borrowing e lifetime di riferimenti.
- Tipi di dato elementari e strutturati.
- Gestione degli errori e pattern di programmazione funzionale.
- Tipi generici e traits
- Multithreading
Risultati di apprendimento attesi
* Conoscenza e capacità di comprensione:
Al termine del corso, lo studente/la studentessa avrà appreso i concetti avanzati sulle architetture e sui sistemi distribuiti per l’analisi dei Big Data e sullo sviluppo di applicazioni software in tale contesto. Nello specifico, lo studente/la studentessa sarà in grado di realizzare applicazioni distribuite e scalabili per l’elaborazione batch e di data stream, e di gestire sistemi per l’acquisizione, la memorizzazione e il processamento di Big Data anche in ambito Cloud.

* Capacità di applicare conoscenza e comprensione:
Al termine del corso, lo studente/la studentessa avrà appreso le metodologie per la progettazione e realizzazione di sistemi e applicazioni per Big Data. Nello specifico, lo studente/la studentessa sarà in grado di progettare e sviluppare applicazioni distribuite, scalabili, sicure ed efficienti di batch processing e di data stream processing, usando i principali framework open source per l’acquisizione, il processamento e la memorizzazione di Big Data.

*Autonomia di giudizio
Al termine del corso, lo studente/la studentessa sarà in grado di identificare autonomamente le soluzioni più idonee per realizzare sistemi e applicazioni distribuite per l’analisi dei Big Data e di valutare sia le scelte architetturali e implementative, che le prestazioni di sistemi e applicazioni per Big Data esistenti.

* Abilità comunicative:
Al termine del corso, lo studente/la studentessa avrà acquisito la padronanza della terminologia più appropriata inerente ai sistemi e alle applicazioni per l’analisi di Big Data, sarà in grado di presentare l’architettura di un sistema per Big Data con termini e linguaggio tecnico consono e di argomentare in maniera critica riguardo alle varie alternative sia a livello sistemistico che applicativo.

* Capacità di apprendimento:
Al termine del corso, lo studente/la studentessa avrà acquisito le conoscenze metodologiche per approfondire autonomamente argomenti inerenti ai sistemi e alle architetture per Big Data, e di utilizzare tali conoscenze per valutare sistemi esistenti, affrontare nuovi problemi nonché valutare vantaggi e svantaggi della scelta di linguaggi di programmazione per l’implementazione.
Ultimo aggiornamento:09-09-2026 00:14:31