What course do I take next? Will I survive taking these two notoriously difficult classes simultaneously? Did my high-school course already cover this material? How do I effectively navigate my graduation requirements? These are questions that university students find themselves asking every time they have to select courses to enroll in. They turn to friends, but more often than not their friends are in the same boat. They talk to academic advisors, but hear the same basic information they can find online. They look at assistant websites—e.g. EduSalsa or Carta—but these detach students' personalities and backgrounds from the effort curves and course feedback, providing unreliable information. We're missing a way for students to navigate the course selection process in a way that is specific to their situation.

Bridge connects university students with other students of similar backgrounds and interests who are willing to provide advice on course selection.

The user provides their information (anonymized personal, demographic, academic) and query (course numbers), and are returned a list of five other students with the most similar profiles who have taken the course(s). The user can then anonymously message any of these other students to ask for personalized recommendations. Bridge learns from the choices its users make—do they prefer someone of the same ethnicity? of the same gender? strictly older?—and modifies its top results accordingly.

What's it made of?

The interface is programmed in JavaScript with React-Native and Expo. We implemented a Python backend with the Flask microframework. We deployed the code online with Heroku and used Firebase to host our database of users, allowing us to transfer the computational workload from the end-user device to a more powerful server.

What are some challenges we faced?

When we first tested using csv files, the feature vector of each person was an array of 1's and 0's where a 1 would indicate that the person took a class and 0 otherwise. This format made it easy to calculate the "distance" between two people's profiles. We soon realized, however, that it was very inefficient to have every class as a feature, as we included several thousands of courses in our example. We had to switch to a dictionary format when storing our data, which increased compatibility with Firebase.

What are we most proud of?

Bridge implements algorithms we learned in class less than 72 hours ago. Our user-matching algorithm is based on a modified version of k-nearest-neighbors that factors in learned weights. We are also proud of the fact that the project is built using concepts (web scraping, authentication), languages (JavaScript/React), interfaces (Expo, Firebase), and services (Heroku, Flask) that were completely foreign to us coming into the event.

What's next for Bridge?

Get it out there! We believe that Bridge offers tools that are desired by students—including ourselves!—and want to make them accessible. Whether by developing it into a full-fledged app or integrating it into existing online services, we seek to bridge the students on our campus to others with similar experiences to help them make more personally relevant and informed choices about the courses they take.

Share this project: