Course Scheduling
Multi-semester academic planning and scheduling. Assigns students to course sections across multiple terms while respecting degree requirements, prerequisites, time conflicts, capacity limits, and student preferences.
Constraints#
A hard constraint must hold or the problem is infeasible; a soft one adds a penalty when broken.
| Constraint | What it requires | Kind | On by default |
|---|---|---|---|
Section Capacitysection_capacity | Enrolment in a section cannot exceed its seat count. Expressed as a sum of per-student seats against the section's own capacity rather than a flat group-size cap, because sections differ in size and a single declared limit could not say so. | hard | Yes |
Requested Courserequested_course | A student may only be enrolled in a section of a course they asked for. HARD, not a preference: preferred_courses is the student's declaration of what is acceptable, and placing someone in a class they never requested is not a near miss, it is the wrong answer. A student who declares no list has stated no requirement and is vacuously satisfied. | hard | Yes |
Balanced Section Enrolmentbalanced_sections | Prefer even enrolment across sections. Soft: an uneven but legal timetable is a worse timetable, not an invalid one. | soft | Yes |