Open RyanVreeke opened 2 years ago
Here are some sample BCS-related scheduling constraints that should be highlighted somehow. The following sets of courses cannot “conflict”:
Some sets of courses don't really “conflict”:
Generally, any set of specific courses listed in the same semester on a sample schedule like this one cannot conflict. This would apply only to specific courses (e.g., “CS 212”) not non-specific courses (e.g., core categories like “World Languages I 1”).
The notion of "conflict" is complex in cases where there are multiple-section courses or non-specific courses. In such cases, a fitness function might define the level of conflict, e.g., a count of the mutually conflicting course pairs in a set of courses.
The task of displaying conflicts is also complex. Ideally, we'd like a way to see what the conflict is and to edit things directly in the course popup and to access the course popups from the conflicts page.
I wonder if we could just import multiple, sample schedules such as the one linked above, perhaps from all programs on campus, and look for conflicts.
New features:
There is now a way to import constraints via the drop-down menu that also contains the Export button. The constraints are in a JSON file that is then used to check for conflicts amongst the meetings. Example constraint file: { "CS212": ["MATH251", "ENGR220", "CS195"], "MATH251": ["CS212", "ENGR220", "CS195"], "ENGR220": ["CS212", "MATH251", "CS195"], "CS195": ["CS212", "MATH251", "ENGR220"] }
The Conflict page now has the ability to click on a CSM (course,section,meeting) which will then pull up that meeting information and allow you to change it directly from the Conflicts page.
Note: "I wonder if we could just import multiple, sample schedules such as the one linked above, perhaps from all programs on campus, and look for conflicts." Reply: You can do this now and will be able to find the constraint-type conflicts and resolve them if imported a good constraint JSON file.
TODO: There are possible user experience changes that we could implement, however for the moment focusing on the functionality of the new features overall. Will return for user experience changes.
Update to importing constraints:
The import constraints file has a new simplified form for users to create and then import into the Course Schedulizer.
{ "constraints": [ ["CS212", "MATH251", "ENGR220" ], ["CS112", "MATH172"] ] }
Using a .json file you can create constraints like above. You need the "constraints" key follow by an array of string arrays. Each individual string array then contains that courses that can't conflict with each other. As a result, the ["CS212", "MATH251", "ENGR220" ] courses can't be scheduled for the same time and the courses ["CS112", "MATH172"] can't be scheduled for the same time.
TODO: Perhaps create a miniature interface to interact and create your own constraints in the course schedulizer itself. Basically create a better user experience that doesn't clutter the course schedulizer.
Here is an export of a Math/Stat schedule for testing.
Here is a draft of the inter and intra-department course constraints we'd like to check.
{ "constraints": [
// inter-department constraints ["CS212", "MATH251", "MATH252", "ENGR220" ], ["DATA202", "STAT245"], ["CS112", "MATH255", "STAT243"],
// Compressed schedule constraints ["CS212", "CS262"], ["CS214", "CS232"],
// 300-level electives ["CS326", "CS332", "CS336", "CS338", "CS339", "CS342", "CS345", "CS346", "CS352", "CS364", "CS374", "CS384", "DATA304", "DATA385"]
] }
Here are the current CS and ENGR schedules for 2023:
All three schedules:
Update to Course Schedulizer: A Conflicts tab has been added that will display any conflicts that exist in the schedule.
Todo's: Add meeting popups like in Teacher Loads tab so that you can edit the time / days of the meeting to resolve the conflict.