At the University of Waterloo, we are fortunate receive one of the best educations in the world. However, with the growing financial burden from going to university, especially for international students, we could not help but wonder how we can make the most out of our investment. Our solution? Optimize your class schedule to receive the best education from the best professors.

Currently, students have to visit multiple websites including RateMyProf and UWFlow to gather data on which classes are available and how reputed the professors are, all whilst ensuring that there are no clashes in the schedule. This is such a headache that me and my friends often end up spending weeks making changing our schedule.

With our web application, students can generate a perfected schedule which not only takes into account professor reputability but also the availability and time clashes of the classes. With a click of a button, we give students suggested course sections after using python data analysis and statistics to ensure that the overall quality of their education is enhanced. We give a higher priority to the core subjects for a student's degree whilst also ensuring that they have great professors for their electives.

We built a beautiful user interface using HTML and CSS which allows students to access our application easily through a web URL. Our backend, built in Python and Flask, connects to our front end, developed using Angular via our API calls to send and receive data. The back end scrapes two of the most popular course data websites: UWFlow and RateMyProfessor to gather relevant data which was efficiently stored as objects with our data model. As we used a Model View Controller design to develop our project, it made it very fluent to transition between the front end and back end whilst connecting the data model.

This process, however, was not easy. With no experience in Angular and webscraping, we found it challenging to build the front end and connect it to the back end. Optimizing the courses to return the professors in a manner where the average rating of all your professors is the best it can be, all whilst considering time conflicts and availability took a lot of remodelling and experimenting. Furthermore, as this was the first time we have set up a server, the final steps of the back end proved to be more difficult than expected.

With all that being said and having worked on this application extensively over the past 24 hours, we can confidently say that our application will enhance your education.

Share this project: