Modern Constraint Programming Education: Lessons for the Future