This book presents an introduction to Constraint Logic Programming (CLP), a software paradigm that is becoming increasingly popular for solving both combinatorial and continuous constraint satisfaction and constraint optimization problems. It is based on the widely supported and documented ECLiPSe platform, which is available under the Mozilla Public License. The author focuses on teaching modeling, or the process of converting verbal problem statements into Prolog or CLP programs, using a series of progressively more complex problems. The theoretical foundations are minimized in favor of an intuitive understanding of the material. The book covers finding feasible and optimal states and state-space trajectories for constraint satisfaction problems, starting with simple puzzles and moving on to more advanced topics such as graph coloring and scheduling problems, with a particular emphasis on job-shop problems and the famous MT10 benchmark. The final chapter discusses continuous constraint satisfaction and constraint optimization problems.