- objects.py: Course, Schedule, Student, Drop class implementations
- dataloader.py: loads data and handles edge cases
- graph.py: runs algorithm
- processed.txt: outputted schedules
- dataloader-output.txt: additional request statistics
- graph-output.txt: outputted schedule statistics
- Students with requests: 370
- Students considered: 211
- Students on blacklist (unreported block conflict): 78
- Bad requests: 99
- Students with at least 1 request satisfied: 88.63%
- Requests satisfied: 241/298
- Ignore M block.
- Ignore requests with no drop and "None of these apply". Overloading will be processed after (lowest priority).
- Ignore requests with no add and "None of these apply". Underloading will be processed after (lowest priority).
- Mentorship 3080 doesn't exist in schedules and has weird ID problems.
- MA1012-002 doesn't appear in offerings list.
- If someone puts no main but alts, bump first alt to main.
- Ignore courses that appear in requests but not offerings.
- HU4410
- CS4120
- HU4480
- Ignore requests that deal with AS4052 (Amstud II)
- Ignore requests that drops course student does not have (S535, S592).
- Ignore courses in main or alts that the student already has. (why would you request to drop and add the same course).
- If a course has more people enrolled than its cap before drop add, we set the new cap to be the number of enrollments.
Limitations:
- We compute the drop add for ones without additional constraints. However, the ones with constraints should be done first and given priority. This means some requests that shouldn't be fulfilled are granted, and some requests that could be fulfilled aren't.