Algorithms for massive data, cloud and distributed computing

A.A. 2019/2020
12
Crediti massimi
80
Ore totali
SSD
INF/01
Lingua
Inglese
Obiettivi formativi
The objective of the class is to introduce the fundamental concepts at the basis of massive data management and analysis, including the main processing techniques dealing with data at massive scale and their implementation on distributed computational framework, on one side, and the technologies and solutions at the basis of cloud computing paradigm and modern distributed systems (e.g., microservice architectures), on the other side.
Risultati apprendimento attesi
At the end of the class, the student shall know the main approaches enabling her/him to process massive amounts of data, as well as the operating principles of modern distributed computing systems, including cloud computing and microservice-based architectures. The student shall also acquire the ability to design and execute computations on massive datasets, deployed on modern distributed systems and cloud computing platforms.
Programma e organizzazione didattica

Edizione unica

Periodo
Secondo semestre
Prerequisiti
Conoscenza dei fondamenti di programmazione, probabilità e statistica, matematica del continuo, reti di calcolatori, virtualizzazione.
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame consiste in due prove obbligatorie, una per ogni modulo dell'insegnamento. La prova del modulo "Algorithms for massive datasets" consta di un progetto e di una prova orale, entrambi relativi agli argomenti trattati nell'insegnamento. Il progetto, riassunto in una relazione, richiede l'elaborazione di un dataset tramite applicazione critica delle tecniche descritte durante le lezioni. La prova orale, alla quale si accede dopo che il progetto è stato valutato positivamente, è basata sulla discussione di alcuni argomenti trattati nell'insegnamento e sull'approfondimento di alcuni aspetti del progetto presentato. La prova del modulo "Cloud and Distributed Computing" consta di una prova scritta, della durata di due ore, che punta ad accertare, tramite una serie di domande a risposta aperta e chiusa, le conoscenze dello studente su tutti gli argomenti trattati nell'insegnamento. Una volta superate entrambe le prove, viene formulata la valutazione complessiva, espressa in trentesimi, tenendo conto dei seguenti parametri: grado di conoscenza degli argomenti, capacità di applicare le conoscenze alla risoluzione di un progetto concreto, qualità del progetto sviluppato, capacità di ragionamento critico, chiarezza espositiva e proprietà di linguaggio.
Module Algorithms for Massive Data
Programma
Il modulo "Algorithms for Massive Data" tratterà le principali tecniche di elaborazione che permettono di trattare dati su larga scala, unitamente alle loro implementazioni su framework di computazione distribuita. Le lezioni considereranno i contesti applicativi tipicamente caratterizzati da quantità di dati tali da non permettere il loro trattamento utilizzando architetture e tecniche di elaborazione classiche. Per questi contesti verranno quindi analizzate delle soluzioni ad hoc. Parallelamente verranno considerate alcune tecniche di carattere generale per l'elaborazione di dati su larga scala, come per esempio quelle che ricadono nel campo del machine learning.

Più in dettaglio, verranno considerati i seguenti argomenti.
- Preliminari matematici.
- Preliminari tecnici: Python, Jupiter, Colab.
- Hadoop: HDFS e MapReduce.
- Analisi di algoritmi MapReduce.
- Spark.
- Analisi di relazioni.
- Regressione.
- Regressione logistica.
- Percettroni multistrato e deep learning.
- Clustering.
- Ricerca di elementi simili.
- Analisi di tipo market-basket.
- Sistemi di raccomandazione.
- Riduzione della dimensionalità.
- Embedding.
Metodi didattici
Il modulo consiste di lezioni frontali.
Materiale di riferimento
Libro di testo:
- Anand Rajaraman and Jeff Ullman, Mining of Massive Datasets, Cambridge University Press (ISBN:9781107015357).

Letture suggerite:
- Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia, Learning Spark. Lightning-Fast Big Data Analysis, O'Reilly, 2015 (ISBN:978-1-449-35862-4)
- Sandy Ryza, Uri Laserson, Sean Owen, Josh Wills, Advanced Analytics with Spark. Patterns for Learning from Data at Scale, O'Reilly, 2015 (ISBN:978-1-491-91276-8)

Dispense, approfondimenti ed esempi di codice:
- https://dmalchiodiamd.ariel.ctu.unimi.it/
- http://malchiodi.di.unimi.it/teaching/AMD
Module Cloud and Distributed Computing
Programma
Il modulo "Cloud and Distributed Computing" discuterà le tecnologie e le soluzioni alla base del cloud computing e dei moderni sistemi distribuiti, incluse le architetture a microservizi. Il modulo 2 si compone di tre parti principali. La prima parte fornirà una panoramica del paradigma cloud computing e delle sue tecnologie, dei modelli di servizio e dei modelli di deployment. Il modulo analizzerà inoltre rischi e opportunità della cloud migration, focalizzandosi sulla governance e le proprietà non funzionali del cloud. La seconda parte fornirà una panoramica delle architetture a microservizi e delle sue tecnologie, focalizzandosi sulla migrazione da un approccio monolitico a un approaccio a microservizi. Infine, la terza parte si concentrerà sulle problematiche di privacy e protezione dei dati nel cloud.

Più in dettaglio, dopo aver brevemente discusso gli aspetti fondamentali delle reti di calcolatori e della virtualizzazione, la prima parte del modulo fornirà una panoramica del paradigma cloud computing.
1. Cloud Computing. Modelli di servizio. Modelli di deployment. Migrazione verso il cloud. Cloudonomics. Sfide e problematiche.
2. IaaS, PaaS, SaaS: Definizione. Tecnologie. Casi di studio.
3. Aspetti non funzionali del cloud.
4. Nuovi servizi cloud. PaaS Big Data.

La seconda parte del modulo fornirà una panoramica delle architetture a microservizi e le sue tecnologie.
1. Architetture a microservizi. Concetti base. Microservizi e container. Docker.
2. Migrazione e orchestrazione di microservizi. Cloud per microservizi. Come migrare da software monolitico a microservizi. Esempi
3. Microservizi e Big Data. Model-Based Big Data Analytics-as-a-Service.

Infine, la terza parte del modulo si concentrerà sulle problematiche di privacy e protezione dei dati nel cloud.
1. Integrità e confidenzialità dei dati e degli accessi in scenari cloud e di outsourcing dei dati.
Metodi didattici
Il modulo consiste di lezioni frontali.
Materiale di riferimento
Dispense e slide disponibili alla pagina web dell'insegnamento (https://ariel.unimi.it)
Moduli o unità didattiche
Module Algorithms for Massive Data
INF/01 - INFORMATICA - CFU: 6
Lezioni: 40 ore
Docente: Malchiodi Dario

Module Cloud and Distributed Computing
INF/01 - INFORMATICA - CFU: 6
Lezioni: 40 ore

Docente/i
Ricevimento:
Su appuntamento
Ufficio docente (7004) presso il Dipartimento di Informatica in Via Celoria 18, Milano (MI)
Ricevimento:
Solo su appuntamento: contattare il Dott. Fulvio Frati (fulvio.frati@unimi.it)
ufficio presso il Dipartimento di Informatica - via Celoria 18, 20133 Milano
Ricevimento:
su appuntamento
via Celoria, 18 - Milano (MI)
Ricevimento:
Su appuntamento (via e-mail)