- Docente: Stefano Lodi
- Crediti formativi: 10
- SSD: ING-INF/05
- Lingua di insegnamento: Inglese
- Moduli: Stefano Lodi (Modulo 1) Elisabetta Ronchieri (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)
-
Orario delle lezioni (Modulo 1)
dal 15/09/2025 al 16/10/2025
-
Orario delle lezioni (Modulo 2)
dal 10/11/2025 al 15/12/2025
Conoscenze e abilità da conseguire
By the end of the course, the should - understand the fundamentals of supervised and unsupervised machine learning algorithms, focusing on deep learning algorithms - understand the fundamental programming principles of the Python language and be able to apply them primarily to data management and analysis, under the umbrella of data science - understand the role, purpose and features of Python libraries for numerical computation, data representation, and machine learning, and their interconnectivity with frameworks, such as Jupyter Notebook - be able to apply data science practices and methods to construct models and solve problems for various data-science applications.
Contenuti
Modulo 1
Il linguaggio Python: espressioni, tuple, liste, comprehension, set, dizionari. Istruzioni di ripetizione e scelta. Package NumPy e Panda.
Machine learning: apprendimento automatico supervisionato, reti neurali deep, reti convoluzionali e ricorrenti, LSTM, modelli generativi (GAN, Autoencoder, Transformer)
Esercitazioni di laboratorio: ambiente di sviluppo integrato per Python
Modulo 2
Il corso si focalizza sul paradigma e sulle caratteristiche fondamentali di Python, e degli ambienti adatti alla manipolazione dei dati nell'ambito della data science, come pytorch e tensor flow. L'enfasi è posta sull'esplorazione delle sue librerie, che aiutano ad usare e a definire modelli di machine learning,
in diversi ambiti, quali analisi del testo, serie temporali, analisi delle immagini. La parte pratica del
corso prevede l'utilizzo di strumenti e piattaforme di sviluppo, come Jupyter Notebook, Google Colab,
Hugging Face e Gitlab, per la condivisione e il supporto dell'analisi dei dati. Il corso include anche
l'accesso a diversi set di dati al fine di illustrare l'applicabilità del materiale in esempi reali.
Parte 1 - Neural Network (dalla convoluzione al recurrent incluso)
Parte 2 - Generative (dalle GAN-AE fino ai trasformer incluso)
Parte 3 - Natural language Processing (dalle basi a topic modeling)
Parte 4 - Large Language Model
Testi/Bibliografia
Modulo 1
Le presentazioni del corso e gli esercizi sono disponibili su Virtuale [http://virtuale.unibo.it/] .
Per argomento:
Python
Testo consigliato (on-line):
Parker, J. R. (2016). Python: An Introduction to Programming. Mercury Learning & Information. E-book liberamente scaricabile con le credenziali istituzionali studentesche, e ricercabile in
http://sba.unibo.it [http://sba.unibo.it/] | Risorse online| E-book | Ricerca un e-book nel Catalogo A-Link
Machine Learning
Testo consigliato (on-line):
Zhang, A., Lipton, Z. C., Li, M., & Smola, A. J. (2023). Dive into Deep Learning (No. arXiv:2106.11342). arXiv. http://arxiv.org/abs/2106.11342
Modulo 2
Durante il corso saranno indicati materiali online e altre letture consigliate.
Metodi didattici
NOTA: In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio [https://elearning-sicurezza.unibo.it/], in modalità e-learning.
Modulo 1
Le lezioni del corso sono suddivise in
• lezioni frontali tenute in aula
• lezioni tenute in laboratorio, ciascuna comprendente sia esposizioni frontali che esercitazioni sulle tecniche di soluzione dei problemi di analisi dei dati presentate.
Gli argomenti del corso sono suddivisi per tipo di lezione:
• durante le lezioni frontali si espongono le nozioni teoriche e
pratiche per il machine learning
• in laboratorio, lo studente realizza script di machine learning utilizzando il linguaggio di programmazione Python.
Modulo 2
• Lezioni teoriche in aula didattica
• Esercitazioni in laboratorio
Durante le lezioni gli studenti saranno guidati nella realizzazione e nella pratica dei concetti presentati.
Modalità di verifica e valutazione dell'apprendimento
La frequenza alle lezioni non contribuisce alla valutazione in alcun modo.
Modulo 1
L'esame si articola in tre prove.
Prova di programmazione in Python
Lo studente riceve un documento digitale su Esami OnLine [http://eol.unibo.it/], contenente la descrizione di un semplice problema di analisi, deve produrre sullo stesso sito un programma Python che risolve il problema di analisi descritto nel documento.
- È consentita la consultazione di testi e appunti rilegati.
Prova a risposta multipla
Lo studente riceve una collezione di frasi, ciascuna delle quali ha 3 possibili completamenti, dei quali solamente uno è corretto. La prova è svolta interamente su Esami OnLine [http://eol.unibo.it/]
- Non è consentita la consultazione di alcun materiale.
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 delle tecniche di machine learning presentate durante le lezioni e implementate negli strumenti utilizzati durante le lezioni e capacità di utilizzare tali strumenti; conoscenza del linguaggio Python.
Modalità di calcolo del voto d'esame del modulo e validità delle prove
- I voti di tutte le prove sono compresi nell'intervallo tra 0 e 30, estremi inclusi.
- I voti conseguiti nella prova di programmazione e nella prova a risposta multipla sono validi fino al termine della sessione (gennaio-febbraio, giugno-luglio o settembre) nella quale la prova è stata sostenuta.
- La valutazione dell'esito del modulo e l'assegnazione del voto finale del modulo si effettuano al termine della prova orale.
- Il voto finale del modulo è calcolato come media del voto della piú recente prova di programmazione in Python, del voto della più recente prova a risposta multipla e del voto dell'orale.
Modulo 2
Gli studenti saranno valutati attraverso diverse prove.
Homework 1 (lavoro di gruppo) da consegnare entro la 2 settimana del modulo
Nel loro lavoro di gruppo, che si concentra su un progetto di programmazione della Parte 1, gli studenti dimostreranno la loro capacità di apprendimento della Parte 1, utilizzando librerie Python, pytorch, tensor flow, rispondendo a domande relative a determinati compiti e condividendo i risultati del gruppo di progetto su repository online pubblico, come Gitlab.
Homework 2 (lavoro di gruppo) da consegnare entro la 3 settimana del modulo
Nel loro lavoro di gruppo, che si concentra su un progetto di programmazione della Parte 2, gli studenti dimostreranno la loro capacità di apprendimento della Parte 2, utilizzando librerie Python, pytorch, tensor flow, rispondendo a domande relative a determinati compiti e condividendo i risultati del gruppo di progetto su repository online pubblico, come Gitlab.
Homework 3 (lavoro di gruppo) da consegnare entro la 4 settimana del modulo
Nel loro lavoro di gruppo, che si concentra su un progetto di programmazione della Parte 3, gli studenti dimostreranno la loro capacità di apprendimento della Parte 3, utilizzando librerie Python, pytorch, tensor flow, rispondendo a domande relative a determinati compiti e condividendo i risultati del gruppo di progetto su repository online pubblico, come Gitlab.
Homework 4 (lavoro di gruppo) da consegnare entro la 5 settimana del modulo
Nel loro lavoro di gruppo, che si concentra su un progetto di programmazione della Parte 4, gli studenti dimostreranno la loro capacità di apprendimento della Parte 4, utilizzando librerie Python, pytorch, tensor flow, rispondendo a domande relative a determinati compiti e condividendo i risultati del gruppo di progetto su repository online pubblico, come Gitlab.
Assegnazione 1 (lavoro di gruppo)
Nel loro lavoro di gruppo, che si concentra su un progetto di programmazione, gli studenti dimostreranno la loro capacità di analizzare un assegnato insieme di dati, utilizzando librerie Python, pytorch, tensor flow, rispondere a domande relative a determinati compiti e condividendo i risultati del gruppo di progetto su repository online pubblico, come Gitlab.
Assegnazione 2 (valutazione individuale come prova orale)
Nella valutazione individuale, gli studenti presenteranno i risultati del loro lavoro sugli homework e sull'Assegnazione 1, sotto forma di presentazione, in cui ogni studente discuterà questioni relative ai progetti e agli homework e risponderà a domande pertinenti.
Modalità di calcolo del voto d'esame del modulo e scadenze
Il voto del modulo 2 è compreso nell'intervallo tra 0 e 30, estremi inclusi. Ciascun homework vale 1. Gli homework per essere considerati validi devono essere consegnati nel numero minimo di 3 su 4; diversamente non saranno presi in considerazione. Il progetto deve essere consegnato tassativamente 3 giorni prima della data della prova orale dell'Assegnazione 2.
Strumenti a supporto della didattica
Modulo 1
Presentazioni degli argomenti del corso con videoproiettore
Laboratorio di PC con Anaconda; PC del docente con videoproiettore per la guida alle esercitazioni
Materiale usato nelle presentazioni distribuito tramite il sito http://virtuale.unibo.it [http://virtuale.unibo.it/] . Il materiale è accessibile solo agli studenti iscritti al corso.
Modulo 2
Note sul corso. Progetti open source utilizzati come esempi didattici.
Orario di ricevimento
Consulta il sito web di Stefano Lodi
Consulta il sito web di Elisabetta Ronchieri