91251 - LANGUAGES AND ALGORITHMS FOR ARTIFICIAL INTELLIGENCE

Scheda insegnamento

Anno Accademico 2021/2022

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
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 2
Approccio funzionale alla programmazione, con particolare enfasi relativamente alle tecniche di parallelizzazione e distribuzione scalabili di dati e programmi, quali il modello di programmazione MapReduce. Utilizzo del linguaggio Scala e relativo studio delle collection sequenziali e parallele fornite da tale linguaggio. Ut ilizzo di Spark per la programmazione distribuita. Deployment su cloud di programmi Scala-Spark.

Modulo 3
Introduzione alla teoria della calcolabilità e alla teoria della complessità. 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

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 2

Martin Odersky, Lex Spoon, Bill Venners Artima. Programming in Scala (3rd edition).

Aleksandar Prokopec. Learning Concurrent Programming in Scala (2nd edition) Packt Publishing

Learning Spark: Lightning-Fast Big Data Analysis
Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia
O’Reilly

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.

Modalità di verifica e valutazione dell'apprendimento

Esame orale e/o scritto alla fine di ogni modulo. Possibile progetto.

Strumenti a supporto della didattica

Esercitazioni in aula.

Orario di ricevimento

Consulta il sito web di Ugo Dal Lago

Consulta il sito web di Maurizio Gabbrielli

Consulta il sito web di Francesco Gavazzo