While prestigious institutions like Johns Hopkins boast an extensive array of courses, the reality often falls short. Most students stick to their majors, missing out on the wealth of offerings. This happens for two key reasons. Firstly, Hopkins' current system makes it incredibly inefficient to find courses aligned with a student's interests. Secondly, taking elective courses is viewed as a 'risk' due to a lack of accessible information on difficulty and workload. We're here to remove these barriers, allowing students to craft their college journey based on passion, not just necessity.

Elevator pitch:

Jayway harness the power of AI to reinvent college course selection. We seek to empower students to better craft their college experience around their personal interests and needs.

Component 1: Textbox Input This serves as a portal to our AI program, which takes nuanced descriptions of a student's interests and preferences, generating a highly personalized list of recommended courses.

Component 2: Filtering Mechanism After receiving the initial list, students can use our interactive user interface to filter courses based on factors like intellectual challenge, workload, teaching effectiveness, and overall quality, each rated on a scale of 1 to 5.

How we did it:

We developed the web page using HTML, CSS (with Bootstrap), and JavaScript (with the p5.js library).

Component 1 was created using Google Cloud's Vertex AI. We first gathered all the current course data from the SIS API and applied the necessary transformations to make it work with Vertex AI. Initially, we tried to finetune Google's LLM through the data that we gathered from SIS, which would have been the most ideal solution for our idea, but it fell short due to administrative blocking on Google's part, as explained in sections below. Instead, we had to go through one of Google's general LLM models, called chat-bison001, and add the data we collected as example inputs so that the chat LLM had a reference for how to structure answers and what courses there are.

Component 2 was developed by using Python to scrape PDF files, and collect information from it. We would then parse the information, and use that when recommending courses. We were not able to integrate it to the application however, due to time constraints and the method in which we had to integrate Vertex AI into our program.

Challenges we faced:

Hopkins’s SIS API was not the very best. For example, they didn’t provide a direct way to show the description of all the courses; the description of the course showed up only for the course that was being prompted through the API. So this meant that we had to first write a script to get all the courses, and then write another script to go through all the courses we scanned in and individually prompt each of them for the description of it.

Google Cloud was giving us issues with quotas. In order to train a tuned model with the data that we gathered, we needed access to a certain cloud GPU. However, by default, Google set the maximum quota of that to 0. And the only way to get it raised any higher is by having them approve it manually through human intervention, which on a weekend was not happening. They say that they try to get it done within 2 business days, but we did not have that much time.

The alternative we had to use, also in Google Cloud and also based off of their Vertex AI, was limited by the amount of input tokens. Thus, we could not realize our full vision of making a truly comprehensive course offering. There was also several issues with authentication and server-side things, so we had to improvise and create a server on one computer, and send the data to another computer; it runs fine on localhosts, but transmitting it to the actual webpage creates issues we plan to iron out in the future iterations.

Challenges we overcame:

We built most of the web structure from the ground up due to limited existing resources.

Efficient communication between our product's components (Component 1, Component 2, and the UI) posed a significant challenge.

We encountered limitations with Hopkins's SIS API, necessitating extra steps to access course descriptions.

Google Cloud presented quota and implementation issues, requiring creative solutions to proceed with data training.

Accomplishments we're proud of:

Our seamless division of labor in developing the three distinct components of our product was exceptional. While our product isn't yet as functional as we'd like, we've planted the seed of an idea with high utility potential for Hopkins students, and we're eager to further develop it beyond the hackathon.

What we learned:

Always consider potential obstacles before diving into coding.

What's next:

We're focused on optimizing our program through enhanced web-scraping techniques to serve as a robust database for our filtering mechanism. We're also working on making our UI more user-friendly and aesthetically pleasing. Additionally, we're aiming to facilitate smoother communication between our UI, filtering mechanism, and AI model, ensuring they complement each other seamlessly. Ultimately, our goal is to scale this initiative to significantly enhance the college experience for Hopkins students.

Share this project:

Updates