Course Timetabling is a complex problem and cannot be dealt with using only a few general principles. Each actor (i.e. the administrator, the chairman, the instructor and the student) has his own objective, and these objectives are usually conflicting. The complicated relationships between time periods, classes, classrooms, and instructors make it difficult to attain a feasible solution. In this article, we propose an artificial intelligence approach that integrates expert systems and constraint programming to implement a course timetabling system. Expert systems are utilized to incorporate knowledge into the timetabling system and to provide the reasoning capability for knowledge deduction. The separation of the knowledge base, facts and the inference engine in expert systems provides greater flexibility to support changes. The constraint hierarchy is utilized to capture hard and soft constraints and to reason about constraints using constraint satisfaction and relaxation techniques. Moreover, object-oriented software engineering is applied to improve the development and maintenance of the course timetabling system. A course timetabling system in the Department of Computer Science and Information Engineering at National Changhua University of Education (NCUE) is used as an illustrate example for the proposed approach.