University students often face the issue of choosing a major or deciding on switching majors. There are many factors to take into account when making these decisions. One of the most important is the time availability to fit all the class required before graduation. College is expensive and challenging. Hence, selecting courses to graduate on time while maximizing one's potentials is important. As there is much information about majors that are scattered across different websites, it can be hard to plan out the optimal combinations when considering double majoring or switching classes.
What it does
Major Explorer allows students to choose their current major and potential second major/new major via an intuitive GUI platform. Once students inputs their majors, a Monte Carlo simulation on the possible class choices from the current major generates the optimal combination of classes that minimizes the number of additional classes needed for the second major.
This is displayed in a table of the most recommended classes to take based on overlap, along with the number of additional classes needed to take that second major.
How we built it
We first scraped course requirements data from the UW Guide website. We are focusing on 3 majors for now:
We then used the scraped data to train our model by running a Monte Carlo simulation which randomizes the starting class choices for our current major and find the combination that minimizes the additional credits needed to double-major.
We built an intuitive GUI using PythonSimpleGUI, which allows the user to choose their current major and second major of interest for a table of recommended classes to take.
Challenges we ran into
- Troublesome to scrape the data from UW Guide as the major websites were formatted differently across majors
- Had trouble implementing the GUI due to inexperience
- Hard to collaborate in GitHub when we were working in the same file, had a lot of merge conflicts
Accomplishments that we're proud of
- Learnt how to implement GUI, having no prior GUI experience
- Web-scraped our own data from websites of different structures, ensuring information remains updated
- Implemented Monte Carlo simulation to find the optimal class combination
- Used the output from the model to actually plan our own classes and double major choices, demonstrating usability
What we learned
- Implementing GUI in Python
- Monte-Carlo simulation
What's next for Major Explorer
We hope to expand the recommendation to:
- Take into account class popularity (via sentiment analysis from RateMyProfessor and reddit, class grade distribution from MadGrades)
- Consider class pre-requisites to better plan out the course structure
- Allow users to input classes they've already taken and plan out future course schedules across both majors
- Incorporate more majors into our model