# failure modes # failed to get course data (eg. course does not exist, course not offered this semester) failed to parse course data (ie. an unexpected "notes" layout) one or more courses is impossible to schedule (eg. by itself: full sections, with others: no schedules without inter-course conflicts) # extras # only generate the first x schedules thanks to laziness, this is trivial - `take x $ possibleSchedules` (since we go depth first, only x = 1 is really useful) assume that sections with ids x1, x2, ... are open (eg. you're already registered in them) try and get into sections with ids x1, x2, ... (eg. match your friend's schedule) # todo # alternating weeks part semesters auto_enroll saturday/sunday classes? # parsing the notes field # examples: Lab taken alternate weeks Jan-Apr and alternate with PHYS 230. Even numbered Labs start week of Jan 15. Odd numbered Labs start week of Jan 22. Students registering in Lec B2 must also register in Sem J2. Students must also register in one of Lab H1-H7. Lab H3 is restricted to Engineering Physics Nano Option students only. Restricted to Engineering students. Others require consent of the Department of Mathematical and Statistical Sciences. Engineering students must register in sections beginning with "E". NOTE: Refer to the Examination Schedule for details regarding the consolidated examination in MATH 209. Students registering in Lec EB1 must also register in one of Lab EB2-EB4. Do not attempt to alternate E E 340 Labs with any other Lab. Labs taken alternate weeks Sept - Dec. Students registering in Lec A2 must also register in Sem E2 and in one of Lab D1-D8. Lab taken alternate weeks Jan - Apr. Students registering in Lec B2 must also register in Sem J2 and one of Lab H1-H6. Lab H4 is restricted to Engineering Physics students.