Inspiration

When transitioning from high school to university, one thing you notice is that the newfound responsibility greatly outweighs the sense of freedom you gain. For many incoming students, it's their first time living independently and having to manage their schedules and chores on their own which can be overwhelming. Many also struggle to choose their classes and to visualize their schedules from McGill's program pages on the eCalendar since there are so many constraints for which courses you can take and when. We wanted to ease this process by providing students with an example schedule for the required courses of their particular major and compiling together all the salient information they need to figure out when to take them.

What it does

Our program takes in the link to the eCalendar's program page with all the program requirements, scrapes through it for the salient information about each required course, runs it through an algorithm that determines a feasible class schedule considering the constraints, and outputs said schedule as well as a table with all the information for the required courses (ie. course code and name, which term it's available, the prerequisites and corequisites, etc.).

How we built it

Back-end: We wrote a Python script to scrape through the website for the courses and associated information, along with an algorithm to sort through this information to put together a 3-year schedule.

Front-end: We created a website with HTML/CSS and implemented the Python script using Flask.

Challenges we ran into

So. many. Lots of different issues from learning how to web scrape, how to host a website, how to use Flask, and just your regular ol' angry-crying-breakdown inducing debugging.

Many issues with exporting the script from the Jupyter notebook where it was written and running it through Python, as well as when running it with Flask.

Accomplishments that we're proud of

Our website is cute and our code functions (in theory)! Still some improvements to be made to the output but we did accomplish the main parts of what we set out to do and we persevered to put it all together.

What we learned

We learned so much about the coding process -- particularly how to integrate the back-end and front-end together for the finished product. We also learned how to work as a team and how to handle the issues that kept popping up and triaging them based on the ones that needed to be most urgently addressed and the ones we could afford to leave out.

What's next for McGill Degree Planner

We had big hopes for McGill Degree Planner and we may have taken a bigger bite than we could chew, but our project has a solid enough base that we can build on it. First, we'd have to improve our output, and then we can add the other features we originally envisioned: for example, the option to select complementary courses to include in the schedule, being able to build a schedule while in the middle of your degree (so it would consider classes that have already been taken), and the ability to create multiple versions of a schedule according to the student's preferences.

Built With

Share this project:

Updates