Case Study:

Better Course Registration

Addressing a Frustrating, High-Stakes Process

Class registration has always been a high-stress experience for students. As a designer focused on usability and accessibility, I wanted to understand why. Is it solely a technical issue—server crashes, slow load times? Or is there more to it?

After doing more research, I found a common theme: students were making critical decisions with incomplete or unclear information. They had no way to gauge their chances of getting into a class, no easy way to compare sections, and no system to help them resolve scheduling conflicts in real time. This lack of transparency forced students to rely on guesswork and frantic backup plans, turning what should be a straightforward process into a stressful gamble.

Challenging My Assumptions

Initially, I assumed students primarily struggled with slow systems and complex interfaces. But after conducting user research, I realized the real pain points were more nuanced:

A feature prioritization matrix categorizing features into quick wins, big projects, fill ins, and time wasters

These insights completely reframed my approach. It wasn’t just about making registration faster—it was about making it predictable and stress-free.

Exploring Solutions

With these insights in mind, I started sketching out ideas. I leaned into data visualization to surface key information at the right moments:

  • A simple percentage-based indicator to show registration chances at a glance.
Lo-fi mockup of the profile page showing how users are encouraged to set their school preferences
  • A block-based schedule view that made conflicts visually obvious.
Lo-fi mockup of the profile page showing how users are encouraged to set their school preferences
  • Inline section comparisons so users can compare sections.
Lo-fi mockup of the profile page showing how users are encouraged to set their school preferences
  • Phased registration waves to ease server load and to create a more equitable sign-up process.
Lo-fi mockup of the profile page showing how users are encouraged to set their school preferences

Cutting Through the Noise

One thing that I kept thinking about throughout this project was how much data was too much. Early on, I experimented with adding GPA distributions and pass rates alongside registration chances. But through user testing, I discovered something surprising—most students didn’t find this useful. They weren’t trying to analyze success rates; they just wanted to know, "Can I get into this class?"

Before Testing

Graphic of usability test results with over 60% success rate for both time on task and error success rates

After

Graphic of usability test results with over 60% success rate for both time on task and error success rates

This was a key moment in the project. Instead of overwhelming students with every available metric, I refined the experience around only the most actionable data. This decision simplified the UI and aligned directly with what users needed most.

Prototyping

Using these insights, I made the following changes to the prototype:

Key changes to server load management

Old Version

There weren’t many indicators of system change which caused confusion for some users.

Diagram of user flow for the entire app before changes showing how users had to go through other pages to access the compare feature

New Version

Inform users of system changes by specifying the scheduled timing and current phase, reinforced by components like this class status visualizer (right).

Diagram of user flow for the entire app before changes showing how users had to go through other pages to access the compare featureDiagram of user flow for the entire app before changes showing how users had to go through other pages to access the compare feature

Changes to scheduling

Old Version

Block-based visualization to help students easily understand their weekly schedule and potential conflicts.

Diagram of user flow for the entire app before changes showing how users had to go through other pages to access the compare feature

New Version

Usability testing showed participants struggled with identifying scheduling conflicts and swapping waitlisted sections. Clearer conflict indicators and in-line section swaps resolved these issues.

Diagram of user flow for the entire app before changes showing how users had to go through other pages to access the compare featureDiagram of user flow for the entire app before changes showing how users had to go through other pages to access the compare feature

Changes to student-visible data

Old Version

Course cards display a percentage to help users gauge their registration chances at a glance.

Diagram of user flow for the entire app before changes showing how users had to go through other pages to access the compare feature

Old Version

Since users found GPA distribution and pass rate data less useful, I focused on registration chance as the key metric and enhanced its visibility with color.

Diagram of user flow for the entire app before changes showing how users had to go through other pages to access the compare featureDiagram of user flow for the entire app before changes showing how users had to go through other pages to access the compare feature

Learnings

Looking back, this project reinforced one of my core design beliefs: the best solutions don’t just remove friction—they create clarity. By giving students the right information at the right time, I transformed registration from a stressful, uncertain experience into a predictable, student-centered.