senior-knights / course-schedulizer

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

Conflicts page #209

Open RyanVreeke opened 2 years ago

RyanVreeke commented 2 years ago

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.

kvlinden commented 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.

RyanVreeke commented 2 years ago

New features:

RyanVreeke commented 2 years ago

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.

rpruim commented 2 years ago

Here is an export of a Math/Stat schedule for testing.

full_schedule_2022-11-08T12_24_35-05_00.csv

kvlinden commented 1 year ago

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"]

] }

kvlinden commented 1 year ago

Here are the current CS and ENGR schedules for 2023:

jmw-75 commented 1 year ago

All three schedules: