This document discusses CP Optimizer, a generic optimization engine developed by IBM for solving industrial scheduling problems. It describes how CP Optimizer integrates concepts from artificial intelligence such as temporal reasoning to model scheduling problems declaratively, unlike mixed integer linear programming which models time numerically and is not well-suited for scheduling. CP Optimizer uses constraint propagation and other techniques from AI and operations research within an exact algorithm to solve scheduling problems efficiently and prove optimality. It has been shown to outperform MILP on standard scheduling benchmarks and can model complex real-world scheduling problems.