Classy: Helping you register for full courses at the University of Calgary
Classy is a command-line application to help University of Calgary students register for full courses. It periodically queries the university’s PeopleSoft-based online course registration system for the status of particular course sections, then notifies the user via e-mail as soon as course status changes from closed to open or waitlisted. Classy’s notable features include these:
- Classy does not require user credentials, as it scrapes a publicly available course list.
- Classy supports multiple users, each of whom may specify multiple courses of interest.
- In specifying courses to query, one may choose to receive notification if any section (including any tutorials or labs) is open, or if only a particular subset of sections (such as a given lecture) are open.
Such artifacts of shoddy system engineering manifest themselves in the
application portion exposed to its users, like pooling pus at the site of a
festering wound. Consider the system’s recent modification of field names, in
which POST parameters such as
CLASS_SRCH_WRK2_OEE_IND$76$$chk were replaced
by ones such as
CLASS_SRCH_WRK2_OEE_IND$14$$chk, differing only in numeric
ID. Though I spent nearly an hour tracking down the source of this issue and
resolving all instances of it in my code, I am not in
the least bitter; instead, I marvel at the briefest glimpse of the labryinthine
underlying complexity this betrays, surely so stultifyingly intricate as to be
beyond the grasp of the human mind.
Classy continues a longstanding tradition at the University of Calgary in which students correct system shortcomings that the university is unwilling or unable to address. The only task more arduous than monitoring a full course for openings, is that of constructing a schedule in the first place. To ease this process, a CS-student friend and his brother built DNDN, a web-based course scheduler that permits you to construct a schedule while retaining your sanity, putting it at a distinct advantage relative to the university’s official offering. Specifically, DNDN lets you play with course combinations without requiring any round trips to the server, granting the application an instantaneous response time that is joyful in contrast to the multiple seconds required for each query in PeopleSoft. DNDN shows you precisely which conflicts occur between courses, freeing you from trying to maintain this information yourself in a spreadsheet or on paper; moreover, DNDN even includes an automated schedule generator that will attempt to create an optimal schedule based on a selected list of courses.
Though I am departing from the U of C this fall (and my friend is already ensconced at UBC), DNDN and Classy illustrate that, in a world controlled by computers and driven by data, programming is a superpower. I hope others may benefit from this code in the same way I have.