Each year at this time I give up my free periods to assist another member of staff (Marcia) in the dreaded Scheduling. My school has about 900 students, and there are (currently) 7 periods, most of which get filled with full year courses. Since each student gets 7-11 courses to pick for next year, there are about 8,000 course requests (one course for one student). At most schools, this translates to something called "arena scheduling": Based on the enrollment, the administration figures out how many sections of each class to run, creates a schedule based on teacher availability, and the students literally duke it out trying to get the courses they want / need in the time slots they want (and potentially with the friends they want). Unfortunately, a frequent side effect of arena scheduling is that a number of students end up last, meaning the courses the want (/ need) are filled, or they can’t make a schedule with everything they desire because two or more courses were inadvertently scheduled for the same time slot. In these situations, the student loses, and has to drop one or more of their choices. At BG, the Brothers have a different approach: The kids pick the classes they want (/ need), and we (Marcia and I) bend over backwards to make a schedule that pleases as close to everyone as possible. Students win, teachers are for the most part happy, and all it costs is Marcia and I going nuts for about 2 weeks.
The good news is that over the years I’ve written a number of neat little (okay, big) applications that help the process. A fair bit of programming, I’ll admit, to read in the 8,000 requests from 900 students selecting from 150 courses in 7 periods, store them, cross reference them (which courses have been selected by students in AP Comp Sci, and therefore can’t be scheduled at the same time as APCS?), and allow logical and easy display of the data. One of the things I like a LOT is something I called Singleton Spotter. A Singleton is a course that has only one section planned. These courses have to be scheduled first, because you don’t want a scenario where most of the schedule is completed and THEN you need to fit the one section of AP Bio (for example), only to find that 3/4 of the students who requested it are busy that period. Anyway, since we need to put the Singletons down first, I wrote some code that asks the user (Marcia or I) to pick the courses to spot, and then randomly picks a course and a period, checks the cross reference data to see if that period is in contention with any other spotted course, and if not, schedule the course in that period. The process is repeated until all the requested courses are spotted.
We used to do this by hand, and it took perhaps 5 minutes per course. When spotting 25 Singletons, this took hours; it now takes seconds. Life is good.