Optimization Backend Engine

Implement OptaPlanner Engine in Spring Boot backend to optimize users' selected courses and its respective timeslots. Add constraints to disallow overlapping timeslots, and try to minimize days and gaps between courses. Moreover, add Docker configuration files to run it.

Edited by Cedric Wang