Skip to content
Projects

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.