- Average rating, difficulty, and workload of the class alongside the sample size
- Average professor rating and the same size
- Links to view the class and professor reviews more in depth
- A link to leave a review for a professor
- A button to the two most recent reviews of a class
## Implementation
Once a user goes to a class roster link, my extension activates and scrapes all the professor and class names on the page which leads to a series of API requests:
- With a professor's name, I query RateMyProfessor for an exact match of name. If there's a match, my API returns the number of reviews ,page link, and average professor rating
- With the class name, I use a website made by [Cornell Digital Tech & Innovation Project Team](https://www.cornelldti.org/) called CUReviews. The site has a public API and I query for the class subject and number which gives me the average overall rating, difficulty, and workload out of 5 alongside the sample size.
All of the requests and data processing are done by my Flask API hosted on render. To edit the page contents, I initially used vanilla JS and updated the DOM directly. For the second iteration, I started using [Plasmo](https://docs.plasmo.com/) which enabled me to use React for components and styling.
Other features of the extension are:
- Clicking on a professor's name copies it to your clipboard if you want to do further searching
- Collapsing class sections so it's easier and faster to scroll through a collection of classes
- Filtering classes and sections by time of day
- Quick access menu with links to other helpful tools and Cornell information
## Impact
Once I released the extension, the overall reception was [positive](https://x.com/ronaldjabouin/status/1786896250056368437). I didn't instantly get the entire Cornell population using the extension overnight but, the extension curently has 305 installs which I think is great for a project initially built in a weekend.
## Pitfalls
- Some professors have a different administrative name than their nickname. For example, there's a professor whose full name is Stephen Marschner but, he goes by Steve Marschner. When I search RateMyProfessor for Stephen Marschner, there are no results. I could default to picking the most similar name but, that creates a separate issue where two professors have similar names, one doesn't have a score yet, and I show the information for the wrong professor.
- Every class and every professor won't have data. As a CS student, most of the popular classes and long standing professors have reviews. However, for other majors, this may not be the case so it may be more difficult to learn about a class you're interested in.
## Check It Out
You can download the extension on the [Chrome Web Store](https://chromewebstore.google.com/detail/professor-peek/jilfmfcpampggogoeppklpbkkejnoglo?pli=1) and view the source code on [Github](https://github.com/ronjj/ProfessorPeek)
How I Helped Cornell Students Avoid Bad Grades
January 24, 2025
An overview of ProfessorPeek
- Average rating, difficulty, and workload of the class alongside the sample size
- Average professor rating and the same size
- Links to view the class and professor reviews more in depth
- A link to leave a review for a professor
- A button to the two most recent reviews of a class
## Implementation
Once a user goes to a class roster link, my extension activates and scrapes all the professor and class names on the page which leads to a series of API requests:
- With a professor's name, I query RateMyProfessor for an exact match of name. If there's a match, my API returns the number of reviews ,page link, and average professor rating
- With the class name, I use a website made by [Cornell Digital Tech & Innovation Project Team](https://www.cornelldti.org/) called CUReviews. The site has a public API and I query for the class subject and number which gives me the average overall rating, difficulty, and workload out of 5 alongside the sample size.
All of the requests and data processing are done by my Flask API hosted on render. To edit the page contents, I initially used vanilla JS and updated the DOM directly. For the second iteration, I started using [Plasmo](https://docs.plasmo.com/) which enabled me to use React for components and styling.
Other features of the extension are:
- Clicking on a professor's name copies it to your clipboard if you want to do further searching
- Collapsing class sections so it's easier and faster to scroll through a collection of classes
- Filtering classes and sections by time of day
- Quick access menu with links to other helpful tools and Cornell information
## Impact
Once I released the extension, the overall reception was [positive](https://x.com/ronaldjabouin/status/1786896250056368437). I didn't instantly get the entire Cornell population using the extension overnight but, the extension curently has 305 installs which I think is great for a project initially built in a weekend.
## Pitfalls
- Some professors have a different administrative name than their nickname. For example, there's a professor whose full name is Stephen Marschner but, he goes by Steve Marschner. When I search RateMyProfessor for Stephen Marschner, there are no results. I could default to picking the most similar name but, that creates a separate issue where two professors have similar names, one doesn't have a score yet, and I show the information for the wrong professor.
- Every class and every professor won't have data. As a CS student, most of the popular classes and long standing professors have reviews. However, for other majors, this may not be the case so it may be more difficult to learn about a class you're interested in.
## Check It Out
You can download the extension on the [Chrome Web Store](https://chromewebstore.google.com/detail/professor-peek/jilfmfcpampggogoeppklpbkkejnoglo?pli=1) and view the source code on [Github](https://github.com/ronjj/ProfessorPeek)