Offer subscriptions only to members... private? coupon?

I'm building an education site using membership. Each class is a Subscription. Currently, I don't see a way of requiring a prerequisite to be taken before a member can sign up for a higher level.

For example, I want the member to take "Class 101" before they are allowed to enroll in "Class 102".

I experimented with creating a coupon code linked to a private subscription, but it looks like coupons are only for discounts.

I was hoping that I could use the "All Members" window to add a (private) subscription to a user, so they could see it on the /register page. But that goes a step further and subscribes them! (Furthermore, it looks like adding a membership level to a user is limited to public subscriptions.)

It looks like there's a not a built-in solution for what I need. Am I missing anything?

My brainstorming is headed in this direction:
Make the last level of each subscription a "class complete" level. Write custom register page that displays private "subscription Y" to members of "subscription X" who are on level "X complete".