This monograph deals with theoretical and practical aspects of creating course timetables at academic institutions. The task is typically to create a timetable that suits the requirements of the stakeholders - students, lecturers, and the administration - as well as possible. The book presents an exposition of the basic combinatorial problems and solution methods for course timetabling and related tasks. It provides a rigorous treatment of fairness issues that arise in the course timetabling context and shows how to deal with the potentially conflicting interests of the stakeholders. The proposed methods are also readily applicable to other classes of scheduling problems such as staff rostering. Finally, it presents a comprehensive case study on the implementation of an automated course timetabling system at the school of engineering of the University of Erlangen-Nuremberg. The case study includes a detailed description of the problem model as well as an evaluation of stakeholdersatisfaction.