120 credits including Basic Course in Mathematics and Algebra I or Basic Algebra, and 10 credits in programming or another combination of courses containing basic concepts in algebra, combinatorics, logic, graph theory, set theory and implementation of (basic) search algorithms. Proficiency in English equivalent to the Swedish upper secondary course English 6.
Combinatorial optimisation problems arise in many fields, for example, design and resource allocation in communication systems, motion planning for autonomous vehicles, verification and synthesis of chip circuits, scheduling of scientific experiments, design of cryptographic substitution functions, design of steel mill slabs, and identification of a minimum set of reactions to synthesise a given molecule. The course teaches the use of tools to solve hard combinatorial optimisation problems by first modelling them in a solver-independent constraint modelling language and then using an off-the-shelf constraint solver, as opposed to designing an (approximation) algorithm from first principles. The theory and algorithms underlying the constraint solvers used in this course will not be explained in depth, as specialised courses exist for this purpose, hence the course is relevant for students in many research areas, not only computer science, especially nowadays that combinatorial problems become more and more central to many research activities. The modelling and analytical skills that are central to this course are also important on their own and can be applied to other types of problems.