91251 - LANGUAGES AND ALGORITHMS FOR ARTIFICIAL INTELLIGENCE

Anno Accademico 2023/2024

  • Docente: Ugo Dal Lago
  • Crediti formativi: 12
  • SSD: ING-INF/05
  • Lingua di insegnamento: Inglese
  • Moduli: Simone Martini (Modulo 1) Maurizio Gabbrielli (Modulo 2) Ugo Dal Lago (Modulo 3)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2) Convenzionale - Lezioni in presenza (Modulo 3)
  • Campus: Bologna
  • Corso: Laurea Magistrale in Artificial Intelligence (cod. 9063)

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. 

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.

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 potrebbe essere offerto nel mese di Novembre.

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