The use of constraints had its scientific and commercial breakthrough in the 1990s. Programming with constraints makes it possible to model and specify problems with uncertain, incomplete information and to solve combi natorial problems, as they are abundant in industry and commerce, such as scheduling, planning, transportation, resource allocation, layout, design, and analysis. This book is a short, concise, and complete presentation of constraint programming and reasoning, covering theoretical foundations, algorithms, implementations, examples, and applications. It is based on more than a decade of experience in teaching and research about this subject. This book is intended primarily for graduate students, researchers, and practitioners in diverse areas of computer science and related fields, including programming languages, computational logic, symbolic computation, and ar tificial intelligence. The book is complemented by a web-page with teaching material, software, links, and more. We take the reader on a step-by-step journey through the world of constraint-based programming and constraint reasoning. Feel free to join in ... Acknowledgements Thorn thanks his wife Andrea and his daughter Anna - for everything. He dedicates his contribution to the book to the memory of his mother, Grete. Slim thanks his wife N abila and his daughters Shirine and Amira for their ongoing support and patience.