Penn Course Alert

Quick Info / Links

Penn Course Alert (PCA) is a free and open-source website used by Penn students to sign up for notifications (by email, phone, or mobile push notification) when a watched course opens up during open registration. I redesigned the backend of the app as part of our product refresh, and added a number of useful features. I am currently working on expanding on PCA by exposing analytics about course selectivity and facilitating course trading.

Technologies Used

Backend Redesign

Penn Course Alert is useful because open registration at Penn works on a first-come, first-serve basis (so it is quite convenient and advantageous to be able to register right when a course opens up rather than periodically/randomly checking PennInTouch).

I redesigned the Django Rest Framework (DRF) backend of PCA as part of our product refresh, collaborating closely with biz-dev, designers, and frontend.

For this redesign, I first integrated our Penn Labs unified Oath2 client into PCA, 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 set up, I wrote the API code to afford authenticated users secure saving/modification/retrieval of their contact information to/from our databases. This feature allows users to specify their email and phone just once (editing when necessary) rather than inputting contact information for each new registration.

I developed API views to allow users to view, edit, cancel, or permently delete any of their registrations (canceled alerts still show up on the manage alerts page and can be resubscribed to, as opposed to deleted alerts). Previously there was no way to view or change subscribed-to alerts. This was also made possible by my integration of an accounts system, which allowed me to change the backend to associate registrations with registered users (each with their contact information stored in our databases), rather than with the user's raw/subject-to-change contact information.

To free our users from the burden of resubscribing to alerts, I implemented an auto-resubscribe feature which allows users to sign up for alerts "until I cancel" rather than "only once". This optional feature was enabled in a peak of ~13,000 registrations in Fall of 2020.

I also added optional close notifications, so that users can be alerted once a class closes (after having been alerted of its opening). This allows users to quickly see if they still have a shot at getting into the class from their phone or email notifications. In many cases, this feature will save users from the tedious and futile process of attempting to register for a course on PennInTouch (which has a two-step sign-in process) after it has already closed. Having to log into PennInTouch after every PCA notification can be very disruptive (with users often called to action during classes or in the middle of the night), and this feature prevents that disruption in many cases. We don't have usage stats on this feature yet (a registration season has not gone by yet since its creation).

Finally, I worked with the Penn Mobile team to integrate PCA into our mobile app (allowing users to register for alerts from the mobile app), and added push notifications as an optional means of notification. Push notifications can serve as a cheaper alternative to text messages (both for the club and for users). They are also a natural medium of notification for mobile users (although registrations made on the website can also send push notifications if the user has them enabled).

Expanding the Scope and Usefulness of PCA

I am currently working on expanding the scope and usefulness of PCA beyond just course alerts.

I am working on the backend and frontend code to expose analytics about course selectivity (using data from PCA registrations and university-released course status updates through our webhook). These analytics will aim to help students better understand how difficult it will be for them to get into certain classes. This will ultimately allow them to more optimally design their advanced registration course selection rankings, better plan their open registration strategies, and better understand their probability of getting into certain classes (informing long-term requirement fulfilment / academic pathway plans).