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.

I hacked together the first version of Classy in November 2012, when I was unduly frustrated in my attempts to monitor the status of full courses in which I hoped to gain a spot. The need to log in to PeopleSoft multiple times per day cast into doubt my desire to live. PeopleSoft epitomizes Enterprise (with the capital “E” fully warranted) software, alongside all its attendant features: multi-second interpage latencies, granting the user ample opportunity to reflect on life as he completes workflows that have been engineered to maximize the number of page loads for even the simplest tasks; an inexplicable use of JavaScript to load each page within a single container, presumably dating to the Pleistocene when gratuitous (ab)use of such technologies (remember when “Ajax” was more than a household cleaning product?) allowed you to cast yourself as fully Web-2.0 compatible; and a surfeit of cryptic POST and cookie parameters accompanying every request, doubtlessly intended to intimate the innumerable layers of code accumulated through the application’s rich and storied history, where it has been carelessly coddled by a phalanx of mediocre wage slaves toiling tirelessly in the sulfurous bowels of Big Software.

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.