University Course Timetabling: A General Model