Course Unit Page
-
Teacher Maurizio Gabbrielli
-
Learning modules Maurizio Gabbrielli (Modulo 1)
Gianluigi Zavattaro (Modulo 2)
Ugo Dal Lago (Modulo 3)
-
Credits 12
-
SSD ING-INF/05
-
Teaching Mode Traditional lectures (Modulo 1)
Traditional lectures (Modulo 2)
Traditional lectures (Modulo 3)
-
Language English
-
Campus of Bologna
-
Degree Programme Second cycle degree programme (LM) in Artificial Intelligence (cod. 9063)
Academic Year 2020/2021
Learning outcomes
At the end of the course, the student has an understanding of the main linguistic and algorithmic techniques used in the context of AI, including the main aspects related to functional, logic and constraint programming, with their theoretical foundations and practical applications. The student has an understanding of the basic principles of distributed models and algorithms, consensus problems, and large-scale algorithms for the analysis of big data.
Course contents
Module 1
Introduction to mathematical logic. Unification. Resolution.
Introduction to logic programming. Prolog languages.
Constraint logic programming and concurrent constraint programming.
Constraint programming. The language MiniZinc.
Module 2
Functional approach to programming, with particular focus on technique for parallelization and scalable distribution of data and programs, as proposed by the MapReduce programming model.
Use of the Scala programming language and study of the sequential and parallel collections provided by the language. Use of Spark for distributed programming, Cloud deployment of Scala-Spark programs.
Module 3
Rudiments of Computability and Complexity Theory.
A Formal Learning Model: PAC Learning. Learning via Uniform Convergence. The Bias-Complexity Tradeoff.
The VC-Dimension.
The Runtime of Learning.
Readings/Bibliography
Handouts
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.
Teaching methods
Theoretical and practical class lectures.
Assessment methods
Written and/or oral examinations at the end of each module.
Possible project work.
Teaching tools
Lectures. Practical exercises.
Office hours
See the website of Maurizio Gabbrielli
See the website of Gianluigi Zavattaro
See the website of Ugo Dal Lago