91251 - LANGUAGES AND ALGORITHMS FOR ARTIFICIAL INTELLIGENCE

Scheda insegnamento

Anno Accademico 2022/2023

Conoscenze e abilità da conseguire

Al termine dell'attività formativa, lo studente comprende le principali tecniche linguistiche ed algoritmiche usate nel contesto dell'AI, inclusi gli aspetti principali dei linguaggi funzionali, dei linguaggi logici e della programmazione con vincoli, sia negli aspetti teorici di base che per le relative applicazioni pratiche. Lo studente ha una comprensione dei principi di base dei modelli e degli algoritmi distribuiti, dei problemi di consenso e degli algoritmi a larga scala per l'analisi di grandi quantità di dati.

Contenuti

Modulo 1

Macchine astratte. La macchina Python. Programmazione in Python: nomi e loro visibilità, funzioni, oggetti modificabili e non modificabili, tipi di dato (numeri, stringhe, ennuple, liste, dizionari) e loro uso nella risoluzione di problemi di media difficoltà. Classi e oggetti; metodi ed ereditarietà. Eccezioni. La libreria NumPy e i suoi array N-dimensionali.

Modulo 2

Introduzione alla logica matematica. Unificazione. Risoluzione.
Introduzione alla programmazione logica. I linguaggi Prolog.
Programmazione logica con vincoli e programmazione concorrente con vincoli. Programmazione con vincoli. Il linguaggio MiniZinc.

Modulo 3
Introduzione alla teoria della calcolabilità e alla teoria della complessità. Indecidibilità. Le classi P, NP e EXP. Un modello formale di apprendimento: PAC learning. Apprendimento mediante convergenza uniforme. Il tredeoff bias/complexity. La dimensione VC.

Modulo 4
Il paradigma della programmazione e dell'apprendimento nei linguaggi per l'inferenza. Introduzione al linguaggio Scheme/Racket e sue estensioni probabilistiche Church/Gamble. Modelli generativi come programmi probabilistici. Programmazione bayesiana in Church/Gamble. L'apprendimento come inferenza condizionale. Algoritmi di inferenza (campionamento del rifiuto e Metropolis Hastings). Semantica operativa e inferenza per valutazione. Tempo permettendo, una panoramica della programmazione differenziabile.


Testi/Bibliografia

Modulo 1

John V. Guttag. Introduction to Computation and Programming Using Python Third Edition: With Application to Computational Modeling and Understanding Data. MIT Press, 2021.
https://mitpress.mit.edu/books/introduction-computation-and-programming-using-python-third-edition

Modulo 2

Dirk van Dalen. Logic and structure. 4th edition, Springer.

K. Doets. From Logic to Logic Programming. The Mit Press.

Russell, Norvig. Artificial Intelligence: A Modern Approach (any edition). Pearson. 

Modulo 3

Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach. Cambridge University Press, 2009.

Michael Kearns, Umesh. Vazirani. An Introduction to Computational Learning Theory. MIT Press, 1994.

Shai Shalev-Shwartz and Shai Ben-David. Understanding Machine Learning: From Theory to Algorithms. Cambridge University Press, 2014.

Modulo 4

N. D. Goodman, J. B. Tenenbaum, and The ProbMods Contributors (2016). Probabilistic Models of Cognition (1st ed.). (available at http://v1.probmods.org/index.html)

Jan-Willem van de Meent, Brooks Paige, Hongseok Yang, Frank Wood, An introduction to probabilistic programming (available at https://arxiv.org/abs/1809.10756).

Metodi didattici

Lezioni frontali ed esercitazioni.

Modulo 1

Lezioni in aula. Esercitazioni autonome (fuori dall’orario di lezione) di programmazione, utilizzando la piattaforma Moodle del corso. Le lezioni (24 ore) sono concentrate nel periodo iniziale del semestre (entro la fine di ottobre). 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, in modalità e-learning

Modalità di verifica e valutazione dell'apprendimento

Esame orale e/o scritto alla fine di ogni modulo. Possibile progetto. Per il modulo 1 sarà proposto un test obbligatorio di programmazione in Python, a correzione automatica su dati di test, sulla piattaforma Moodle del corso. Un test sufficiente è necessario per sostenere un qualsiasi esame degli altri moduli. Un primo test sarà offerto in Novembre 2022.

Strumenti a supporto della didattica

Esercitazioni in aula.

Orario di ricevimento

Consulta il sito web di Ugo Dal Lago

Consulta il sito web di Simone Martini

Consulta il sito web di Maurizio Gabbrielli

Consulta il sito web di Francesco Gavazzo