Kanishk Kacholia

Gopher Grades Version 2

📊 The greatest grade transparency tool

Last updated: May 14th, 2023

Gopher Grades Version 2

Fall 2022 - Present

Gopher Grades V2 is a grade transparency tool that is designed to assist students at the University of Minnesota - Twin Cities make smarter choices when registering for classes and choosing professors.

    javascriptpythonchakra uinextjsreactnumpypandassqlalchemygitvercelbig datafeature engineering


Gopher Grades Version 2 📈 is a grade transparency tool that is designed to assist students at the University of Minnesota - Twin Cities make smarter choices when registering for classes and choosing professors. The project consists of a frontend application, a backend application, and a google chrome extension. The frontend is written in NextJS and Chakra UI. The backend application written using Python, NumPy, Pandas, and SQLAlchemy. Lastly, the google chrome extension generates IFrames from the website to display on sites where students register for classes such as Schedule Builder 📃. If you're interested in looking at the inner workings of the project in more specificity and detail I do suggest visiting the github repository.


When I joined the University of Minnesota in the Fall of 2021 as a Computer Science and Data Science double major I had been encouraged to utilize a tool called Gopher Grades in order to make plans for future classes that I would take in the University. While this had worked for most of my lower division classes it soon dawned on me that my entire second major (Data Science) was not listed on the site due to it being extremely new. Additionally, I also noticed that many of my professors weren't listed on the database either as they were also recently hired. The idea of updating the site or even just making a new one had been in my mind ever since I finished my first year at the University, and it wasn't until I pitched the idea to my peers at Social Coding that it took off. Once I had established a team consisting of Me, Samyok Nepal, and Joey McIndoo we started to further flesh out the application.


As the lead data engineer I began analyzing our data, nearly 150,000 rows of excel data representing grades found between the Summer of 2017 to the Spring of 2020. In the end I devised a simple schema to which we would model our database with that would allow for quick accessing of data. The main plan was to have individual distributions for each professor and class combination. That is to say, the total amount of grades given by a professor for a single class. If Professor Kauffman taught 10 sections of CSCI 2021 across 4 terms, for example, that would be filtered into one distribution object. Each distribution object would be linked to their associated professor and class such that one could search for all distributions related to each as both would be primary features for the application. Lastly, and one of the more important improvements we designed on top of the previous Gopher Grades was to associate each class to a department as that would allow students to better contextialize scores. Due to this addition it became important to cache scores on each class distribution as otherwise page load times would be far too long if each class would have to sum up the distributions attributed to them.

Our First GGV2 Advertisement


After analyzing the data and confirming that our schema would be applicable we began prototyping our webpage. This went through many iterations, the first being a simple bootstrap template designed by me that I use as a starting point for a majority of my projects as it would be easy to integrate with a library such as Django. Nevertheless, after a lot of deliberation and sketchbooking on Figma we inevitably decided upon utilizing NextJS and Chakra UI to develop the website.

Our First GGV2 Advertisement

Our First GGV2 Advertisement


Throughout development on the backend it was evident to me that the original Gopher Grades had some issues with the data that they displaying on their website. Firstly, there were often cases in which teaching instructors were being mislabeled as professors with ESCI 1006: Oceanography 🌊 being a major culprit. Secondly, the original Gopher Grades, despite having access to data regarding Satisfactory, Nonsatisfactory, and Withdrawl grades did not display them on the site and hence uninentionally displayed certian classes as far more "appealing" than they should have been by withholding this information. Lastly, in terms of the data it was clear that writing the mean of many distributions was an extremely infeffective method. From simple visual observation one can easily notice that these graphs are all skewed to the left, with students having primarily scoring in the upper A and B range. This would make the mean unreliable as any outlier towards the failing side could substantially impact the average. On the other hand, a better attribute to use would be the mode or median. This is because these attributes are far more resistant to outliers and thus are more holistic measurements.

Our First GGV2 Advertisement


Once we had established a baseline that exceeded the original Gopher Grades, I opened conversation with the Office of Data Access and Privacy to recieve more data. As this process went on in the background Joey and I worked on improving the already present data that we had. Using information from ClassInfo, ASR, RateMyProfessor, and Student Rating of Teaching we integrated it into the schema adding more descriptive class titles, liberal education requirements, rate my professor scores, and overall class ratings from past students given to the University. This allowed to create the ultimate tool for students in which they have all the data needed to make more meaningful decisions in registration. However, on top of this, we developed a Chrome Extension which brought all of these features straight to schedule builder, the software students utilize to register so that they can access this data even easier.

Our First GGV2 Advertisement


After all of this, I'm proud to say that we've been extremely successful. We've managed to reach a large proportion (~10%) of the Undergraduate population here at the College of Science and Engineering. As of December 1st, our tracking software Umami tells us that we have had over 125,000+ views and nearly 8,230+ viewers. We've been recognized by many students, faculty, and staff here for the work that we've done and we're excited to see how far we can improve this. Even though my group and I have acomplished every goal we outlined when starting this project, this is not yet over. By affiliating the project with Social Coding I can be confident that the data will stay updated even after I graduate and that this software will serve as a resource for anyone who comes after us.

Our First GGV2 Advertisement

Update 2.1

Upon the completion of the fall semester the team and I revisted the project with a new set of goals and ideas to implement to improve the user experience. Firstly, we updated the schema to include term distributions so that students could view data per semester as opposed to only the aggregated data per professor and class combination. Furthermore, we included Rate My Professor information into the website, although we don't believe the information to hold much weight many students consider it to be important. Moreover, we included a place on the site to include Student Rating of Teaching (SRT) data about each course so that students know how other students felt about taking that course. Lastly, we ported our extension over to 🦊 Firefox as well. Through our efforts we were able to reach an additional 1.9 Million views with over 21.8 Thousand users. A more in depth writeup about our feature growth can be found on Reddit.

GGV2 New Schema

GGV2 Analytics Part 2

Currently we have several collaborators working on this project to continuously improve its usibility for future students. On my end I'm now responsible to ensure that the project exists long after I'm gone. In order to acomplish this I'm working with several student organziations and governments to secure a proper line of funding and also establish enough documentation such that new students would be able to easily pick up the project and update it should the time come.