DM877: Constraint programming

The Study Board for Science

Teaching language: Danish or English depending on the teacher
EKA: N340071102
Assessment: Second examiner: Internal
Grading: 7-point grading scale
Offered in: Odense
Offered in: Autumn
Level: Master

STADS ID (UVA): N340071101
ECTS value: 5

Date of Approval: 09-05-2025


Duration: 1 semester

Version: Approved - active

Comment

The course is offered as required and is not necessarily offered every year. Exam attempts for DM877 are offered in accordance to the following plan, when the course is offered: Autumn (course Start september): ordinary Exam (January), first reexamination (March) and 2nd reexamination (June or August).

Entry requirements

The course cannot be chosen by students who have passed DM811, DM826 or DM841.

Academic preconditions

Students taking the course are expected to be able to:

  • use algorithms and data structures
  • assess the complexity of the algorithms with respect to running time and space consumption
  • program

The contents of DM550 Introduction to Programming and DM507 Algorithms and Data structures must be known.

The course builds on the knowledge gained in the courses DM550 Introduction to Programming and DM507 Algorithms and Data Structures. The course provides a basis for making a thesis in which algorithms for discrete optimization are to be designed, analyzed and implemented.

Course introduction

The course aims to enable the student to use constraint programming systems, which is important in order to solve computational non-trivial problems in an often in practice effective way. Examples of these problems are discrete optimization problems such as scheduling, logistics, energy planning, sports planning and resource allocation. To help solve these problems, general purpose programming paradigms have been developed. This course provides an introduction to one of these: Constraint programming.

Constraint Programming is a programming language paradigm where variables and conditions between variables are expressed in a declarative form. A solution is sought by trying to assign a value selected from a valid domain to a variable and then by filtering values ​​from the domains of the other variables if these cannot not be part of a solution according to the given conditions.

One simply cannot learn to cope with the challenges of discrete optimization without trying to solve real problems. The course aims to provide first-hand experience through programming assignments that include the use of tools that illustrate many of the basic concepts covered in the lectures.

Expected learning outcome

The learning objective of the course is that the student demonstrates the ability to:

  • model a problem similar in nature to the ones seen in the course within the framework of constraint programming
  • argue about the different modeling choices arising from the theory behind the components of constraint programming, including global constraints, propagators, search and branching schemes.
  • develop a solution prototype in a constraint programming system 
  • undertake an experimental analysis, report the results and draw sound conclusions based on them.
  • describe the work done in an appropriate language

Content

The following main topics are contained in the course:

  • constraint satisfaction model
  • local consistency and propagation
  • global constraints
  • search and tree-based search heuristics
  • symmetry breaking
  • random restart strategies and large scale neighborhoods
  • constraint programming systems
  • applications: puzzles, combinatorial design, route planning, scheduling.

Literature

See itslearning for syllabus lists and additional literature references.

Examination regulations

Exam element a)

Timing

Autumn

Tests

Mandatory assignments

EKA

N340071102

Assessment

Second examiner: Internal

Grading

7-point grading scale

Identification

Full name and SDU username

Language

Normally, the same as teaching language

Examination aids

All common aids allowed

ECTS value

5

Additional information

The exam consists of three assignments in form of small problem solving projects with practical solution and short report. The first assignment is for feedback only, the last one alone determines the final 7-grade scale evaluation.

The examination form for re-examination is the same form as the ordinary exam. Submitted elements from the ordinary exam can be included in the re-exam.

Indicative number of lessons

44 hours per semester

Teaching Method

Planned lessons: 

Total number of planned lessons: 44

Hereof: 

Common lessons in classroom/auditorium: 44 

In the common lessons, concepts, theories and models are introduced and put into perspective. In these lessons there is room for questions and discussions. In addition, students will work in small groups on data-based problems and discussion topics, related to the content of the previous lessons. In these hours there is a possibility of working specifically with selected difficult concepts

Other planned teaching activities: 

  • Solution of weekly assignments in order to discuss these in the exercise sections.
  • Solving the project assignments
  • Self study of various parts of the course material.
  • Reflection upon the intro and training sections.

Teacher responsible

Name E-mail Department
Marco Chiarandini marco@imada.sdu.dk Algoritmer

Timetable

Administrative Unit

Institut for Matematik og Datalogi (datalogi)

Team at Registration

NAT

Offered in

Odense

Recommended course of study

Profile Education Semester Offer period

Transition rules

Transitional arrangements describe how a course replaces another course when changes are made to the course of study. 
If a transitional arrangement has been made for a course, it will be stated in the list. 
See transitional arrangements for all courses at the Faculty of Science.