Introduction
The objective of the scheduler project is to build a software tool to help academic departments with course scheduling. Some of the features we envision for the tool are the following:
- an easy-to-use database of instructor information, which includes course teaching preferences and teaching time preferences
- an easy-to-use database of a department's course offerings, including courses planned for particular quarters
- the ability to define department-specific scheduling constraints to guide the scheduling process
- a sophisticated scheduling algorithm that generates an optimized schedule, based on instructor preferences, planned course offerings, and departmental constraints
- the ability to fine tune a generated schedule, with automated checking to ensure schedule completeness and consistency
We envision the tool being used at the department level, by the same people who normally perform department scheduling now. The result of a scheduling session will be in a form suitable for electronic submission to the campus scheduling database. Qualitatively, we seek to generate a schedule that is complete, consistent with faculty preferences, consistent with departmental constraints, and fair to a department's faculty overall.
A Brief History
Achieving the objectives outlined above could be an ambitious undertaking. An advantage we have in our efforts is a history of working on course scheduling projects. Specifically, versions of the scheduling tool have been assigned as two-quarter class projects in undergraduate software engineering courses for a number of years. In addition, there have been several senior projects that have refined key scheduling functionality, including the scheduling algorithm and schedule database management. The results of these past efforts provide a solid base on which to work. The Examples page of this introductory website has some samples of recent student work.
What's New this Year
As many academics know, it is difficult to achieve production-quality work from student class projects, even senior projects. This year's work on the scheduling project will be conducted in a new course setting -- the Computer Science Department's software engineering capstone course. The primary goal for the capstone is to produce software that can be deployed in an actual operational setting.
Using the student work so far as a basis, we believe that a production-quality scheduling tool is an achievable goal in the coming year. To be sure, there will be many technical and organizational challenges. The other pages of this website provide an introduction to how we plan to meet the challenges.