This is an old revision of the document!


Logic and Constraint Programming


  • 12/3/2019: the lecture is postponed
  • 4/3/2019: the course web site is now on-line

Teacher:

ESSE3 Link

Lessons schedule:

  • Tue 9:00-12:00, AB1
  • Wed 14:00-16:00, AB1

Students Office hours:

  • On appointment (via email), second floor of Polo Lodovici, via Madonna delle Carceri 9, Camerino

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. 5- Have the knowledge of the syntax and the semantics of the input languages of Z3.

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- Writing constraint-based programs in Z3. 5- 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.


  • Logic programming: basic concepts and Prolog language
  • Introduction to Constraint Satisfaction Problems
  • Rule-based programming: Drools
  • Constraint programming: Minizinc
  • Resolution of Constraint Satisfaction Problems: Z3

Course Slides

Lectures

  • 05/03/2019: general info, SWI Prolog, Declarative Programming, History of Prolog, examples (registration).
  • 06/03/2019: variables, Prolog syntax, exercises registration
  • 19/03/2019: prolog unification registration
  • 20/03/2019: proof search; exercises registration
  • 26/03/2019: recursion registration
  • 27/03/2019: exercises registration
  • 02/04/2019: list, exercises registration
  • 03/04/2019: arithmetics registration
  • 9/04/2019: list, exercises registration
  • 10/04/2019: TODO - cut, exercises registration
  • 16/04/2019: TODO - Cybersecurity seminar
  • 7/05/2019: TODO - partial exam on Prolog
  • 14/05/2019: TODO - Drools 1
  • 15/05/2019: TODO - Drools 2
  • 21/05/2019: TODO - Minizinc 1
  • 22/05/2019: TODO - Minizinc 2

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, Z3.
  • Course's slides.

Moreover, lecture notes, papers and slides may be given by the teacher for studying and for exercises.


Exam Dates A.Y. 2015/2016

  • Winter session dates here
  • Summer session dates here
  • Autumn session dates here
  • Winter session dates here (2016)

Exam rules:

Exam Results

  • N/A