Inspiration

As McGill students, building our class schedules is time-consuming and tedious. Class times, curriculum requirements, and professors were just some of the many factors we needed to consider when course planning. We often end up signing up for a random class section, judging the prof's teaching quality, and switching sections accordingly. Currently, the McGill Visual Schedule Builder is the only option for schedule generation, however, it has its limitations. We wanted to create a more powerful way for students to optimize their schedules effortlessly.

What it does

Our Schedule Builder creates the optimal student schedule for the highest quality professors. The user inputs their courses, and the program collects statistics from Rate My Professor to optimize the best professors accounting for quality and difficulty ratings. The Schedule Builder iterates through all the possible combinations of class sections to display the optimal student schedule.

How we built it

We used a Python backend and React frontend. The python backend makes use of Selenium and Chrome's WebDriver to load the course section list from minerva, find all the info about each section, then search the instructors on rate my professor.

Challenges we ran into

It was difficult to read the course data from minerva, since it's all in an HTML table element with different numbers of columns in each row, and no easy classes or IDs to search for.

Accomplishments that we're proud of

We're proud of our user-friendly and aesthetic design and that we made a working program in a short period of time!

What we learned

We learned a lot of Python and React.

What's next for Schedule Builder

We want to add more options for schedule building, such as optimizing for class location or length. Right now, we are tailored to McGill students, but we want to expand to other schools in the future.

Share this project:

Updates