| A large class of real world problems may be represented as Constraint Satisfaction Problems(CSPs). As a result, techniques for solving CSPs have been the subject of a lot of academic research. Constraint programming is one of the products of this research and provides a concise and declarative means to express and solve CSPs. Constraint programming also leads to abstract models of CSPs upon which a wide variety of techniques may be applied.;In this thesis, I present GRIND, an implementation of constraint programming that provides modelling and solving facilities for Constraint Satisfaction Problems, involving finite domain integer variables, in pure C++. GRIND is an active library that provides the functionality typically found in languages designed primary for constraint programming directly within C++. GRIND takes advantage of a wide variety of C++ features, such as generic programming, template meta-programming and operator overloading, to provide expressive forms for modelling CSPs at performance costs that do not deviate too far from that of systems designed purely for constraint programming.;The utility of GRIND is demonstrated through the modeling of a variety of puzzles and a real world problem and the results will show that GRIND enables programmers to simply model complex problems and efficiently compute solutions. |