Logic - TechnionYearlyProject/Exam-Scheduler GitHub Wiki
Planned OOP design
Calendar
An array of days in which you can schedule tests (excluding Saturdays, holidays, etc.). Currently assigned to Dor Bartov.
Course
Members course number (according to the Technion’s systems), and a list of other courses with which the current course cannot have a conflict (cannot be scheduled too close). Currently assigned to Yosef Bader.
Catalog
An ordered list of groups of courses. Each group of courses represents a semester in a faculty specialty (such as Software Engineering) from the catalog, or an “artificial” semester which students tend to build different from the catalog.
The list is ordered with the catalog semesters first, and “artificial” semesters later, and then by size of group.
Currently assigned to Moisei Vainbaum.
Logic
The class executing the algorithm. Currently unassigned.
Planned Algorithm
- Load all relevant data from the DB into the data structures mentioned above.
- Assign Ulman’s tests in the schedule, treating them as unchangeable moving forward.
- Schedule each group in the order mentioned above, while taking the previous groups’ schedules as unchangeable. A group’s scheduling will take a course’s conflicts’ list into account, and try to optimize the current group’s schedule.
Considered feature
Addressing a requirement such as scheduling a test at the end / beginning of the semester. Several implementation options are available: having the user sort the entire faculty’s catalog, having the user sort the groups mentioned above, having the user assign a last and first designation for tests within a group or within the schedule, etc. To be discussed with the entire project’s team.