Constraint Programming (M) COMPSCI5006
- Academic Session: 2026-27
- School: School of Computing Science
- Credits: 10
- Level: Level 5 (SCQF level 11)
- Typically Offered: Semester 1
- Available to Visiting Students: Yes
- Collaborative Online International Learning: No
- Curriculum For Life: No
Short Description
We cover Constraint Programming and its use in solving a number of combinatorial problems. We also cover the underlying technology, and related combinatorial optimisation approaches.
Timetable
3 hours per week
Requirements of Entry
For MSc students - Honours degree in Computing Science
For Honours students - 3rd year Computing Science
For MSci students - 4th year Computing Science
Excluded Courses
None
Co-requisites
None
Assessment
Summative coursework will consist of multiple-choice quizzes (20% within the 'set exercise' category), set coding tasks with descriptions of results (30% within the 'set exercise' category), and a research-focussed project output (e.g. a research-style poster).
Course Aims
To enable students to implement constraint programming solutions to a number of combinatorial problems using a state of the art constraint programming toolkit.
To give students a critical appreciation of the fundamental concepts of constraint satisfaction and constraint programming, and the ability to compare to related search approaches.
To give the student an appreciation of, and exposure to, commercial applications and the research directions in constraint programming.
To understand the basic mechanics of a constraint programming toolkit (such that they might implement such a toolkit).
Intended Learning Outcomes of Course
By the end of this course students will be able to:
1: Model complex problems (such as scheduling problems, design and configuration problems) as constraint programs, using a state of the art constraint programming toolkit;
2: Implement the algorithms for achieving constraint propagation, and critically appreciate the costs and benefits of different levels of consistency;
3: Demonstrate extensive, detailed and critical knowledge and understanding of constraint satisfaction from a theoretical point of view, and be able to compare to other combinatorial approaches;
4: Implement, the search algorithms typically used in constraint programming;
5: Use various variable and value ordering heuristics;
6: Discuss current issues and research direction in constraint programming.