dave@lsuc.UUCP (David Sherman) (06/18/86)
I need a system for scheduling students into classes. Here's the problem: The Bar Admission Course has approximately 1100 students in three cities. In the past, we simply divided them up (alphabetically) into seminar groups of 25 or so. All of the regular student data is stored on a Mistress (Empress) database running under UNIX. This year, students have a bunch of choices. For one course, they choose 2 out of 10 options (and get assigned to seminar rooms accordingly). For another, they choose 1 out of 4, plus one out of 3 time slots. In all these cases, they rank their choices so we can give them their second or third choice at worst. For some courses, they can choose an "advanced" seminar. Depending on the number that choose advanced seminars, we might have to cut down the number of regular seminars due to a limitation in number of rooms. And so on. Limiting criteria include: number of rooms available; number of students in a given room (the rooms vary in size); number of faculty available to teach seminars in a particular topic; availability of evening time slots. [Where possible, I think we want to keep people in the same regular group together all year, though some seminar groups may get split up and sprinkled around to make (physical) room for advanced seminars.] Using the database query language is too cumbersome. What I need is a package which will take all of the indicated preferences and give as many people as possible their first choice, subject to all of the weird constraints I've mentioned. Does such a thing exist? Under UNIX? Any universities using such programs for their scheduling? If it proves to be so custom a job that I have to program it myself, I'll do so in C with hooks into the database. Is there literature on how to write such things that anyone can point me at? Obviously I want it to be as flexible as possible. Any help would be appreciated. David Sherman Bar Admission Course The Law Society of Upper Canada Osgoode Hall Toronto, Canada M5H 2N6 (416) 947-3466 -- { ihnp4!utzoo pesnta utcs hcr decvax!utcsri } !lsuc!dave