senior-knights / course-schedulizer

📝 Create semester schedules without stress
https://senior-knights.github.io/course-schedulizer/
MIT License
10 stars 4 forks source link

Ignore constraints for blank rooms and/or instructors. #202

Open kvlinden opened 3 years ago

kvlinden commented 3 years ago

If there are multiple sections for a course with a blank instructor (""), the system reports a constraint violation.

I'd like to be able to add "shadow" sections of courses in the labs at the same times as the course without triggering constraint violation.

The current workaround is to give the courses mismatched instructor names (e.g., Z1, Z2, Z3), but this add instructors to the "Faculty Schedule".

rpruim commented 3 years ago

Hmm... Would it work to simply assign two rooms to the course (at the same time) rather than to create a shadow section? That still requires some work in the app, but it is a different approach, and arguably better than using "" as the instructor.

Here's another situation that leads to apparent conflicts: Math 270/271. These are taught by the same instructor in the same room at the same time, but some students are taking a 3-hour course and some a 4-hour course. The difference is the end date (and final exam date). In this case we need both courses to be on the schedule (for students to register), but we don't want it to look like a scheduling conflict, and we need to make sure that the instructor load is calculated correctly. It would be nice if these courses could be linked so that changing the time/room/instructor for one automatically does so for the other, too.

A more general approach might be to have some additional data about various conflicts to ignore, courses to link, or operations to perform upon export. As an example of the latter, we could schedule Math 270/71 in the app and have that split into 270 and 271 upon export.

It would be good to get a wider list of these sorts of "unusual" situations and see how many of them can be handled in similar ways.

kvlinden commented 3 years ago

Assigning two rooms to a course puts both rooms on the official registration course list, which tends to confuse students. E.g., is their CS 344 course in the classroom or in the lab - well, it's in the classroom by default but the instructor may choose to go to the labs sometime. Thus, I'd really like "shadow" sections, which reserve the lab space but don't show up on the registrar's system.

I'm willing to put up with the apparent conflicts of the sort you mention - there's usually a limited number of them. E.g., in CS, there's: CS 195/295 - same seminar, different students (cf. MATH 270/71); CS 262/214 LA/LB - same class time, different sections; IDIS 110 A/B - same class, different halves of the semester (these sections have different start-end dates, so they really shouldn't be marked as conflicts). But if shadow lab bookings become conflicts, then all the CS 300-level courses and some others become conflicts.

One potentially simple solution is to modify the system so that "Staff" appoints don't conflict. Those conflicts would get flagged the moment we assign the course to an actual faculty member. This wouldn't help with MATH 270/271.

rpruim commented 3 years ago

I really don't like the "blank instructor avoids constraint checking" kludge. Mainly because it feels exactly like a kludge -- Not transparent, not following the system, potentially buggy.

Perhaps we just want a toggle for "don't check constraints" (which might have other uses besides your use case). A note could be included to tell the registrar not to show the section to students -- unless there are enough situations like this to warrant building in something more systematic.

rpruim commented 3 years ago

Another option for @kvlinden 's use case would be to use the Instructional Method field. We would just need to decide what to call the method for these shadow rooms.