Rooms
Every classroom, laboratory and lecture hall, with capacity, building, block and the resources fixed to it. A room with anatomy equipment is not interchangeable with a room that has thirty chairs.
Allocation engine
Enrolment shifts, a professor leaves, a laboratory closes for works. Re-running the allocation should be an afternoon, not another semester of coordination.
Inputs
Every classroom, laboratory and lecture hall, with capacity, building, block and the resources fixed to it. A room with anatomy equipment is not interchangeable with a room that has thirty chairs.
Each group with its real size, course and semester. Kampus works with cohorts rather than individual students, because that is how an institution actually times a term.
Subjects with their workload, the cohorts taking them and the professors teaching them — including who can teach what, and when they are available.
The exceptions everyone in the faculty knows but nobody has written down. Kampus makes you write each one once, and then honours it on every run.
Rules
Any scheduler can fill a grid. What breaks a timetable is the rule nobody encoded — the professor who always teaches Philosophy II in room 401, the anatomy class that has to be in the anatomy lab, at night, always.

Output
The engine does not pretend a perfect answer exists. It optimises what it can and hands back exactly what it could not resolve.
Each clash listed with the subject, professor, room and time — so a coordinator fixes three problems instead of re-reading three hundred rows.
Autosaves with author and timestamp. Sixteen saves into an afternoon, you can still see what the timetable looked like at 9:34.
Overview for the status of the run, weekly agenda for how a cohort actually experiences the term, and list for review and export.

