Dettaglio insegnamento

SISTEMI DISTRIBUITI E BIG DATA

MF0651

Insegnamento
SISTEMI DISTRIBUITI E BIG DATA
Codice
MF0651
Anno Accademico
2023/2024
Anno regolamento
2023/2024
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 prima parte, 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 seconda parte, il libro di riferimento è quello scaricabile al seguente link: https://iris.uniupo.it/handle/11579/140999.

Per la terza parte, 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.
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 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 avrà appreso le conoscenze per il raggiungimento degli obiettivi formativi, nel modo misurato dal voto d'esame. In particolare, lo studente 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.
Modalità di verifica dell'apprendimento
Esame scritto ed esercitazioni pratiche.
Nell’esame scritto, lo studente deve dimostrare di aver appreso i concetti e le metodologie presentate durante il corso.
Nell’esercitazione pratica, lo studente deve dimostrare di avere familiarità con i framework, le piattaforme e i tool presentati durante il corso.

Programma esteso
Il corso si compone di tre parti.
Prima parte (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.
Seconda parte (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.

Terza parte (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 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 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 avrà appreso le metodologie per la progettazione e realizzazione di sistemi e applicazioni per Big Data. Nello specifico, lo studente 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 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 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 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