Using distributed agents to create university course timetables addressing essential & desirable constraints and fair allocation of resources. - Pennee Wangmaeteekul (2011)