How it works
Every student is placed as high on their own list as the available seats allow, and ties are broken by a fixed random draw.
Summary for students
Rank the days in your true order, favorite first.
When sign-ups close, you get the highest day on your list that still has a seat. If too many want a day, a fair random draw decides.
Ranking early doesn't help (unless your instructor chose “First come, first served”), and ranking a day higher than you want it never helps.
Days you can't make
Mark “I really can't do this day” only for a real conflict. You'll never be given a day you marked. If every day
you can do is full, your instructor picks one for you, with your note in front of them. Nobody else is moved to
make room, so marking a day you could do doesn't help. Only your instructor sees notes.
Fairness
- Not first-come, first-served. The time a ranking was submitted is never used, unless an instructor chooses “First come, first served” for their class.
- A fixed random draw breaks ties. Each sheet has its own draw, and each student's place in it
is fixed: it does not change when classmates rank, revise their choices, or mark days. The same rankings always
produce the same schedule, so the draw cannot be repeated until a preferred result appears. The instructor
chooses how days are matched before making the schedule and may adjust assignments by hand afterwards;
every change is recorded in the sheet's history.
- Honest ranking is the best strategy. No other order can earn you a better day
(with every option but “Most first choices”, where it is the safe choice), and marking
days you cannot attend never affects other students.
Frequently asked questions
Why didn't I receive my first choice?
Seats are limited. When more students choose a day than it has seats, the random draw determines who receives
it, and everyone else receives their next choice that still has room.
Could ranking strategically help me?
No. Ranking in your true order of preference is always at least as good as any other order, regardless of how
others rank (with every option but “Most first choices”, where it is the safe choice).
When will I know my day?
When your instructor publishes the schedule, your day appears on your class's sign-up page.
Technical details: the assignment algorithm
Schedules are produced with deferred acceptance (the Gale–Shapley algorithm, extended to days
with several seats), the same method used by many school districts to assign students to schools with limited
places. It proceeds in rounds:
- Each student applies to the highest day on their list that has not yet declined them.
- Each day holds the applicants it has room for, in the order set by its random draw, and declines the rest.
No hold is final until the process ends.
- Declined students apply to their next choice, and the process repeats until no student is declined.
The result is stable: no student prefers a day that would have admitted them ahead of someone placed
there. It is also strategy-proof for students, which is why honest ranking is the best approach (the
“Most first choices” option is the exception: it is not strategy-proof).
Example. Four students and two days, with two seats each:
- Ana, Ben, and Cleo rank Day 1 first, then Day 2.
- Dev ranks Day 2 first, then Day 1.
- Day 1's random draw orders the students Ben, Ana, Cleo, Dev.
In the first round, Ana, Ben, and Cleo apply to Day 1, which has two seats; following its draw, it holds Ben
and Ana and declines Cleo. Dev applies to Day 2 and is held. In the second round, Cleo applies to Day 2, which
still has room. Final schedule: Day 1, Ana and Ben; Day 2, Cleo and Dev. Cleo did not receive her first choice,
but no change could give it to her without displacing a student the draw placed ahead of her.
Options available to instructors
Each option below runs the same small example: four students and two days, with two seats a day.
Ana and Ben want Monday most; Cleo and Dev want Tuesday most.
Lottery (recommended): one random order
Students are put in one random order, and each, in turn, gets the best day still open on their list. Simple and fair, and students gain nothing by ranking dishonestly.
In the example
One order for every day: Cleo, Dev, Ana, Ben.
Monday
Ana (first choice)Ben (first choice)
Tuesday
Cleo (first choice)Dev (first choice)
Everyone gets their first choice.
Deferred acceptance with a single random priority order shared by every day — equivalent to random serial dictatorship. Strategy-proof for students.
Fair draw for each day
Everyone's list is considered at once, and each student gets a day as high on their list as possible. When more students want a day than it has seats, a random draw decides — a separate draw for each day. Also fair, and students gain nothing by ranking dishonestly; results are a little different.
In the example
Monday's draw: Cleo, Dev, Ana, Ben. Tuesday's draw: Ana, Ben, Cleo, Dev.
Monday
Ana (first choice)Ben (first choice)
Tuesday
Cleo (first choice)Dev (first choice)
Everyone gets their first choice.
Student-proposing deferred acceptance (resident-optimal) with an independent random priority order per day. Stable and strategy-proof for students.
Most first choices
Gives as many students as possible their first choice, then as many as possible their second, and so on; a random draw breaks ties. Usually the most first choices, but a student could, in principle, do better by not ranking honestly.
In the example
Ties are broken by one random order: Cleo, Dev, Ana, Ben.
Monday
Ana (first choice)Ben (first choice)
Tuesday
Cleo (first choice)Dev (first choice)
Everyone gets their first choice.
Rank-maximal assignment among maximum-cardinality ones (a min-cost max-flow with lexicographic weights), ties broken by a single random order. Not strategy-proof.
First come, first served
Whoever ranks first gets first pick: in the order students first saved their ranking, each gets the best day still open on their list. Changing a ranking later keeps their place. Rewards ranking early, and the message to students says so.
In the example
The order they ranked in: Cleo, Dev, Ana, Ben.
Monday
Ana (first choice)Ben (first choice)
Tuesday
Cleo (first choice)Dev (first choice)
Everyone gets their first choice.
Serial dictatorship in order of each student's first saved ranking (ties, by the draw). Strategy-proof for students given the order.
Comparison only (not recommended)
A variation that is usually less generous to students' first choices. It's here so you can compare; most people never use it.
In the example
Monday's draw: Cleo, Dev, Ana, Ben. Tuesday's draw: Ana, Ben, Cleo, Dev.
Monday
Cleo (second choice)Dev (second choice)
Tuesday
Ana (second choice)Ben (second choice)
Everyone gets their second choice.
Day-proposing deferred acceptance (hospital-optimal) with independent per-day priorities: the other end of the set of stable matchings. Not strategy-proof for students.
Here the first options all give the same schedule. In a real class, with more students and days, their results differ a little: one shared order is the same line for every day; a draw for each day gives a student unlucky on one day a fresh chance on the next; “most first choices” packs in first choices, and “first come” follows the order students ranked in.
The matching is computed with matching,
a peer-reviewed open-source Python library for problems of this kind.
This site's own code is public as well.