Constraint-Programming (Summer Term 2024)

"Constraint Programming represents one of the closest approaches computer science has yet made to the Holy Grail of programming: the user states the problem, the computer solves it." (E. Freuder)

Constraint-based programming has emerged as a clever combination of two logic-based paradigms: logic programming and constraint solving. Logic programming defines calculations by rules. Constraint solving in turn means solving problems by stating constraints (conditions, restrictions) that have to be satisfied by a solution and combining these constraints to narrow the search space before trying alternatives by search. Thus complex combinatorial problems can be treated efficiently and elegantly by combining constraint solving and searching.

The main application areas are resource planning, transport optimisation and layout generation. The worldwide turnover generated by applying this technology has been estimated at 100 million dollars for 1996 already.

Goals

The students should achieve a basic knowledge of principles and methods of constraint and logic programming. The students have an understanding of the concepts of constraint programming, can apply them and have programming experience in a constraint-based programming language like Constraint Handling Rules.

Constraint Programming Languages

Constraint Logic Programming, Concurrent Constraint Programming, Constraint Handling Rules

Constraint Systems and their Applications

Terms, Linear Equations, Finite Domains, Intervals

Exercise

In the weekly exercise, we will discuss the practical aspects of the topics of the lecture. All used material will be provided in the Moodle course. The necessary software will be freely available.

The first exercise will be on April 18th, 2024.

Literature

  • Thom Frühwirth and Slim Abdennadher: Essentials of Constraint Programming, ISBN: 978-0817644451, Springer Verlag, 2003
  • Thom Frühwirth and Slim Abdennadher: Constraint-Programmierung, ISBN: 978-3540606703, Springer Verlag, 1997
Schedule

Lecture: Wednesday 16-18 in O27/121

Exercise: Thursday 12-14 in O27/122