This is an old revision of the document!
Logic and Constraint Programming
News
- 22/4/2021: First partial exam.
- 08/4/2021: the lecture of April 8 is postponed.
- 02/3/2021: first lecture (both in classroom and via Webex: https://unicam.webex.com/meet/francesco.tiezzi)
- Telegram channel: LCP2021@UNICAM
General Info
Teacher:
ESSE3 Link
Lessons schedule:
- Tue 16:00-18:00, AB1
- Wed 09:00-11:00, AB1
Students Office hours:
- On appointment (via email), second floor of Polo Lodovici, via Madonna delle Carceri 9, Camerino
Course Objectives
D1 – KNOWLEDGE AND UNDERSTANDING At the end of the course, the student should be able to: 1- Have the knowledge of the issues concerning logic and constraint programming. 2- Have the knowledge of the syntax and the semantics of the Prolog language. 3- Have the knowledge of the syntax and the semantics of the input languages of Drools. 4- Have the knowledge of the syntax and the semantics of the input languages of Minizinc.
D2 – APPLYING KNOWLEDGE AND UNDERSTANDING At the end of the course, the student should be able to: 1- Writing logic programs in Prolog. 2- Writing rule-based programs in Drools. 3- Writing constraint-based programs in Minizinc. 4- Understand technical manuals on the languages and tools presented in the course and similar ones.
D3 – MAKING JUDGEMENTS At the end of the course, the student should be able to: 1- Identify the best language suitable for describing the logic of an intelligent system.
D4 - COMMUNICATION SKILLS At the end of the course, the student should be able to: 1- Describe in a clear way the behaviour of a logic- and constraint-based program. 2- Write a brief survey and state of the art about a given research topic related to constraint and logic programming by searching the scientific literature.
D5 – LEARNING SKILLS At the end of the course, the student should be able to: 1- Search the scientific literature for specific advances in languages and tools for logic and constraint programming. 2- Autonomously understand and learn to use new features added to tools for logic and constraint programming.
Course Contents
- Constraint programming: Minizinc
- Rule-based programming: Drools
- Logic programming: Prolog
Study material
Course Slides
Lectures
- 03/03/2021: general info, Minizinc (recorded lecture)
- 04/03/2021: Minizinc (recorded lecture)
- 10/03/2021: Minizinc, Drools (recorded lecture)
- 11/03/2021: Drools tutorial (recorded lecture)
- 17/03/2021: SWI Prolog, Declarative Programming, History of Prolog, examples (recorded lecture)
- 18/03/2021: Examples, Prolog syntax (recorded lecture)
- 24/03/2021: exercises, unification (recorded lecture)
- 25/03/2021: proof search, proof search examples (recorded lecture)
- 31/04/2021: exercises, recursion (recorded lecture)
- 01/04/2021: recursion, exercises on recursion (recorded lecture)
- 07/04/2021: exercises, lists (recorded lecture)
- 14/04/2021: exercises, arithmetics (recorded lecture)
- 15/04/2021: exercises, accumulators (recorded lecture)
Practical sessions
Reference books The main material of the course consists of:
- Stuart J. Russell and Peter Norvig. Artificial Intelligence A Modern Approach. Third Edition. Pearon, 2016.
- Patrick Blackburn, Johan Bos, Kristina Striegnitz. Learn Prolog Now! 2001
- Tutorial of Drools, Minizinc.
- Course's slides.
Moreover, lecture notes, papers and slides may be given by the teacher for studying and for exercises.
Exams
Exam rules:
The exam is divided in two parts:
- Programming test:
- on the exam date a programming test takes place, using the languages and tools introduced in the course
- during the course in itinere tests take place; in case they are evaluated positively, they replace the programming test of the exam date
- Realisation of a project using one or more languages and software tools with a presentation