Didn't have time to write about it, but CourseGrapher was pretty much my Saturday project last week. It is a tool that enables you to visually browse courses at Penn, graphing courses along fields like course quality and difficulty. A screenshot is worth a hundred words.

The tool was originally created by my friends Greg and Alex. It gets data from the PennCourseReview API, displays the data using the Google Chart API, and uses Firebase as a caching backend. I tried to use it over break to find some courses worth taking outside of my major this semester, and discovered two problems that made the website unusable for me:

  1. The dots only listed course numbers and not course titles. So the "MODERN EGYPT" part of the label in the picture above was non-existent. This meant I had to separately search on for every dot of interest. It was too tedious.
  2. The graph displayed every course ever offered in record (about 10 years of data), which meant that most courses were either not offered this semester or even no longer offered at all. For someone just looking for a course to add this semester, the noise was too big.

I set off to improve those two things. I made sure that course title information was cached (in firebase) and displayed. Also that you could filter by courses offered this semester, which is the "Display offered courses only" checkbox in the top right. The course filtering was the bulk of the work. My code contribution for that is here. It's not complicated at all, but just navigating the nitty gritty details of the unintuitive Penn Registrar API was painful.

A filtered view of all courses offered in the history department looks like this (I was really happy when I got this to work):

I shared it with my Facebook friends and some other groups, and it got some traction and usage. Glad I did it. Also before I end, I must give Greg credit for helping me understand the existing codebase. His help was instrumental.