Inspiration
If you're a McGill student (or any University student), you probably have wasted several hours of your life every semester looking up classes to take. Having to consider if the class interests you or if you fulfil the pre-requisites (or the pre-requisites for the pre-requisites...) , the process might be exciting at the start, but it soon becomes long and tiring, and you are never too sure if your "research" is complete. Can you relate to that frustrating feeling when a friend tells you they're taking THE BEST CLASS ever that you have not even heard about only after the add-drop period? Minerv-AI was created to ensure this will never happen again.
What it does
Minerv-AI is a digital tool designed for the McGill student community. Our website prompts the user for 2 things: 1) the McGill classes they have taken thus far, and 2) a class they enjoyed taking or something similar. Based on the list of classes they have submitted, our program computes all the classes that the user has pre-requisites for and among those, it will suggest classes that the user is likely to enjoy as well as their RateMyProfessors average ratings.
How we built it
Our program is built with data from Minerva, McGill's course search and registration engine. We used the rubrics "restrictions" and "prerequisites" to evaluate, based on an inputted list of classes, whether or not each class can be taken by the user. This gives us a list of possible classes and their Minerva description. With the description, we then fine-tuned a pre-trained Gensim Word2Vec model towards our use case. The cosine similarity is then evaluated between each one of these classes and the user's inputed favourite class's description. From that, the program displays a list of the most interesting classes.
Challenges we ran into
The biggest challenge we ran into related to the McGill database listing the classes, their descriptions, the professors and the corresponding prerequisites and restrictions. The latter data was presented in a very messy way, clearly inputted manually, in a non-standardised way. Different lists incorporated "and", "or", "/", commas, parentheses. For example, the list of prerequisites for COMP 551 involves "some background in Artificial Intelligence is recommended, e.g. COMP-424 or ECSE-526, but not required". Therefore, we couldn't use regular expressions everywhere and had to go through some of the data manually. In general, there was a lot of logic we had to get sorted and we spent a lot of time figuring out the optimal data structure. On the machine learning side, we tried using a pre-trained Word2Vec model in the beginning, but based on our observations and given the academic context, t didn't appear to output the corresponding "similar" courses. Thus, we decided to train a model ourselves, and this has produced much better results.
What we learned
We learnt a lot about word vectorisation and NLP in general, as well as the handling of manually inputted data using regular expressions. Data scraping was also new for some of us, and it was really interesting to learn about while we searched professors' reviews on RateMyProfessors. We also learned to use vue.js for the UI-UX implementation. We also discovered a bunch of interesting McGill classes we didn't know about :)
What's next for Minerv-AI
For now, our prototype is only based on the classes in the Faculty of Science. Thus, we would like to expand our scope to the other faculties. We are curious to see if the AI will make faculty-overlapping suggestions. After that, we would like to integrate our program into existing registration tools such as Minerva or Visual Schedule Builder (VSB) as a one stop website for all students to look at the classes they are interested in taking.
Built With
- gensim
- mcgill
- natural-language-processing
- python
- ratemyprofessors
- requests
- vue.js
- word2vec
Log in or sign up for Devpost to join the conversation.