A mixed-integer programming approach for solving university course timetabling problems