Skip to main content

ID2204 Constraint Programming 7.5 credits

The theme of the course is modeling and solving combinatorial (optimization) problems with constraint programming. Constraint programming has been identified by ACM as one of the strategic directions in computer science. Combinatorial problems are ubiquitous, a few examples are assigning and scheduling resources, designing processor instruction sets, and optimizing instruction ordering during compilation. The course teaches the fundamental concepts underlying constraint programming, applications, extensions, and relation to other techniques employed in combinatorial optimization.

Course offering missing for current semester as well as for previous and coming semesters
Headings with content from the Course syllabus ID2204 (Spring 2020–) are denoted with an asterisk ( )

Content and learning outcomes

Course contents

The course acts to model and solve combinatorial (optimisation) problem by means of constraint programming. There are combinatorial problems everywhere, for example to assign and timetable resources, design instructions for processors and optimise instruction scheduling at compilation. This course teaches the basic concepts in constraint programming, applications, expansions and its relation to other technologies for combinatorial optimisation.

  • To model with constraint programming.
  • Basic solution methods: propagation and search.
  • Technologies for modelling, refinement of models, heuristic search methods, application to problems of industrial size.
  • Basic principles of constraint programming: models for propagation and search and their essential properties; different levels of propagation; different constraint domains; strong algorithmic methods for propagation.
  • Relation to other technologies to solve combinatorial problems (integer programming, local search), discussion of merits, limitations and hybrid variants.

Intended learning outcomes

After passing the course, the student shall be able to 

  • use techniques to model and solve constraint problems
  • explain the principles that form the basis for techniques to solve constraint problems
  • explain the main merits and the limitations with constraint programming and how constraint programming relates to other methods.

Course disposition

No information inserted

Literature and preparations

Specific prerequisites

Courses in basic computer science, discrete mathematics, algorithms and data structures. Basic proficiencies in object-oriented programming (for example: in Java or C++). 

Recommended prerequisites

Knowledge corresponding to at least one of: SF1610 Discrete Mathematics, ID1015 Logic for Computer Science, ID2213 Logic Programming, ID1218 Applied Programming.


No information inserted


No information inserted

Examination and completion

If the course is discontinued, students may request to be examined during the following two academic years.

Grading scale

A, B, C, D, E, FX, F


  • LAB1 - Laboratory Work, 3.0 credits, grading scale: P, F
  • TEN1 - Examination, 4.5 credits, grading scale: A, B, C, D, E, FX, F

Based on recommendation from KTH’s coordinator for disabilities, the examiner will decide how to adapt an examination for students with documented disability.

The examiner may apply another examination format when re-examining individual students.

Opportunity to complete the requirements via supplementary examination

No information inserted

Opportunity to raise an approved grade via renewed examination

No information inserted


Ethical approach

  • All members of a group are responsible for the group's work.
  • In any assessment, every student shall honestly disclose any help received and sources used.
  • In an oral assessment, every student shall be able to present and answer questions about the entire assignment and solution.

Further information

Course web

Further information about the course can be found on the Course web at the link below. Information on the Course web will later be moved to this site.

Course web ID2204

Offered by

Main field of study

Computer Science and Engineering, Information Technology

Education cycle

Second cycle

Add-on studies

No information inserted


Thomas Sjöland (

Supplementary information

N.B. The course will not be given as from spring semester -20

In this course, the EECS code of honor applies, see: