Creates an optimal schedule for a semester of courses