A simulated annealing approach to the curriculum-based course timetabling problem