Gopher Grades V2

A grade transparency and course search tool designed for students at the University of Minnesota - Twin Cities.

Samyok Nepal

Website/Infra Lead

Kanishk Kacholia

Backend/Data Lead

Joey Mcindoo

Feature Engineering

Overview

Gopher Grades is an application designed to improve upon the previous Gopher Grades application by providing students with a user-friendly interface to search for courses and view grade distributions. It's designed to fix issues with data validation from the previous application, provide additional non-grade information to the user, and showcase data as a bar chart instead of a percentile range.

Frontend

The frontend is built using Next.js and Chakra UI. With the site being hosted on Vercel. At its core it allows students to search for courses, professors, and entire departments to view overall and term-seperated grade distributions.

Grade Distributions

This shows grade distributions shown on Gopher Grades

On top of the website there is also an extension that allows students to view grade distributions on the University of Minnesota - Twin Cities' Schedule Builder application. This is hosted on the Chrome and Firefox extension stores. This allows students to view grade distributions while they are building their schedule for the upcoming semester without having to leave the page.

Schedule Builder Extension

This shows the extension on the Schedule Builder page notice the addition of graphs on the right screen.

Additionally, the frontend also collects usage data using Umami Analytics. Not only does this provide a live view of how many users are using the site, but it allows us to see what pages recieve the most traffic and what search terms are being used.

Umami Analytics

This shows the Umami Analytics dashboard for Gopher Grades

Lastly, the frontend also allows for users to report when a course is missing from the database, this information then triggers a discord bot to accumulate this data and inform the development team of what courses are potentially missing.

Backend

The backend is built predominantly using Python's Pandas library and SQLAlchemy, it's responsible for parsing the large amounts of grade data recieved each term from the Office Of Institutional Research and storing it in a database. Moreover, the backend also is designed for catching issues found within the data provided by the Office Of Institutional Research and fixing them. Notably these issues could be found in the original Gopher Grades application with Teaching Assistants being listed as instructors as opposed to the professor of the course. This was solved using a form of backtracking to identify the grade source and go backwards to find the lecture section in order to identify the professor.

Backend Database Schema Design

This shows the database schema design for the backend and how data is stored.

The backend also improves on the original Gopher Grades by providing Student Rating of Teaching (SRT) information through official releases by the University. This is important for students especially if they're looking for a course based on the enjoyment of students who have taken it in the past. Likewise, the backend also pulls information for the Academic Support Resources department at the University to display general information about a class such as how many credits it has and a description of what it is. Lastly, one of the major improvements of the backend is its ability to multiprocess the parsing and feature engineering to speed up the overall process from hours to minutes.

Backend Multiprocessing

This shows the backend speeds comparing non-multiprocessed (control), async operations, and multiprocessing.

Outcome

Overall this project has been highly successful with many students using the site to plan out their courses. We continue to maintain this project and highly encourage new students to create issues on the github and try to contribute to the project. There are many ways this project could be improved and integrated with other applications and we're excited to see what students can come up with!