When assigning classrooms, we assign Subjects to classroom slots.
We do not assign Teachers to classroom slots.
This is because, each subject must be taught 6 hours each week.
A subject should not exceed 2 hours each day. This is to prevent the same subject from being
held twice in a day.
When assigning subjects, check for Subject constraints and also Teacher constraints.
This is done by fetching the properties/attributes of each Subject as well as Teacher Objects.
If none of the constraints are violated, then assign the Subject to the slot. And immediately modify the relevant properties of the Subject object and also modify the relevant property of the Teacher object to indicate a change in property (eg, Teacher object has needBreak property after it has been assigned a 2 hour slot).
Algorithm