Inspiration
As two students who have changed their majors and have spent long periods of time trying to develop a potential schedule, we found that Calvin's website course offerings page was hard to navigate and not user friendly. We aimed to make it a bit easier to search for interesting classes for computer science students to take or look forward to.
What it does
The user can simply type as many or as little interests into the given input box as they desire. Inputs should be academic interests, such as "statistics" or "cloud computing." Our application will then provide a list of 3 potential classes that may suit your interests.
How we built it
The AI uses a pretrained model called BERT. We used BERT to develop anchored embeddings for each CS, Electrical Engineering, Data Science, Computer Science related math, and Data Science related statistics course offered at Calvin University. We fine-tuned our model on a dataset that had been created by ChatGPT, generating around 475 rows of data that was defined by a specific field of computer science (e.g. Web Development, AI and Machine Learning, Computer Security, etc) and then a short, detailed description of the field. When a user inputs in their interests into our application, the user input embeddings are then created based on the anchored embeddings and adjusted based on the fine tuning embeddings.
We also developed an algorithm to show prerequisite courses. It constructs a directed, acyclic graph that leads from one node object to all of its prerequisites. This then allows the accumulation of all of a given course's prerequisites, which can then be displayed.
Challenges we ran into
Due to the nature of our project, we had no starting data for our dataset and manually had to input each class, prerequisite, year offered, and more. We also had to use trial and error for our fine-tuning embeddings, as the course descriptions from Calvin's website didn't always match up perfectly with ChatGPT's explanations of a field of CS. One particular issue was solely creating useful embeddings and generating human-readable output from the embeddings. For those that have not taken linear algebra, it can be difficult to visualize a 3D vector space. It was also difficult to get the prerequisite algorithm working properly because of the nature of classes needed AND or OR combinations of given prerequisites. This relationship also had to be modeled by the graph and communicated to a receiver of an API call.
Accomplishments that we're proud of
We feel as though our AI works decently well for the amount of data we provided it. We are also proud of our networking, as we used Node.js to create a basic HTTP server, which both provides the webpage for the actual web application, as well as the API hooks to utilize the AI script and the prerequisite finder script.
What we learned
We learned how to work with Node.js as well as develop recommendation system algorithms using the sentence_transformer library.
What's next for Hot Single Classes Near You
We would hope to create a larger dataset, in which our AI could potentially even pick out suggested majors or minors and show a variety of courses related to the suggested major/minor. We also want to expand the dataset to the rest of Calvin's curriculums, such as education, nursing, honors, and more. ideally, our web application would also provide a more user friendly display when showing the prerequisites, because we only had time to show the JSON file contents rather than format it nicely in a human readable format.
Log in or sign up for Devpost to join the conversation.