While I was studying at McGill, I wrote a small Python script which read in an XML file which contained a description of university courses and programs; the script verified that each course’s prerequisites and corequisites were satisfied, and that the requirements of the program were satisfied. The script would then produce an HTML file listing the courses taken each semester (highlighting those with unmet prerequisites or corequisites), as well as the met and unmet program requirements. The script also used
dot (part of the GraphViz package) to produce a diagram showing the interactions between course prerequisites. It is my understanding that software of this type is actually of commercial value, as evidenced by such things as the CAPP module in SunGard (formerly SCT) Banner, and its Degree Audit feature, which is similar to what has been described here. Other student information systems have similar features, but I have found that they all have certain shortcomings—one of the more common shortcomings is an inability to input course selections for future terms and perform a “what-if” analysis, making it possible to formulate a multi-semester plan, rather than simply evaluating the courses taken thus far against degree requirements.
I have recently dusted the code off and posted it to GitHub, in the hope that someone may find it useful. I’ve also made some improvements; most notably,
dot is now used to generate SVG output which is directly included in the XHTML generated by the script. Previously,
dot produced a PNG file and imagemap which were used together. The new solution is cleaner, as it allows the output to be contained in a single file. An example of the output produced can be found here. While I cannot say this with any certainty, I believe this type of graphical output is unique among degree audit tools.
A word of explanation concerning the name is probably in order as well; it refers to a document issued to incoming Engineering students at McGill which laid out, in great detail, and with little room for variation, the courses one would take over the coming eight semesters. This document was thus referred to as one’s ‘life’. Were you to deviate from it, you would find yourself in uncharted, shark-infested waters, and this software was designed to alleviate some of that.
I do not know if I will continue working on the software beyond what I have already done; if I do, then my priorities will likely be to make the necessary changes so that the degree evaluation information which is currently printed to stdout is also included in the HTML report, as well as improving the experimental Tkinter interface (which is also included in the Git repository).