Department of Information Technology

CP - Combinatorial Optimisation using Constraint Programming (course 1DL440) - Autumn 2014



  • Catalogue entry for this course, including the official course goals; unofficial secondary course goals are the acquisition of technical writing & typesetting skills as well as note-taking skills


Constraint programming proposes a set of techniques and tools for efficiently solving (hard) combinatorial problems. Doing so is crucial in many application domains, such as scheduling, planning, molecular biology, finance, linguistics, and so on. Many companies are successfully deploying constraint programming, making knowledge thereof a marketable asset. This course combines coverage of theoretical foundations with hands-on experience in modelling and solving real-life combinatorial problems.

See the articles Constraint Programming in Sweden, Constraint Technology and the Commercial World (these links work from the UU network), and Constraint Programming -- The Paradigm to Watch, for instance.

Target Group

Natural-science students (biology, bioinformatics, physics, chemistry, ...), mathematics students, engineering students, finance students, linguistics students, computer-science students, and anyone interested in solving complex problems that have many constraints. Note that constraint programming is complementary to linear programming (a common technique in operations research): this course will be of particular interest to students with such a background. The target audience includes third-year and fourth-year undergraduate students, as well as graduate students.


120 higher-education credits (that is 120 ECTS points) in science, technology, systems science, or linguistics, including 12 higher-education credits (that is 12 ECTS points) in programming and basic algebra. Programming skills in C++ are assumed.


All announcements about the course will be made here, so check this page regularly:

  • 2015-01-19: The formal, anonymous, final evaluation of the course is closed: many thanks to those who participated! (evaluation-2014.pdf)
  • 2014-12-12: A formal, anonymous, final evaluation of the course is conducted after the last lecture: please fill in the questionnaire at the Student Portal of CP until midnight of Sunday 18 January 2015; many thanks in advance!
  • 2014-11-10: Everyone is strongly encouraged to attend the invited lecture on CP over continuous domains by Warwick Tucker on Mon 1 Dec. It starts at 10:15 and spans the whole lecture slot.
  • 2014-10-17: Project part 3 is published. All the necessary material (topic 5) has already been taught.
  • 2014-10-12: Project part 2 is published. All the necessary material (topic 4) has already been taught.
  • 2014-10-03: Assignment 3 is published. All the necessary material (topics 1 to 9) will normally have been taught long before the deadline, and you can start even now.
  • 2014-10-03: The ethics page has been update to clarify that cheating includes using a public repository (such as github) for code management within your team.
  • 2014-09-29 (and 2014-10-06): The slides for topics 3 to 5 (and 4) were tidied up a bit, and the error spotted by Hans Koberg on slides 5 and 10 for topic 5 was fixed.
  • 2014-09-26: Project part 1 is published. All the necessary material (topics 1 to 6) will normally have been taught until 30 September inclusive, but some aspects can be handled much earlier.
  • 2014-09-15: The mixed solution & help session of Thursday 4 December is moved from 8 am to 10 am, in the same classroom.
  • 2014-09-03: A discussion forum has been added to the Student Portal of CP: you can use it to discuss general things about the course, to troubleshoot on Gecode, or to understand some concept. While it is fine to ask for, or share, secondary aspects of homeworks, you are not allowed to post (crucial fractions of) entire solutions to the homeworks.

Updated  2015-09-18 22:18:12 by Pierre Flener.