Class-Timetable Generator (BEng Thesis)
A client-server system generating class timetables with a MIP optimiser, delegating solver jobs asynchronously to Docker containers queued via RabbitMQ and Celery.
- role
- Author — BEng thesis
- period
- 2023
Problem
Generating a school class timetable is a constraint-satisfaction problem — rooms, teachers, students belonging to different groups, and time slots all have to be reconciled at once — and solving it needed to scale beyond a single blocking request/response cycle.
What was built
- A client-server system (Python / Django) generating class timetables via a mixed-integer-programming optimiser.
- Asynchronous delegation of solver jobs to workers running in Docker containers, queued via RabbitMQ and Celery.
- User interface for setting up constraints and defining optimization rules.
Outcome
A working end-to-end system: timetable requests solved asynchronously without blocking the client, with solver workloads isolated in containers and a PDF representation of the final timetable.
Challenges and Lessons
- Tight contact with potential users is nearly always beneficial — they will use the software, and quick iterations produce the best results. In my case they were Dean’s office workers.
- Manually managing a fleet of Docker containers needs to be automated in production.
- Adopted JWT authorization as the standard for client-server auth.