University of Lausanne (UNIL) · Bilingual bachelor reform · operational timetabling
Rebuilding a University Timetable for a Bilingual Reform
From a curriculum change nobody knew how to schedule to a timetable UNIL put into production
UNIL changed the rules of its bachelor programme: students could now choose to take many courses in English, in French, or both. Same professors, same rooms, same number of hours in the week, but every reformed course suddenly needed two compatible slots, and nobody yet knew how many students would pick which language.
We were asked to find a schedule that could absorb all of that without breaking on day one. We built the model, solved it, and delivered the timetable UNIL then put into operation for the new programme.
The challenge
The reform produced three problems at once. Every reformed course needed a French slot and an English slot taught by the same professor, both inside their real availability. Rooms were already tight and the reform was adding load, not capacity. And students were going to choose their language late, so the relative size of each linguistic cohort was a forecast, not a fact, at the moment the schedule had to be locked.
A timetable that broke on any of those would force last-minute changes ripping through the faculty, deny students a course in their chosen language, or push professors past their contracted hours. The reform's credibility hung on a schedule that worked on the first day.
Our approach
We formulated the timetable as a mathematical optimization model that captured what UNIL actually needed: professor availability windows, room capacities, and the bilingual coupling (each reformed course shows up twice, same professor on both, both inside their hours).
Instead of optimizing for a single guess at the enrolment split, we ran the solver over a range of plausible splits and kept a schedule that stayed feasible across them. Room scarcity was handled directly as a per-slot capacity rule, with the largest expected cohorts getting first call on the larger rooms.
We delivered a working timetable plus the model behind it, so UNIL's planning office can re-run it next year when professor availability, room inventory, or enrolment changes, without rebuilding the work from scratch.
The outcome
UNIL put the schedule into production for the new bilingual programme. It held up across enrolment outcomes that did not match the original projections, which is exactly what the robustness layer was built for.
The wider point: timetabling problems that look impossible by hand are well within reach once the right constraints are written down. The hard part was rarely the algorithm. It was capturing what "feasible" really meant inside the institution.
Techniques
- Bilingual course-pair coupling
- Professor availability windows
- Room capacity and scarcity
- Scenario-based robustness to enrolment forecasts
Stack
- Python
- MILP solver
- UNIL availability + enrolment forecasts
A problem like this?