Web app: My UCI class is full

Screenshot of the web app

My UCI class is full is a web application which helped 1400+ students enroll in 5300+ courses from Fall 2016 to Fall 2019. The app sent 52K+ alerts to the students when a class without a waitlist had a spot for them to enroll in.

This app is discontinued as of December 2019.

Developing the first version

In HackUCI 2015, Yang Jiao and I developed an app to help students enroll in classes without waitlist. With this app, students can worry less about getting into the classes and focus on their finals.

You can find more details at this devpost submission.

However, this first implementation had some limitations:

  • Python Flask + SQLite backend turned out to be slow when handling a lot of user requests and subscriptions concurrently.
  • It was difficult for the users to manage their subscriptions without signup.
  • We did not implement any features to manage email bounces.
    • This could lead to bad IP reputation of email server.

Improvement

I re-developed the app from scratch to address the said limitations:

  • I rewrote it in Golang + PostgreSQL.
    • Concurrency and parallelism with Golang is efficient with its lightweight threads called goroutine.
  • I allowed users to manage their subscriptions in their account dashboard.
    • This made it easier to stop tracking whenever the students wanted.
  • I incorporated Sendgrid API in sending the emails.
    • This took care of the bounces automatically.
    • It also made it easy to let users unsubscribe with one click.

The source code and the REST API is available at this github repository.

Reception

The problem with an app like this is that there’s no point when everyone uses it. The more students sign up, there will be less and less chance that students will succeed in getting the courses after each alert message. So I had been careful not to publicize it too much.

With essentially no advertising, however, the app gained a consistant stream of new users just via word of mouth between students who found it useful. There were more and more students signing up each quarter.

Cumulative usage plot

Some students sent me emails to express how this app was helpful. It was nice to see that even a small project with a couple of day’s work can help out a lot of students.

A thank-you email

End of Service

As the app became more and more popular, a lot of other students at UCI developed similar applications to check the availability of classes from the university registrar.

My app was designed to minimize the number of requests. However, when all the similar apps were working at the same time, eventually it became more than the university website could handle. The university had to block access from these apps, and that is when I decided to terminate the service.


More usage plots between Summer 2018 and Fall 2019:

Daily alert plot

Daily signup plot

Previous usage plots until Spring 2018:

Daily usage plot

Normalized daily usage plot

Cumulative usage plot

Avatar
Jungkyu Park
Deep Learning Researcher, PhD Student

Efficient Deep learning in medical imaging