85172 - SYSTEMS AND ALGORITHMS FOR DATA SCIENCE

Anno Accademico 2019/2020

  • Docente: Stefano Lodi
  • Crediti formativi: 10
  • SSD: ING-INF/05
  • Lingua di insegnamento: Inglese

Conoscenze e abilità da conseguire

By the end of the course, the student knows: - the fundamentals of the relational model of data, and how to query a relational database management systems using the SQL language; - the fundamentals of data warehousing, big data analysis tools and NOSQL databases; - the fundamental supervised and unsupervised data mining algorithms.

Contenuti

Basi di dati relazionali

══════════════════════════

Il modello relazionale dei dati
Vincoli di integrità


Il linguaggio SQL
═══════════════════

Creazione, interrogazione e modifica di una base di dati
Gestione delle transazioni e delle autorizzazioni



Data warehousing e OLAP
═════════════════════════

OLTP e OLAP
Il modello dei dati multidimensionale: fatti, misure, dimensioni,
gerarchie, cuboidi
Schemi a stella, a fiocco di neve, a galassia
Operazioni nel modello multidimensionale: roll-up, drill-down, slice
and dice, pivot, data cube
Data warehouse: definizione, progettazione, architettura



Analitica avanzata e machine learning
════════════════════


Algoritmo PageRank
──────────────────────


Scoperta di regole associative
──────────────────────────────────

Classificazione delle regole associative
Algoritmo Apriori


Analisi dei gruppi
──────────────────────

L'algoritmo a passo unico
L'algoritmo BIRCH
L'algoritmo k-means
L'algoritmo EM


Classificazione supervisionata
──────────────────────────────────

Alberi di classificazione: C4.5, CART
K nearest neighbours
Naive Bayes
Modelli a vettori di supporto (SVM)
AdaBoost
Reti neurali


Strumenti per la gestione e l'analisi di Big Data
─────────────────────────────────────



Il sistema operativo Linux
Il modello di programmazione MapReduce

Implementazione Hadoop di MapReduce
Il sistema Spark
Le basi di dati NoSQL
Il linguaggio Python
Python, Hadoop e Spark
Il linguaggio R e Hadoop


Esercitazioni di laboratorio
══════════════════════════════

DBMS relazionale MySQL, linguaggio SQL
Integrated development environments per Python
Analitica avanzata

Testi/Bibliografia

Maier, D. (1983) The theory of relational databases. Rockville, MD: Computer Science Press.
Van der Lans, R. F. Introduction to SQL (any edition). Addison-Wesley.
Han, J., & Kamber, M. (2011). Data Mining. Concepts and Techniques. San Francisco, CA: Morgan Kaufmann.
Tan, P.-N., Steinbach, M., & Kumar, V. (2006). Introduction to Data Mining. Boston: Pearson.

Zhang, Y. (2015). An Introduction to Python and Computer Programming. Springer, Singapore. Disponibile come E-book nel Catalogo del Polo Bolognese SebinaYOU

 

Metodi didattici

Le lezioni del corso sono suddivise in
• lezioni frontali tenute in aula, per al piú un terzo del numero di ore
del corso,
• lezioni tenute in laboratorio, per almeno due terzi del numero di ore
del corso, ciascuna comprendente sia esposizioni frontali che
esercitazioni sulle tecniche di progetto di basi di dati e di
soluzione dei problemi di interrogazione e di analisi dei dati
presentate nelle esposizioni.

Gli argomenti del corso sono suddivisi per tipo di lezione:
• Durante le lezioni frontali si espongono le nozioni teoriche e
pratiche per il progetto di interrogazioni, la gestione di basi di
dati, per il progetto di schemi di basi di dati e di data warehouse e
per l'analisi avanzata in basi di dati
• In laboratorio, lo studente è invitato a progettare interrogazioni SQL
e multidimensionali di difficoltà crescente e a verificarne la
correttezza con il DBMS in uso e a progettare la generazione di
modelli di analisi avanzata e machine learning utilizzando sia strumenti integrati nei
DBMS che il linguaggio di programmazione Python.

Modalità di verifica e valutazione dell'apprendimento

L'esame si articola in due prove:
• Prova di laboratorio preliminare di progetto di programmi Python.
• Lo studente riceve: un documento, cartaceo o digitale, contenente:
• la descrizione di un semplice problema di analisi
• Lo studente deve produrre:
• un programma Python che risolve il problema di analisi descritto
nel testo.
• Note: È facoltà del candidato consegnare la soluzione in forma
cartacea o in un documento digitale; fare uso di uno o piú sistemi
di gestione di basi di dati impiegati durante le lezioni del corso
per collaudare la propria soluzione.
• Prova orale. Il candidato deve rispondere a tre domande che possono riguardare qualunque parte del programma del corso. In particolare, lo studente deve dimostrare: padronanza delle nozioni teoriche della disciplina, della terminologia e del formalismo logico, insiemistico e matematico in essa impiegato; conoscenza degli elementi di data warehousing e delle tecniche di analisi avanzata e machine learning presentate durente le lezioni e implementati negli strumenti utilizzati durante le lezioni e capacità di utilizzare tali strumenti; conoscenza del linguaggio Python.

Modalità di calcolo del voto d'esame e vincoli tra le prove.

I voti delle due prove sono compresi nell'intervallo tra zero e trenta,
estremi inclusi. Il voto conseguito nella prova di laboratorio
preliminare è valido fino al termine della sessione nella quale la prova
preliminare è stata sostenuta. La valutazione dell'esito e
l'assegnazione del voto finale si effettuano al termine della prova
orale. Il voto finale è calcolato come media pesata dei voti conseguiti
nelle due prove, utilizzando per la prova di laboratorio preliminare il
voto valido piú recente, o zero se non esiste alcun voto valido. Ai fini
del calcolo si adottano i pesi seguenti:

Prova di laboratorio preliminare di progetto di programmi Python:
12/30

Prova orale: 18/30

Strumenti a supporto della didattica

Presentazioni degli argomenti del corso con videoproiettore
Laboratorio di PC con MySQL e PyCharm; PC del docente con videoproiettore per la guida alle esercitazioni
Materiale usato nelle presentazioni distribuito tramite il sito http://iol.unibo.it. Il materiale è accessibile solo agli studenti iscritti al corso.

Orario di ricevimento

Consulta il sito web di Stefano Lodi

SDGs

Imprese innovazione e infrastrutture

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.