Scheduler

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

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:

  1. Each student applies to the highest day on their list that has not yet declined them.
  2. 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.
  3. 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.

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.