In this dissertation we try to answer the following question: How do
we go about solving optimization problems, in general, and academic 
course scheduling (or timetabling) at the university level, in
particular? we give a detailed answer to the latter part, and
shed some light on the case of tackling optimization problems in
general.

To summarize, we have investigated a variety of optimization
algorithms, in particular, random search, hill climbing,
knowledge-based systems (or expert systems), tabu search and simulated 
  annealing-based methods to solve the course scheduling problem.
The simulated annealing-based approach includes mean-field annealing,
simulated annealing with three different cooling schedules, and the
use of a rule-based preprocessor to provide a good initial solution
for annealing. 
