91251 - LANGUAGES AND ALGORITHMS FOR ARTIFICIAL INTELLIGENCE

Anno Accademico 2020/2021

  • Docente: Maurizio Gabbrielli
  • Crediti formativi: 12
  • SSD: ING-INF/05
  • Lingua di insegnamento: Inglese
  • Moduli: Maurizio Gabbrielli (Modulo 1) Gianluigi Zavattaro (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
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
Intorduzione alla Computabilità e alla teoria della complessità.
Un modello formale di apprendimento: PAC learning. Apprendimento mediante convergenza uniforme.
Il tredeoff bias/complexity. La dimensione VC. Il tempo nell'apprendimento.


Testi/Bibliografia

Dispense delle lezioni.

 

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.


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

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

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

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 Maurizio Gabbrielli

Consulta il sito web di Gianluigi Zavattaro

Consulta il sito web di Ugo Dal Lago