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
Condividi su