Insegnamento BIG DATA MANAGEMENT
- Corso
- Ingegneria informatica e robotica
- Codice insegnamento
- 70A00038
- Curriculum
- Comune a tutti i curricula
- Docente
- Fabrizio Montecchiani
- Docenti
-
- Fabrizio Montecchiani
- Ore
- 48 ore - Fabrizio Montecchiani
- CFU
- 6
- Regolamento
- Coorte 2020
- Erogato
- 2021/22
- Attività
- Caratterizzante
- Ambito
- Ingegneria informatica
- Settore
- ING-INF/05
- Tipo insegnamento
- Opzionale (Optional)
- Tipo attività
- Attività formativa monodisciplinare
- Lingua insegnamento
- Italiano.
- Contenuti
- -Introduzione ai Big Data
-Modelli e tecnologie di programmazione per computazioni distribuite
-Modelli dei dati e tecnologie NoSQL - Testi di riferimento
- La disciplina affronta un insieme di metodologie e tecnologie correlate che non sono contenute in un singolo libro di testo.
Al fine di facilitare lo studente, gli argomenti trattati a lezione sono illustrati in dispense a cura del docente.
In aggiunta, vengono consigliati alcuni testi di riferimento per approfondimenti sui vari argomenti del corso.
T. White, «Hadoop: The Definitive Guide», 3rd Edition, Yahoo Press.
R. Shaposhnik, C. Martella, D. Logothetis, «Practical Graph Analytics with Apache Giraph», Apress.
M. J. Fowler, P. J. Sadalage, «NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence», Addison-Wesley. - Obiettivi formativi
- L'insegnamento si prefigge di impartire agli studenti le nozioni teoriche e pratiche su modelli e tecnologie per il processamento e la gestione dei Big Data. In particolare, al termine del corso lo studente avrà acquisito:
- conoscenza del paradigma MapReduce e della tecnologia Apache Hadoop;
- conoscenza del paradigma TLAV e della tecnologia Apache Giraph;
- capacità di scrivere programmi per le piattaforme Apache Hadoop e Apache Giraph;
- conoscenza dei concetti di base relativi ai database distribuiti;
- conoscenza e capacità di utilizzo di alcune tecnologie NoSQL. - Prerequisiti
- Sono richieste conoscenze relativamente alla progettazione e all'analisi di algoritmi, alla programmazione imperativa e ad oggetti tramite il linguaggio Java, alle basi di dati relazionali.
- Metodi didattici
- Il corso si articola in due principali tipologie di lezioni:
Lezioni frontali (per circa il 60% del tempo totale): vengono svolte lezioni frontali in aula. Ogni lezione consiste nell'illustrazione da parte del docente di nuovi concetti teorici, attraverso la proiezione di appositi lucidi.
Esercitazioni guidate in laboratorio (per circa il 40% del tempo totale): si svolgono nel laboratorio di ingegneria del software, e prevedono la progettazione e l'implementazione di programmi sotto la guida del docente. - Altre informazioni
- Nessuna.
- Modalità di verifica dell'apprendimento
- I metodi di valutazione di questo insegnamento cercano di quantificare le conoscenze teoriche acquisite dallo studente, nonché la sue capacità di applicare tali conoscenze per la risoluzione di problemi applicativi. I tipi di prove previste per la valutazione sono descritti qui di seguito.
- Prova orale di natura teorica e applicativa
Durata: 30 minuti
Punteggio: 15/30
Obiettivo: accertare le conoscenze sui concetti teorici impartiti nell'insegnamento e valutare abilità di programmazione.
- Progetto
Presentazione e discussione di un elaborato (codice software e documentazione di progetto)
Punteggio: 15/30
Obiettivo: accertare le abilità pratiche acquisite in relazione alle tematiche del corso. - Programma esteso
- 1. Introduzione
a. Introduzione ai Big Data
b. Scaling up vs scaling out
c. Concetti basi per la gestione dei Big Data
2. Parte I: Modelli e tecnologie di programmazione per computazioni distribuite
a. Il modello MapReduce
b. La piattaforma Hadoop
c. Il modello Think-Like-A-Vertex
d. La piattaforma Giraph
e. Apache Spark
3. Parte II: Modelli dei dati e tecnologie NoSQL
a. Principi base delle tecnologie NoSQL
b. Il teorema CAP e oltre
c. Key-value stores
d. Column-family stores
e. Document databases
f. Graph databases