Inspiration

Frustration about having to navigate McGill's website when creating a course plan as a first year student.

What it does

Asks user for a Bachelor of Science Program. It then generates a network displaying the required classes connected to their perquisites in an almost tree like structure. On each node for a class, the user can click on the name to open the course description in the eCalendar which also displays other useful info such as term and professor(s).

How we built it

We used Beautiful Soup and Requests python's library to parse the program website and extract the required courses. We then used these libraries again when parsing a course for the listed prerequisites. Python was also used to create a graph class with nodes having the necessary data such as course name, course code, and link to course on eCalandar. The Graphviz was used to visualize the graph for the user.

Challenges we ran into

Getting our code to run on a website. We realized that we would not be able to implement with the website for the end of the hackathon, and we had trouble

Accomplishments that we're proud of

We are proud that we were able to parse the McGill website to find the required courses and prerequisite courses information. We are also proud of being able to make a visual for our graph object, i.e. the network between required courses.

What we learned

We learned more about the python libraries Requests, Beautiful-Soup, and Graphviz.

What's next for Prereq_Or_Get_Wrecked

During this hackathon, we focused on making our code work with only particular programs within Math and Computer Science. A future improvement would be to make it a tool that can be used by any science program within McGill, or even for other non-science undergraduate programs. We could also try to generalize it to other universities who have a system similar to McGill's eCalendar. We also would like to make our graph easier to read such as by adding colour codes for the level of the course or just the general order the nodes are placed in.

Built With

Share this project:

Updates