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.
Intermediate
A small team, or one strong student willing to learn something new.6 to 8 weeks, 1 to 2 students
6 to ship
3 optional extrasSuggested stack
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.
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.