Research on optimization primarily focuses on constraint programming, large-scale optimization and decomposition techniques, hybrid optimization, and bi-level optimization. Constraint programming is one of the fundamental methodologies for solving hard discrete optimization problems, which is particularly adapted to scheduling, routing, and timetabling problems. It can also be hybridized nicely with mathematical programming techniques, especially combinatorial Benders decomposition and branch & price & check. It has become a mature technology with excellent commercial and open-source solvers. The MiniCP solver, provides a small kernel for students to learn constraint-programming implementations.