Inspiration

We came to Calhacks wanting to build something useful and learn along the way. To do so, we thought about frustrations we had as students and potential solutions to address them. One such frustration highlighted this enrollment season was looking for classes to enroll in. We all shared a common experience of looking through different websites, gathering different perspectives on classes.

We wanted to simplify and consolidate this process, so that it would be much easier to get a quick read on the general consensus of a class while easily being able to compare different classes.

What it does

The base functionality is that the website takes in the name of a class, scrapes information about that class from the Berkeley subreddit and ratemyprofessor, runs the scraped comments through a sentiment analysis model, then shows users a general assessment of the class.

How we built it

Our frontend is built on Heroku, using React + Typescript. Our backend runs on Python, using beautifulsoup for scraping and Vader for sentiment analysis. We used cockroachdb to cache and store all of our results — that way, most results are pre-loaded, but if a user searches a course that hasn’t been searched before, it can easily be added to the site.

Challenges we ran into

One challenge we ran into was having to continually narrow down the scope of the project, as there are some features we developed but couldn’t work into a final product. There was also a learning curve for some of the technologies we used for the first time as well. But we persevered and kept an open mind as we continued to overcome challenges.

Accomplishments that we're proud of

We have built a functioning website that helps students to learn about the challenging class they want to take. Using natural language processing, we were able to pick the most relevant comments that describe the class. Moreover, by analyzing the dataset of a large number of reviews by real people, we have achieved a truthful assessment of the classes that represent the harsh realities that students have to go through. We believe that the feedback of the students is the most relevant reflection of the course.

What we learned

We all experienced and learned from firsts in this project. This was Daniil’s first exposure to NLP and sentiment analysis. This was Conner’s first time building a web scraper. This was Steph’s first time setting up a database, and this was David’s first time setting up a Heroku app. This was also the first time that we as a group got together and built something substantial in a team setting.

What's next for Cal Class Recommendations

There’s so much in store for Cal Class Recommendations! We’ve implemented a selection of backend functions such as comparing different classes that satisfy certain requirements (e.g. major requirements) and returning some top keywords used to describe a class. that we would love to have working in a potential final product. We also would like to be able to implement functionality such as comparing classes, and recommending classes based on classes that a person may have liked. Above all, we just want to make a simple and easy to use service that simplifies a workflow that many students are so familiar with.

Built With

Share this project:

Updates