Purdue is a large (39,000 students) public university with a broad spectrum
of programs at the undergraduate and graduate levels. In a typical term there
are 9,000 classes offered using 570 teaching spaces. Approximately 259,000 individual
student class requests must be satisfied. The complete university timetabling
problem is decomposed into a series of subproblems to be solved at
the academic department level, where the resources required to provide instruction
are controlled. Several other special problems, where shared resources or
student interactions are of critical importance, are solved institution wide. A
major consideration in designing the system has been supporting distributed
construction of departmental timetables while providing central coordination of
the overall problem. This reflects the distributed management of instructional
resources across multiple departments at the University.
Purdue University timetabling problem is naturally decomposed into
 a centrally timetabled large lecture room problem (about 800 classes being
timetabled into 55 rooms with sizes up to 474 seats),
 individually timetabled departmental problems (about 70 problems with 10
to 500 classes),
 and a centrally timetabled computer laboratory problem (about 450 classes
timetabled into 36 rooms with 20 to 45 seats).
The large lecture room problem consists of the largest classes on campus that are
attended by students from multiple departments. The problem is also very dense.
For instance, rooms are utilized on average over 70% of the available time, and
this rate increases with room size (utilization is over 85% for all rooms above 100
seats and about 97% for the four largest rooms having over 400 seats). Since there
are many interactions between this problem and the departmental problems, the
large lecture problem is solved first and the departmental problems are solved
on top of this solution.
On the opposite end of the spectrum, the computer laboratory problem is
solved at the very end of the process, on top of the large lecture room and
departmental problem solutions. It contains only small classes, most of which
have many sections (laboratories are normally the smallest subparts of a course).
A typical example is a course having one large lecture class for 100 students, two
departmental recitations with 50 students each, and four computer laboratories
of 25 students.
The departmental problems are solved more or less concurrently. These problems
are usually quite independent of one another, occurring in mostly different
sets of rooms, with separate instructors and students. However, there are some
cases with higher levels of interactions, particularly among students. In order
to address these situations, a concept referred to as "committing" solutions has
been introduced. Each user of the timetabling system (e.g., a departmental schedule
manager) can create and store multiple solutions. At the end of the process
a single solution must be selected and committed. During the commit, all conflicts
between the current solution and all other solutions that have already been
committed are checked and the commit is successful only when there are no hard
conflicts between these solutions. Each problem being solved also automatically
considers all of the previously committed solutions. This means that a room, an
instructor, or a student is available at a particular time only if that time is not
already occupied in a commited solution for a different problem. This approach
can be beneficial, for instance, in a case where there are two or more departments
with many common students. Here, the problems can be solved in an
agreed upon order (the second department will solve its problem after the first
department commits its solution). Moreover, if a room must be shared by two
departments, a room sharing matrix can be defined, stating the times during the
week that a room is available for each department to use. Finally, there is also
an option to combine two or more individual problems and solve as one larger
problem, considering all of the relations between the problems in real time.
To minimize potential time conflicts, Purdue has historically subscribed to a set of standard meeting patterns.
With few exceptions, 1 hour x 3 day per week classes meet on Monday, Wednesday, and Friday at the half hour
(7:30, 8:30, 9:30, ...). 1.5 hour x 2 day per week classes meet on Tuesday and Thursday during set time blocks. 2 or 3
hours x 1day per week classes must also fit within specific blocks, etc. Generally, all meetings of a class should be
taught in the same location. Such meeting patterns are of interest to the problem solution as they allow easier changes
between classes having the same or similar meeting patterns.
Due to the set of standardized time patterns and administrative rules enforced at the university, it is generally
possible to represent all meetings of a class by a single variable. This tying together of meetings considerably
simplifies the problem constraints. Most classes have all meetings taught in the same room, by the same instructor,
at the same time of day. Only the day of week differs. Moreover, these days and times are mapped together with the
help of meeting patterns, e.g., a 2 hours x 3 day per week class can be taught only on Monday, Wednesday, Friday,
beginning at 5 possible times. Or, for instance, a 1 hour x 2 day per week class can be taught only on
MondayWednesday, WednesdayFriday or MondayFriday, beginning at 10 possible times.
In addition, all valid placements of a course in the timetable have a onetoone mapping with values in the
variable's domain. This domain can be seen as a subset of the Cartesian product of the possible starting times,
rooms, etc. for a class represented by these values. Therefore, each value encodes the selected time pattern (some
alternatives may occur, e.g., 1.5 hour x 2 day per week may be an alternative to 1 hour x 3 day per week), selected
days (e.g., a two meeting course can be taught in MondayWednesday, TuesdayThursday, WednesdayFriday), and
possible starting times. A value also encodes the instructor and selected meeting room. Each such placement also
encodes its preferences (soft constraints), combined from the preference for time, room, building and the room's
available equipment. Only placements with valid times and rooms are present in a class's domain. For example,
when a computer (classroom equipment) is required, only placements in a room containing a computer are present.
Also, only rooms large enough to accommodate all the enrolled students can be present in valid class placements.
Similarly, if a time slice is prohibited, no placement containing this time slice is in the class's domain.
As mentioned above, each value, besides encoding a class's placement (time, room, instructor), also contains
information about the preference for the given time and room. Room preference is a combination of preferences on the
choice of building, room, and classroom equipment. The second group of soft constraints is formed by student
requirements. Each student can enrol in several classes, so the aim is to minimize the total number of student
conflicts among these classes. Such conflicts occur if the student cannot attend two classes to which he or she has
enrolled because these classes have overlapping times. Finally, there are some group constraints (additional relations
between two or more classes). These may either be hard (required or prohibited), or soft (preferred), similar to
the time and room preferences (from 2 to 2).
There are two types of basic hard constraints:
resource constraints (expressing that only one course can be taught by an instructor or in a particular room at the
same time), and group constraints (expressing relations between several classes, e.g., that two sections of the same
lecture can not be taught at the same time, or that some classes have to be taught one immediately after another).
Except the constraints described above, there are several additional constraints which came up during our work on
this lecture timetabling problem. These constraints were defined in order to make the automatically computed timetable
solution acceptable for users from Purdue University.
First of all, if there are two classes placed one after another so that there is no time slot in between (also called
backtoback classes), distances between buildings need to be considered. The general feeling is that different rooms
in the same building are always reasonable, moving to the building next door is to be discouraged, a couple of buildings
away strongly discouraged, and any longer distance prohibited.
Each building has its location defined as a pair of coordinates [x,y]. The distance between two buildings is estimated
by Euclides distance in such two dimensional space, i.e., (dx^2 + dy^2)^(1/2) where dx and dy are differences between
x and y coordinates of the buildings. As for instructors, two subsequent classes (where there is no empty slot in between,
called also backtoback classes) are infeasible to teach when such difference is more than 200 meters (hard constraint).
The other options (soft constraints) are:
 if the distance is zero (same building), then no penalty,
 if the distance is above zero, but not more than 50 meters, then the placement is discouraged,
 if the distance is between 50 and 200 meters, the placement is strongly discouraged
Our concern for distance between backtoback classes for students is different. Here it is simply a question of
whether it is feasible for students to get from one class to another during the 10minute passing period. At present,
the distance between buildings not more than 670 meters is considered as an acceptable travel distance. For the
distance above 670 meters, the classes are considered as too far. If there is a student attending both classes, it
means a student conflict (same as when these classes are overlapping in time). The only exeption is when the
first meeting is 90 minutes long  the acceptable travel distance is 1000 meters, since there is for 15minute passing period.
Next, since the automatic solver tries to maximize the overall accomplishment of soft time and room constraints
(preferences), the resultant timetable might be unacceptable for some departments. The problem is that some
departments define their time and room preferences more strictly than others. The departments which have not defined
time and room preferences usually have most of their classes taught in early morning or late evening hours. Therefore,
we introduced the departmental time and room preferences balancing mechanism. The solver is trying to fulfill the time
and room preferences as well as to balance the used times between individual departments. This means that each
department should use each time unit (halfhour, e.g., Monday 7:30 – 8:00) in a similar portion to the other time
units used by the department.
Finally, since all of the classes are at least 60 minutes long, every window of empty time slots
of a room that is surrounded by classes on both sides and that is less than 60 minutes long (i.e., the room is not
used for 30 minutes between two consecutive classes) is considered useless – no other class can use it.
The number of such useless hours should be minimized. Also the situation when a room is occupied by a
class which is using less than 2/3 of its seats is discouraged. Both these
soft constraints are considered much less important than all the constraints described above.
Many course offerings consist of multiple classes, with students enrolled in the
course divided among them. These classes are often linked by a set of constraints,
namely:
 Each class has a limit stating the maximum number of students who can be enrolled in it.
 A student must be enrolled in exactly one class for each subpart of a course.
 If two subparts of a course have a parent–child relationship, a student enrolled
in the parent class must also be enrolled in one of the child classes.
Moreover, some of the classes of an offering may be required or prohibited for
certain students, based on reservations that can be set on an offering, a configuration,
or a class.
Before implementing the solver, an initial sectioning of students into classes
is processed. This sectioning is based on Carter’s homogeneous sectioning
and is intended to minimize future student conflicts. However, it is still possible
to improve on the number of student conflicts in the solution. This can be accomplished
by moving students between alternative classes of the same course
during or after the search.
In the current implementation, students are not resectioned during the
search, but a student resectioning algorithm is called after the solver is finished
or upon the user’s request.
Since students are not resectioned during the timetabling search, the computed
number of student conflicts is really an upper bound on the actual number
that may exist afterward. To compensate for this during the search, student conflicts
between subparts with multiple classes are weighted lower than conflicts
between classes that meet at a single time (i.e., having student conflicts that
cannot be avoided by resectioning).
