Penn Course Plan

Quick Info / Links

Penn Course Plan (PCP) is a free and open-source website that Penn students use to to plan their schedules and course selections. It improves upon the university's antiquated PennInTouch course planning tool (which is quite frankly out of touch). I developed PCP's backend and data architecture, collaborating closely with biz-dev, designers, and frontend.

Technologies Used

Project Description

Penn Course Plan improves on the university's PennInTouch course planning tool in a number of ways. It offers a powerful and intuitive course search engine (with various useful filtering and sorting features). Additionally, it allows easy creation and management of mock schedules, and displays analytics on the user's active mock schedule. The search engine and schedule analytics utilize administrative/logistical course data as well as review data from university-collected course evalutions. PCP also improves on PennInTouch in many other subtle ways, from a more appealing visual design to simply allowing the use of multiple active sessions (tabs), which PennInTouch prevents.

Before our redesign, PCP (originally developed by Penn student Ben Bernstein) was essentially a frontend application utilizing the university's OpenData API for course data. When Penn Labs took over the project, we redesigned the frontend, transitioned to using our Penn Courses API (taking advantage of more data such as course evaluations), and developed a backend for the application. My job was to create the backend.

I integrated our Penn Labs unified Oath2 client, affording users an accounts system based on their PennKey log-in (we don't handle any credentials, but rather tap into the university's Shiboleth SSO service).

With an accounts system established, we could save users' mock schedules to our database (maintaining their data across sessions and devices). So I created a data architecture for saved schedules, and built out the Django REST backend to afford authenticated create/update/retrieve/delete operations on these schedules.

I also developed the Penn Courses API routes for PCP's course search engine (considering search terms and filters in order to return a relevant list of results), and exposed the data used in schedule statistics and course detail pages through course detail routes.