This paper presents a method for solving a specific class of timetabling problems. The solution introduced here proceeds in two phases: the construction of a time table that generally is not optimal, and a subsequent improvement of the time table. The first phase was successful solved using constraint programming (finite domain), the second one was realized as a multi-agent system. Resuits of the proposed optimization process have been verified by data from a college time table. The language Oz served as programming language and the system DFKI-Oz as convenient implementation tool.