Constraint programming is a way to solve optimization problems like scheduling. Students usually encounter this a graph colouring problem in their discrete mathematics class.

I find it a little similar to arranging the atoms in a crystal lattice so that the material is stable.