85172 - SYSTEMS AND ALGORITHMS FOR DATA SCIENCE

Anno Accademico 2018/2019

  • Docente: Stefano Lodi
  • Crediti formativi: 10
  • SSD: ING-INF/05
  • Lingua di insegnamento: Inglese
  • Moduli: Stefano Lodi (Modulo 1) Stefano Lodi (Modulo 2)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
  • Campus: Bologna
  • Corso: Laurea Magistrale in Statistical sciences (cod. 9222)

    Valido anche per Laurea Magistrale in Statistical sciences (cod. 9222)

Conoscenze e abilità da conseguire

By the end of the course the student is able to design information systems and applications on database management systems (DBMS). In particular, the student is able to use the SQL language to query and data, and to apply a database design methodology to user requirements in natural language; - knows the fundamentals of data warehousing and big data management tools, like the MapReduce programming model, its Hadoop implementation, and NoSQL databases.

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
════════════════════


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


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
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 utilizzando sia strumenti integrati nei
DBMS che linguaggi di programmazione.

Modalità di verifica e valutazione dell'apprendimento

L'esame si articola in due prove:
• Prova di laboratorio preliminare di progetto di interrogazioni SQL e di programmi Python.
 • Lo studente riceve: un documento, cartaceo o digitale, contenente:
• la descrizione di uno schema di base di dati relazionale espressa
in statement CREATE TABLE del linguaggio SQL e interrogazioni
espresse in linguaggio naturale inerenti le relazioni dello schema
• la descrizione di un semplice problema di analisi
• Lo studente deve produrre
• interrogazioni in linguaggio SQL che restituiscono i dati
richiesti dalle interrogazioni in linguaggio naturale descritte
nel testo
• 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; capacità di progettare porzioni di schema ER corrispondenti a casi notevoli dei requisiti di progetto in linguaggio naturale; padronanza nell'applicare le tecniche di progetto logico da schemi ER a schemi relazionali; conoscenza degli elementi di data warehousing e delle tecniche di analisi avanzata 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 interrogazioni SQL e 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 alla lista di distribuzione del corso. Le credenziali per l'iscrizione alla lista sono comunicate nella prima lezione del corso.


Orario di ricevimento

Consulta il sito web di Stefano Lodi