Sefism early access is open for X and Instagram followers and university students.Get early access
Other

Course Registration Engine with Waitlists

The rules engine behind university course registration: prerequisites, section capacity, timetable clashes, credit limits and fair waitlists that promote students automatically when a seat opens. A strong object-oriented design project in Java or C#, where correctness is easy to test and hard to get right.

Difficulty

Intermediate

A small team, or one strong student willing to learn something new.
Effort

6 to 8 weeks, 1 to 2 students

Deliverables

6 to ship

3 optional extras

Suggested stack

Java or C#JUnit or xUnitSQLiteGit
A suggestion, not a requirement. Swap anything for what you already know.

What you should ship

  • A domain model for students, courses, sections, time slots, prerequisites and enrolments
  • Registration rules: prerequisites met, no timetable clash, credit limit, section capacity
  • Waitlists per section with automatic promotion when a student drops, in a fair documented order
  • A command-line or simple console interface for students and a registrar
  • Persistence to SQLite behind a repository interface so the rules never touch SQL
  • Unit tests for every rule, including back-to-back sections, full sections and two students dropping at once

If you have time left

  • A REST API over the engine with Spring Boot or ASP.NET Core
  • Priority rules for final-year students and repeaters, configurable without code changes
  • A report of courses that consistently overflow, to help plan extra sections

The problem

At many universities, registration week means spreadsheets, long queues and students placed in clashing sections. The logic behind a fair registration system is small, but full of rules that interact.

What you build

A registration engine with a clear object-oriented model and a thin interface on top. The engine decides whether a request is accepted, rejected with a reason, or waitlisted, and it promotes waitlisted students when a seat frees up.

Why it suits Java or C#

The project rewards the things these languages do well: explicit types, interfaces, collections such as maps of sections to queues, and mature testing tools. Separation of concerns is the whole design: rules, persistence and interface stay apart.

The hard part

Rules that interact. Dropping one course can free a seat, promote a waitlisted student, and create a clash for that student with another waitlist. Model it so each rule is testable on its own, then test the combinations.

How to judge it

Every rejection comes with a reason, every rule has tests, and a scripted scenario of 200 students registering and dropping produces the same result every run.

Scope warning

Do not build login, payments or a full student portal. The engine and its tests are the project.

Ideas and guidance, not finished projects

These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.

Not sure this one fits you?

I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.

Discuss this idea
Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.

Follow along

New writing, resources and project ideas land here first.