A survey of automated timetabling