System map

Four inputs, one solver, one published term.

The whole system, on one page. Configuration and rules feed a constraint solver that produces a conflict-free semester schedule. Daily changes branch off to a separate engine and never touch it.

1Configure + constraint
  • Departments
  • Rooms
  • Faculty
  • Subjects
  • Calendar
  • Scheduling rules
2Solve

CP-SAT solver

Google OR-Tools searches for a feasible, conflict-free assignment. Departments run in parallel; progress streams over SSE.

3Publish

Published timetable

Immutable
After publishing · runs daily
4Operate

Greedy daily engine

Append-only. Resolves changes against the published schedule without re-running the solver.

  • Substitutes
  • Room swaps
  • Makeup classes

Legend

1.0
CONFIGURE
Model the institution — departments, rooms, faculty availability, subjects, and the academic calendar. Entered once at the start of the year.
2.0
CONSTRAINT
Write scheduling rules in plain language. A parser turns “no labs after 4pm” into hard constraints the solver must honour.
3.0
SOLVE
A CP-SAT engine (Google OR-Tools) searches for a feasible, conflict-free assignment. Progress streams live over SSE while it runs.
4.0
OPERATE
Published timetables are immutable. A lightweight greedy engine resolves absences and room blocks — the heavy solver never runs twice.