This book introduces readers to the principles of intelligent decision support systems (IDSS) and how to build them with MiniZinc, a free, open-source constraint programming language. Managing an IDSS project requires an understanding of the system's design and behaviour. The book enables readers to appreciate what "combinatorial" optimisation problems are, and how modelling a problem provides the basis for solving it. It also presents the main algorithms for tackling decision support problems, discusses their strengths and weaknesses, and explores ways of achieving the necessary scalability when problems become big. Moreover, to support the learning process it allows readers to try out the ideas described in the text on model applications and puzzles. The book highlights the potential benefits of deploying an IDSS. It enables users to recognise the key risks involved and identify which techniques can be applied to minimise them, and to understand the decision support technology sufficiently in order to manage or monitor an IDSS project. It also helps readers distinguish between good sense and mere jargon when dealing with anyone involved in an IDSS project, from sales personnel to software implementers. As such it especially appeals to graduate students and advanced professionals who need to learn how to build an IDSS and to tackle the problems on the way.