- Docente: Maurizio Gabbrielli
- Credits: 6
- SSD: ING-INF/05
- Language: English
- Moduli: Michael Lodi (Modulo 1) Maurizio Gabbrielli (Modulo 2)
- Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
- Campus: Bologna
- Corso: Second cycle degree programme (LM) in Artificial Intelligence (cod. 6700)
-
from Sep 15, 2025 to Oct 23, 2025
-
from Oct 30, 2025 to Dec 18, 2025
Learning outcomes
At the end of the course, the student has an understanding of the main linguistic techniques used in the context of AI, including the main aspects related to functional, logic and constraint programming.
Course contents
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.
Readings/Bibliography
Modulo 1
Nessun libro di testo è obbligatorio: tutto il materiale (diapositive, codice sorgente, esercizi, esempi di esami passati) sarà reso disponibile dopo ogni lezione su Virtuale.
Libro di testo suggerito (livello introduttivo)
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 [Esiste anche la versione italiana]
Altri libri di testo di livello molto elementare
Allen B. Downey. Think Python 2e. O'Reilly Media, 2012. ISBN 978-1449330729. Disponibile online: https://greenteapress.com/wp/think-python-2e/
Jessen Havill. Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming. Chapman and Hall/CRC. ISBN 9781482254143
Libri di consultazione
Mark Lutz. Learning Python 5e. O'Reilly Media, 2013 [Per Python, non per imparare la programmazione da zero].
M. Gabbrielli, S. Martini. Programming Languages: Principles and Paradigms (2nd ed). Springer, 2023. [Per imparare come funzionano i linguaggi di programmazione. Esiste anche la versione italiana.].
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.
Teaching methods
Lezioni teoriche e pratiche in classe.
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, [https://elearning-sicurezza.unibo.it/] in modalità e-learning.
Modulo 1
Lezioni frontali in classe con esempi di programmazione dal vivo.
Le lezioni (24 ore) saranno concentrate all'inizio del semestre (dalla terza settimana di settembre a prima della fine di ottobre).
Lavoro autonomo su esercizi di programmazione guidata (al di fuori degli orari previsti per le lezioni), su Virtuale. La piattaforma fornisce un feedback automatico sui casi di test.
Modulo 2
Lezioni frontali in classe ed eesercitazioni.
Assessment methods
Il corso (Introduction to Languages for Artificial Intelligence) è parte del corso integrato “Languages and Algorithms for Artificial Intelligence”. Per avere un voto registrato sul libretto è necessario superare
-
Modulo 1 (Prof. Lodi): idoneità (pass/fail)
-
Modulo 2 (Prof. Gabbrielli): voto in trentesimi, superato con almeno 18/30.
-
Corso “Introduction to Computability and Complexity” con il Prof. Dal Lago: voto in trentesimi, superato con almeno 18/30.
Le tre prove possono essere sostenute in qualsiasi ordine e i voti positivi rimangono sempre validi.
Il voto finale si ottiene come media aritmetica dei voti nel Modulo 2 e nel Corso “Introduction to Computability and Complexity” , arrotondata all’intero più vicino.
Per ogni modulo sono previsti quattro appelli per ogni anno accademico.
Il modulo 1 sarà valutato attraverso un test di programmazione in Python della durata di 2 ore, con correzione automatica su casi di test, sulla piattaforma EOL. Il test valuterà la capacità degli studenti di risolvere correttamente semplici problemi di programmazione procedurale utilizzando Python (e la libreria NumPy).
Il sistema assegnerà un punteggio a ciascun caso di test per ogni esercizio. Il raggiungimento di un punteggio pari o superiore a 18/30 risulterà in un "pass", mentre un punteggio inferiore a 18/30 risulterà in un "fail" (il punteggio numerico non viene registrato).
Il test si svolgerà nei laboratori dell'Università e gli studenti avranno accesso a un IDE e alla documentazione di Python e NumPy. Non sarà possibile accedere ad altri siti web o a materiale cartaceo.
Un test preliminare potrebbe essere offerto a fine ottobre/inizio novembre. Gli altri appelli saranno in inverno, estate e autunno.
Seguire le lezioni è fondamentale per comprendere i concetti teorici. Per coloro che non possono partecipare, saranno disponibili le registrazioni. Per l'allenamento personale sono previsti diversi esercizi che non contribuiscono al voto. Lo svolgimento degli esercizi assegnati ogni settimana su Virtuale è fondamentale per l'apprendimento delle competenze di programmazione richieste. La valutazione automatica su casi di prova è un primo aiuto importante. I tutor e l'istruttore principale sono inoltre disponibili per chiarimenti.
Il modulo 2 sarà valutato mediante un esame scritto consistente in 2 esercizi sulle varie parti del corso da svolgersi in due ore. Seguire le lezssioni è importnate per prendere pratica anche con gli esercizi d'esame.
Teaching tools
Lezioni frontali. Esercitazioni pratiche.
Per il Modulo 1 verranno fornite le slide e il codice sorgente. Gli esercizi con correzione automatica sui casi di prova saranno disponibili settimanalmente su Virtuale (attraverso CodeRunner, un plugin di Moodle). Gli esami degli scorsi anni (con correzione automatica) saranno disponibili per lo studio personale.
Per il Modulo e verranno fatte esercitazioni in aula.
Office hours
See the website of Maurizio Gabbrielli
See the website of Michael Lodi