Optimizing Student Course Preferences in School Timetabling