Many students coming into the University of Calgary are burdened with the overwhelming number of courses to choose from, with a dizzying amount of ways to approach different end goals. Instead, we thought it would be much better if first years could look at specific courses they are interested in and then let them know their different options to get there.
What it does
The UCalgary Prerequisite Wizard takes in a course as input and outputs a tree depicting the prerequisite courses one needs to take for the given course. (only works for Mac OS at the moment)
How we built it
We built the UCalgary Prerequisite Wizard using Python. We webscraped the University of Calgary’s course website for prerequisite data, and subsequently cleaned and formatted the prerequisites into an usable CSV format. The resulting tree-path output was generated using recursion and the AnyTree library.
Challenges we ran into
Web Scraping – The data contained within the html files parsed from the University of Calgary’s course website was not consistently written. We had to also convert the English language into a format that could be parsed by our program. Any data that could not be translated had to be manually changed.
Tree drawing – Learning and implementing the AnyTree library was a difficult task. One of the things we struggled with the most was setting up the algorithm to recursively set up the tree while also properly using the library.
Accomplishments that we're proud of
We have learned a lot, and have achieved our goal of creating a semi-working prototype of our project. Completing our first hackathon and most importantly having fun!
What we learned
Web Scraping; Tree data structures; GitHub; Project planning; Planning for attainable end-goals
What's next for UCalgary's Prerequisite Wizard
– Improve the web scraper to more accurately retrieve prerequisite data from the University of Calgary’s courses website
– Allow user to input all current courses, and highlight courses already taken, and courses missing
– Create a GUI version and add interactivity for the tree in terms of being able to open and close branches
– Add in the ability to incorporate filters such as “No Prerequisites,” “GPA Booster,” “Faculty,” “Majors,” “Year Level,” etc.
– Make it more compatible with Windows, Linux, etc. (Currently most compatible with Mac OS)