Skip to content

@tomas-muller tomas-muller released this May 20, 2019 · 3 commits to master since this release

Student Scheduling

Published Schedule Runs

  • Added an ability to publish results of solver runs for the advisors and schedule deputies to see.
  • Published solver runs are stored in the database. It is possible to get back to a particular run.
  • It is now possible to start a test run automatically, e.g., on a nightly basis.

Reporting

  • Additional solver reports have been added on the Student Sectioning Solver Reports and the Online Student Scheduling Reports pages.
    • Tableau report providing information for further processing (requested / enrolled courses by individual students and their properties).
    • Critical course requests and their assignments.
  • There is a new API that can be used to download a solver report of the last published run.

Credit Checking

  • Improved handling of maximum credits of a student: a student cannot get more than max credit, it is no longer needed to move course requests that are over the max credit to alternates.
  • Added ability to maximize the number of students that have at least a minimum number of credits.

Student Schedule Quality

  • Added an ability to optimize the following criteria:
    • Avoid early morning and late evening times
    • Have time for lunch
    • Minimize overall travel
    • Avoid holes in the schedule (prefer back-to-back)
    • Avoid long days (aka work-day constraint)

Student Preferences and Requirements

  • Improved performance of the solver (added ability to swap students in order to improve Selection preference).
  • It is now possible to put a preference on the default (not-set) instructional method.
  • It is now possible to require certain sections or instructional methods.
  • It is possible to define who can set required preferences (student by status, admin/advisor by permissions).
  • It is possible to filter by preferences or requirements on the dashboard.
    • By individual method or section
    • Any, all met or all unmet preferences or requirements

Student Scheduling Dashboard

  • Added pagination when showing too many students (over 500).
  • Enrollment counts: exclude requests that are pending, canceled, and/or rejected (depending on the override filter).
  • Student groups have been split by type (there is a column for each type, they are grouped by type in the filter as well).
  • Added ability to select multiple courses in the filter.
  • Corrected computation of available space on disabled (no-print) sections.
  • Various performance improvements.

Reservations

  • Course requests that have matching (individual or student group) reservations may not be removed by the student.
    • Such course requests may not be allowed to be changed in priority, or no alternatives can be added to them.
  • Added more customizable individual and student group override reservations.
  • Reservations can be edited without locking the offering when wait-listing is disabled.
  • Created Learning Community reservations combining course and student group reservations.
  • Various improvements on the Reservations page (e.g., it is now possible to filter by override type).

Critical Courses

  • Some course requests may be identified as critical.
  • Critical course requests should take precedence (assign critical courses first, do not unassing critical course demands).
  • Critical courses are identified by a custom class implementing the CriticalCoursesProvider interface/

Other Improvements

  • Student Status: Added session-dependent student statuses.
  • Batch Solver: do not put students into classes that already started (added General.ClassesFixedDate solver parameter).
  • Course Requests: Alternate Course Requests renamed to Substitute Course Requests.
  • Course Requests: Added ability to select multiple courses in the Course Finder dialog and filter by UCC course attributes.

Course Timetabling

Student Course Demands

  • Course Requests With Projected Last Likes: added ability to combine pre-registration (course requests) with projected last-like course enrollment data.
    • Course Requests take precedence, Last-Likes are weighted to fill the remaining space based on the curriculum projection rules.
  • Student Course Requests: Improved ability to consider course request alternatives.
    • Alternatives are either ignored (when StudentCourseRequests.IncludeAlternatives is false).
    • Student weight is spread between the requested course and its alternatives, student conflicts between alternatives are ignored (when StudentCourseRequests.IncludeAlternatives is true, which is the default).
  • Curricula Requests Course Demands: improved ability to consider course request alternatives.
    • Alternatives are either ignored (when StudentCourseRequests.IncludeAlternatives is false). Course requests are included in the curriculum problem.
    • Student weight is spread between the requested course and its alternatives, student conflicts between alternatives are ignored (when StudentCourseRequests.IncludeAlternatives is true, which is the default). While course requests (without alternatives) are included in the curriculum, true requests with alternatives are used in the timetabling for students that are not made up.

Event Management

Permissions

  • Finer control over who can see unpublished class events.
    • When unitime.events.hasRole.checkSessionStatusForClasses is set to true (departmental managers cannot see unpublished class events of other departments).
    • Allow some department-dependent roles to see all class events with the new EventCanSeeUnpublishedEvents permission.

Approval

  • When new meetings of a Special or Course-Related event are automatically approved (either due to the Approve New Meetings toggle or the event status), also add Approve action into the event notes.

Administration

Data Exchange

  • CSV Exports: Added ability to export CSVs with custom delimiter and quotation characters.
    • Using csvDelimiter and csvQuatation parameters, for example: &csvDelimiter=%7c&csvQuotation= will add | as delimiter and no quotation marks.
  • Course Offering Export: export class.managingDept when a class is externally managed.
  • Academic Session Import: Corrected import of automated tasks (do not create a script if it already exists, do not limit script length to 255 chars).
  • Solver Load: Added ability to load solver XML in using the Data Exchange page.
    • No data are updated, but the appropriate solver is created and loaded in using the given XML file.

Dependencies

  • Spring Framework upgraded to 4.3.18 (was 3.2.14)
  • spring Security upgraded to 4.2.9 (was 3.2.8)
  • Spring Integration upgraded to 4.3.17 (was 3.0.7)
  • Appache Commons FileUpload updated to version 1.3.3 (was 1.3.1)
  • Restlet Framework upgraded to 2.3.12 (was 2.3.4)
  • Added jaxen 1.1.6 to ensure that scripts are able to create XML files (this fixes an issue ClassNotFoundException: org.jaxen.VariableContext).

OpenStreetMap

  • Use OpenStreetMap as default on rooms and buildings.
  • Cache map tiles within UniTime.

Other

  • Sponsoring Organizations: Avoid a Hibernate cache exception when deleting a sponsoring organization that is being used.
  • Date Patterns: Avoid throwing an error when the date pattern starts before the first month (just ignore the dates before instead).
Assets 3

@tomas-muller tomas-muller released this Apr 26, 2019 · 23 commits to master since this release

Student Scheduling

Published Schedule Runs

  • Added an ability to publish results of solver runs for the advisors and schedule deputies to see.
  • Published solver runs are stored in the database. It is possible to get back to a particular run.
  • It is now possible to start a test run automatically, e.g., on a nightly basis.

Reporting

  • Additional solver reports have been added on the Student Sectioning Solver Reports and the Online Student Scheduling Reports pages.
    • Tableau report providing information for further processing (requested / enrolled courses by individual students and their properties).
    • Critical course requests and their assignments.
  • There is a new API that can be used to download a solver report of the last published run.

Credit Checking

  • Improved handling of maximum credits of a student: a student cannot get more than max credit, it is no longer needed to move course requests that are over the max credit to alternates.
  • Added ability to maximize the number of students that have at least a minimum number of credits.

Student Schedule Quality

  • Added an ability to optimize the following criteria:
    • Avoid early morning and late evening times
    • Have time for lunch
    • Minimize overall travel
    • Avoid holes in the schedule (prefer back-to-back)
    • Avoid long days (aka work-day constraint)

Student Preferences and Requirements

  • Improved performance of the solver (added ability to swap students in order to improve Selection preference).
  • It is now possible to put a preference on the default (not-set) instructional method.
  • It is now possible to require certain sections or instructional methods.
  • It is possible to define who can set required preferences (student by status, admin/advisor by permissions).
  • It is possible to filter by preferences or requirements on the dashboard.
    • By individual method or section
    • Any, all met or all unmet preferences or requirements

Student Scheduling Dashboard

  • Added pagination when showing too many students (over 500).
  • Enrollment counts: exclude requests that are pending, canceled, and/or rejected (depending on the override filter).
  • Student groups have been split by type (there is a column for each type, they are grouped by type in the filter as well).
  • Added ability to select multiple courses in the filter.
  • Corrected computation of available space on disabled (no-print) sections.
  • Various performance improvements.

Reservations

  • Course requests that have matching (individual or student group) reservations may not be removed by the student.
    • Such course requests may not be allowed to be changed in priority, or no alternatives can be added to them.
  • Added more customizable individual and student group override reservations.
  • Reservations can be edited without locking the offering when wait-listing is disabled.
  • Created Learning Community reservations combining course and student group reservations.
  • Various improvements on the Reservations page (e.g., it is now possible to filter by override type).

Critical Courses

  • Some course requests may be identified as critical.
  • Critical course requests should take precedence (assign critical courses first, do not unassing critical course demands).
  • Critical courses are identified by a custom class implementing the CriticalCoursesProvider interface/

Other Improvements

  • Student Status: Added session-dependent student statuses.
  • Batch Solver: do not put students into classes that already started (added General.ClassesFixedDate solver parameter).
  • Course Requests: Alternate Course Requests renamed to Substitute Course Requests.
  • Course Requests: Added ability to select multiple courses in the Course Finder dialog and filter by UCC course attributes.

Event Management

Permissions

  • Finer control over who can see unpublished class events.
    • When unitime.events.hasRole.checkSessionStatusForClasses is set to true (departmental managers cannot see unpublished class events of other departments).
    • Allow some department-dependent roles to see all class events with the new EventCanSeeUnpublishedEvents permission.

Approval

  • When new meetings of a Special or Course-Related event are automatically approved (either due to the Approve New Meetings toggle or the event status), also add Approve action into the event notes.

Administration

Data Exchange

  • CSV Exports: Added ability to export CSVs with custom delimiter and quotation characters.
    • Using csvDelimiter and csvQuatation parameters, for example: &csvDelimiter=%7c&csvQuotation= will add | as delimiter and no quotation marks.
  • Course Offering Export: export class.managingDept when a class is externally managed.
  • Academic Session Import: Corrected import of automated tasks (do not create a script if it already exists, do not limit script length to 255 chars).
  • Solver Load: Added ability to load solver XML in using the Data Exchange page.
    • No data are updated, but the appropriate solver is created and loaded in using the given XML file.

Dependencies

  • Spring Framework upgraded to 4.3.18 (was 3.2.14)
  • spring Security upgraded to 4.2.9 (was 3.2.8)
  • Spring Integration upgraded to 4.3.17 (was 3.0.7)
  • Appache Commons FileUpload updated to version 1.3.3 (was 1.3.1)
  • Restlet Framework upgraded to 2.3.12 (was 2.3.4)
  • Added jaxen 1.1.6 to ensure that scripts are able to create XML files (this fixes an issue ClassNotFoundException: org.jaxen.VariableContext).

Other

  • Sponsoring Organizations: Avoid a Hibernate cache exception when deleting a sponsoring organization that is being used.
  • Date Patterns: Avoid throwing an error when the date pattern starts before the first month (just ignore the dates before instead).
Assets 3

@tomas-muller tomas-muller released this Apr 5, 2019 · 69 commits to master since this release

Student Scheduling

Published Schedule Runs

  • Added an ability to publish results of solver runs for the advisors and schedule deputies to see.
  • Published solver runs are stored in the database. It is possible to get back to a particular run.
  • It is now possible to start a test run automatically, e.g., on a nightly basis.

Reporting

  • Additional solver reports have been added on the Student Sectioning Solver Reports and the Online Student Scheduling Reports pages.
    • Tableau report providing information for further processing (requested / enrolled courses by individual students and their properties).
    • Critical course requests and their assignments.
  • There is a new API that can be used to download a solver report of the last published run.

Credit Checking

  • Improved handling of maximum credits of a student: a student cannot get more than max credit, it is no longer needed to move course requests that are over the max credit to alternates.
  • Added ability to maximize the number of students that have at least a minimum number of credits.

Student Schedule Quality

  • Added an ability to optimize the following criteria:
    • Avoid early morning and late evening times
    • Have time for lunch
    • Minimize overall travel
    • Avoid holes in the schedule (prefer back-to-back)
    • Avoid long days (aka work-day constraint)

Student Preferences and Requirements

  • Improved performance of the solver (added ability to swap students in order to improve Selection preference).
  • It is now possible to put a preference on the default (not-set) instructional method.
  • It is now possible to require certain sections or instructional methods.
  • It is possible to define who can set required preferences (student by status, admin/advisor by permissions).
  • It is possible to filter by preferences or requirements on the dashboard.
    • By individual method or section
    • Any, all met or all unmet preferences or requirements

Student Scheduling Dashboard

  • Added pagination when showing too many students (over 500).
  • Enrollment counts: exclude requests that are pending, canceled, and/or rejected (depending on the override filter).
  • Student groups have been split by type (there is a column for each type, they are grouped by type in the filter as well).
  • Added ability to select multiple courses in the filter.
  • Corrected computation of available space on disabled (no-print) sections.
  • Various performance improvements.

Reservations

  • Course requests that have matching (individual or student group) reservations may not be removed by the student.
    • Such course requests may not be allowed to be changed in priority, or no alternatives can be added to them.
  • Added more customizable individual and student group override reservations.
  • Reservations can be edited without locking the offering when wait-listing is disabled.
  • Created Learning Community reservations combining course and student group reservations.
  • Various improvements on the Reservations page (e.g., it is now possible to filter by override type).

Critical Courses

  • Some course requests may be identified as critical.
  • Critical course requests should take precedence (assign critical courses first, do not unassing critical course demands).
  • Critical courses are identified by a custom class implementing the CriticalCoursesProvider interface/

Other Improvements

  • Student Status: Added session-dependent student statuses.
  • Batch Solver: do not put students into classes that already started (added General.ClassesFixedDate solver parameter).
  • Course Requests: Alternate Course Requests renamed to Substitute Course Requests.
  • Course Requests: Added ability to select multiple courses in the Course Finder dialog and filter by UCC course attributes.

Event Management

Permissions

  • Finer control over who can see unpublished class events.
    • When unitime.events.hasRole.checkSessionStatusForClasses is set to true (departmental managers cannot see unpublished class events of other departments).
    • Allow some department-dependent roles to see all class events with the new EventCanSeeUnpublishedEvents permission.

Approval

  • When new meetings of a Special or Course-Related event are automatically approved (either due to the Approve New Meetings toggle or the event status), also add Approve action into the event notes.

Administration

Data Exchange

  • CSV Exports: Added ability to export CSVs with custom delimiter and quotation characters.
    • Using csvDelimiter and csvQuatation parameters, for example: &csvDelimiter=%7c&csvQuotation= will add | as delimiter and no quotation marks.
  • Course Offering Export: export class.managingDept when a class is externally managed.
  • Academic Session Import: Corrected import of automated tasks (do not create a script if it already exists, do not limit script length to 255 chars).
  • Solver Load: Added ability to load solver XML in using the Data Exchange page.
    • No data are updated, but the appropriate solver is created and loaded in using the given XML file.

Dependencies

  • Spring Framework upgraded to 4.3.18 (was 3.2.14)
  • spring Security upgraded to 4.2.9 (was 3.2.8)
  • Spring Integration upgraded to 4.3.17 (was 3.0.7)
  • Appache Commons FileUpload updated to version 1.3.3 (was 1.3.1)
  • Restlet Framework upgraded to 2.3.12 (was 2.3.4)
  • Added jaxen 1.1.6 to ensure that scripts are able to create XML files (this fixes an issue ClassNotFoundException: org.jaxen.VariableContext).

Other

  • Sponsoring Organizations: Avoid a Hibernate cache exception when deleting a sponsoring organization that is being used.
  • Date Patterns: Avoid throwing an error when the date pattern starts before the first month (just ignore the dates before instead).
Assets 3

@tomas-muller tomas-muller released this Mar 28, 2019 · 310 commits to master since this release

Course Timetabling

Course Timetabling: Date Pattern Check

  • Only show the committed solution does not match current date pattern error when showing a committed solution.

Course Timetabling: Exact Time Over Midnight

  • During the solver load, report an error when there is an exact time that goes over midnight.

Course Timetabling: Saved Timetables

  • Speed up the Saved Timetables page by pre-fetching solver mode and configuration.

Instructor Scheduling

Instructor Scheduling: Instructor Preferences

  • Corrected the same course preference satisfaction when being computed on an instructor.

Student Scheduling

Scheduling Assistant: Wait-Lists

  • Added back the Wait-List toggles on the List of Classes table. These toggles disappeared with the ability to put preferences on classes and instructional methods.

Event Management

Add Course Related Event: Required Attendance Default

  • Added ability to define a default value for the "Students are required to attend this event." toggle when creating a course-related event.
  • Application property unitime.events.courseEventDefaultStudentAttendance, defaults to false.

Administration

Data Exchange: Course Offerings Export

  • Added ability to restrict subject areas in the course offering export (using tmtbl.export.subjects parameter that contains a comma separated list of subject area ids).
  • Added a script named Export Course Offerings that allows to export course offerings for the select subject area(s).
  • Class id: When a class has no external id and the class label is too long (over 40 chars), export just the itype and section number (e.g., Lec 1a).
  • Added class.managingDept when a class is externally managed.

Data Exchange: Course Offerings Import

  • Improved handling of time and date patterns.
    • Follow the timePattern attribute when it is used and a matching time pattern exists.
    • Set the time and date pattern on the committed assignment based on the selected time and date patterns on the class (avoid re-computation from class meetings when possible).

Data Exchange: Curricula Export

  • Use US number format when exporting course shares.
  • Export multiple majors flag.

Data Exchange: Academic Session Import

  • Corrected import of automated tasks: do not create a script if it already exists, do not limit script length to 255 chars.
Assets 3

@tomas-muller tomas-muller released this Oct 19, 2018 · 326 commits to master since this release

Course Timetabling

Timetable Grid: Week Selection

  • Fixed a case when there are two overlapping classes assigned to a room or to an instructor (only one class was displayed if there was a full overlap or the classes were displayed one after the other in case of a partial overlap).

Date Pattern: Changes after Solution Commit

  • In order to make it more obvious to the user when the assigned Date Pattern for a class has been changed after a solution has been committed, the following changes have been made:
    • Updated the List of Classes on the Instructional Offering Detail Page and Scheduling Subpart Detail Page to provide a warning icon, mouseover message and different highlighting to indicate the date pattern assigned to the class does not match the date pattern used in the committed timetable for the class. If a class has both a date pattern changed warning and a meeting conflict warning then only one warning icon is displayed.
    • Updated the Class Detail page to show an error message at the top indicating the date pattern assigned to the class does not match the date pattern used in the committed timetable for the class.

Timetable Grid: Groups

  • Show group / student enrollment info on classes that have no rooms assigned.

Student Scheduling

Batch Solver Load: Linked Classes

  • Load distribution constraints only after student course requests are loaded.
  • This fixes an issue of Linked Classes constraints not being properly created.

Online Student Scheduling Dashboard: Permissions

  • Scheduling advisors and administrators should be able to see all courses of a student regardless of whether they have the Department Independent permission or not.

Hide Auxiliary Instructors

  • Do not show instructors that have a teaching responsibility with the Auxiliary flag set.

Instructor Assignment

Classes: Need Instructor Assignment

  • Corrected the "Show only classes that need instructor assignment" filter (fixes the could not resolve property: teachingLoad error).

Event Management

Rooms: CSV/XML/XLS Export

  • Corrected handling of the filter flag attributes (flag:plain is added to the filter, not replacing the existing flag(s)).
  • This fixes the issue with event rooms not being properly exported (flag:Event).

Event Detail: Enrollments

  • Added Export PDF to the Enrollments table.
  • Export CSV/PDF: added student's email address.

Other

HQL Reports: Export CSV

  • Fixed the ability to export an HQL report to CSV when the query contains a single-choice parameter (like SUBJECT or DEPARTMENT).

Data Exchange: Staff Import

  • Report an error when no department is provided and there are two or more staff members with the matching external id.
Assets 3

@tomas-muller tomas-muller released this Jul 10, 2018 · 343 commits to master since this release

Course Timetabling

GWT

  • Remaining pages rewritten using the Google Web Toolkit.
  • These include Suggestions, Timetables, Solver Reports, Conflict Statistics, Changes, and History.

Time Patterns: First Day Of Week

  • Added ability to change the first day of week for time patterns.
  • Using unitime.timePattern.firstDayOfWeek application property (0 is Monday, 1 is Tuesday, etc.).

Timetable Grid

  • Added ability to show course titles on the timetable grid (there is a new toggle in the Filter named Show Course Titles).
  • Added ability to split class label into two lines (enable by setting the application property unitime.timeGrid.classNameTwoLines to true, defaults to false).
  • Export XLS: added ability to export the timetable grid to Excel Spreadsheet (XLS format).
  • Export PDF: show one table per each day of week when in the "In Row [horizontal]" mode (instead showing one table very wide table with all the days of the week inside).

Instructional Offering Cross Lists: Keep Course Requests

  • Added an ablitity to keep course requests on the course that is added to or dropped from a cross-list.
  • Enable this feature by setting unitime.crossList.keepCourseRequests to true (default is false).

Class Assignment: Solution Conflicts

  • Added ability to use solution conflicts instead of the real student class enrollments when there are no real enrollments yet.

Online Student Scheduling

Special Registration

  • The following work has been done to support special registration at Purdue.
  • Enable special registration in Scheduling Assistant by implementing the custom special registration provider class.
  • In the special registration mode, a student may be allowed to pick a section that is not available, conflicting with some other section that the student has, or reserved for some other students.
  • Added ability to show Submit Special Registration when Submit Schedule button is not available.
  • Added ability to select the current academic session using URL parameters term and campus (these may include external term and campus names, if unitime.custom.ExternalTermProvider is configured).

Course Requests Validation

  • The following work has been done to support course requests at Purdue.
  • Added ability to validate course requests and to provide errors and warnings back to the student.
  • These include student's eligibility to register, credit checking, providing alternatives, time conflicts of single section courses, etc.

Scheduling Dashboard

  • Include distance conflicts and time overlaps in the dashboard.
  • Enrollments table: show only primary requests in the Not-Enrolled column; show alternative requests in the (newly added) Alternative column.
  • Students table: show both Enrollment Credit and Request Credit columns.
  • Students table: added time overlaps, distance conflicts, and satisfaction of section and instructional method preferences.
  • Filter: added ability to filter by the number of credits and time overlaps.
  • Filter: added My Students mode showing only students associated with the current advisor role.
  • When a student is clicked, also include course requests and time grid in the view (Classes for student dialog).
    • There are now three tabs: Course Requests, List of Classes, and Time Grid.
  • Added ability for advisors to assign students to student groups and student statuses.
  • Added More button combining the operations of the individual columns of the table displayed.
  • Enrollment Credit: added ability to show credit information related to particular Instructional Mode.
    • For instance, when a student has 18 credit hours, 6 of which are online, the column will show 18 (online: 6)
    • Added ability to filter students by IM credit or by credit hours that are not associated with any instructional method.
  • Show more details about the selected status when using the Set student note... dialog.
  • Change Log: show course requests in a table, including selected sections and instructional method.
  • Added ability to see the change log even when the online scheduling server is not running.

Student Advisors

  • Created student advisors table (named advisor) and a many to many relation between advisors and students.
  • Added XML import and export.
  • Added Administration > Academic Sessions > Student Advisors page.
  • Authentication can use the advisor table (to associate the authenticated user with an advisor role).
  • Added a few new permissions related to
    • whether it is allowed to edit his/her students (Student Scheduling Advisor Can Modify My Students) or all students (Student Scheduling Advisor Can Modify All Students)
    • whether it is allowed to change status (Student Scheduling Change Student Status) or student group association (Student Scheduling Change Student Group)

Student Course Requests

  • Show total credit range on the Student Course Requests page, assuming that the student will be able to get a complete schedule.
  • Degree Plan: when updating course requests with a degree plan, do not remove course requests that cannot be deleted (student is already enrolled in the course).
    • Also, include alternatives from choice groups.
  • Automatically open 1st alternative when a course is entered in the Course Requests table.
  • When course requests are successfully submitted, a confirmation dialog is displayed. If agreed, a print dialog is opened with a printer-friendly version of the course requests table.
  • Added course request and credit status icons (when supported by the custom course request validation).
  • Added ability to open the Course Finder (in a read-only mode) for course requests that cannot be changed.
  • Added ability to hide Alternate Course Requests table (unless the student has some alternatives already, set StudentSectioningConstants.numberOfAlternatives to zero).

Student Scheduling Status

  • Registration statuses made more granular:
    • Assistant: formerly Access, only applies to the Scheduling Assistant
    • Student Enroll: renamed, formerly Enrollment
    • Advisor Enroll: formerly Advisor, only applies to the Scheduling Assistant
    • Admin Enroll: formerly Advisor, only applies to the Scheduling Assistant
    • Registration: Course Requests page is available (instead of using Access)
    • Student Register: renamed, formerly Registration (student can save requests)
    • Advisor Register: new status, advisor can save requests
    • Admin Register: new status, admin can save requests
  • Added a flag on whether the advisor can set this status.
  • Added effective dates and times, and a fall-back status (when outside of the effective period).

Disabled Sections

  • Added ability to allow some students to enroll into sections that are marked as not enabled for student scheduling.
  • Student must have a student group reservation for a student group of a type that allows for disabled sections (with a reservation).
  • Student must be of a student group that is of a type that allows for disabled sections (whithout a reservation).

Student Scheduling Entry Page

  • Added an entry page UniTime/studentScheduling.do
  • Admins and advisors are redirected to the Online Student Scheduling Dashboard (advisors with students will have mode:"My Students" selected).
  • Students are redirected (first match in this order):
      1. Scheduling Assistant page when enrollment is enabled
      1. Course Requests page when registration is enabled
      1. Scheduling Assistant page when access is enabled
      1. Course Requests page when registration is enabled
  • When there is no mach, the main page is opened.
  • Term, campus, and session parameters can be used to select the academic session.
  • Other parameters are passed on to the target page.

Constraint Solver

Course Timetabling: Max Half-Days Constraint

  • The MaxHalfDays constraint limits the number of half-days of week during which the given set of classes are taught.
  • It has one parameter: a maximal number of week half-days during which the given set of classes can be placed.
  • A day is split by noon (which can be changed using General.HalfDaySlot parameter).
  • A class starting before noon is considered a morning class (despite of its end), a class starting at noon or later is considered an afternoon class.
  • For instance, a reference MaxHalfDays:4 translates to a maximum number of 4 half-days a week.

Course Timetabling: added MaxHoles distribution constraint

  • The MaxHoles constraint limits the number of free time (holes) for an instructor on a day (between the first and the last class on a day).
  • It has one parameter: a maximal amount of free time that an instructor can have on a day in minutes.
  • For example, reference MaxHoles:120 translates to a maximum number of two hours of total free time between the first and the last class on a day:
    • if required, having more free time is prohibited
    • if preferred or strongly preferred, the excessive free time is penalized

Course Timetabling: Student Conflicts

  • Added a naive, yet effective approach for minimizing holes in student schedule.
    • The new StudentMinimizeScheduleHoles criterion penalizes all cases where a student has two classes taught on the same day that are not back-to-back.
    • The penalization is based on the time distance between the two classes, computed in hours.
    • These penalties are weighted by Comparator.MinimizeStudentScheduleHolesWeight, which defaults to 1/20 of the Comparator.StudentConflictWeight.
    • To enable this criterion, add org.cpsolver.coursett.criteria.additional.StudentMinimizeScheduleHoles to General.AdditionalCriteria.
  • Added a naive, yet effective approach for minimizing number of days in student schedule.
    • The new StudentMinimizeDaysOfWeek criterion penalizes all cases where a student has two classes taught on different days.
    • These penalties are weighted by Comparator.MinimizeStudentScheduleDaysWeight, which defaults to 1/20 of the Comparator.StudentConflictWeight.
    • To enable this criterion, add org.cpsolver.coursett.criteria.additional.StudentMinimizeDaysOfWeek to General.AdditionalCriteria.
  • As the StudentMinimizeScheduleHoles criterion tends to spread the student among as many days as possible, the second criterion StudentMinimizeDaysOfWeek can be used to counteract this effect, if desired.

Course Timetabling: Week Start/End

  • Added ability to define when a work week starts (General.FirstWorkDay) and when it ends (General.LastWorkDay).
  • It is possible that General.LastWorkDay < General.FirstWorkDay, e.g., General.FirstWorkDay = 6 (Sunday) and General.LastWorkDay = 3 (Thursday).
  • Corrected behavior of various constraints for the case when week starts on Sunday (PRECEDENCE, BTB_DAY, NDB_GT_1, FOLLOWING_DAY, SPREAD, MIN_ROOM_USE, and a few other places).

Course Timetabling: Work-Day Student Conflicts

  • Added work-day student conflicts
    • There is a work-day conflict when the time between the start of the first class and the end of the last class on a day is too long (e.g., more than 8 hours).
    • Solver parameter StudentConflict.WorkDayLimit defines the number of slots of a work-day (default is -1, work-day conflicts are disabled).

Course Timetabling: Automatic Instructor Constraints

  • Added ability to define distribution preferences that would be applied automatically to all instructors.
    • Using General.AutomaticInstructorConstraints solver parameter, containing a comma separated list of .
    • For example: General.AutomaticInstructorConstraints=Required At Most 5 Hrs, Required 6h Work-Day, Strongly Preferred 5h Work-Day
  • An automatic instructor distribution preference is only applied to instructors that do not have a preference of the same type already.
    • For instance, a Required At Most 5 Hrs will not be applied on an instructor that has a different At Most N Hrs preference already.

Course Timetabling: Instructor Distribution Preferences

  • Added ability to include all classes of an instructor (not just those that are of the same department) in the instructor's distributions.
    • Set solver parameter General.ApplyInstructorDistributionsAcrossAllDepartments to true (defaults to false).

Course Timetabling: Individual Reservations

  • Added checking for individual reservations (only useful when course requests are used as student course demand).

Examination Timetabling: Period Preferences

  • Added additional information about how well are the period preferences satisfied into the solution extended info (showing how many time a preferred, a strongly preferred, etc. period is selected for an exam).

Examination Timetabling: Room Split Penalty

  • Increased the limit on the maximal number of rooms that an exam can take to 30.

Examination Timetabling: Save XML

  • Corrected examination period penalty value.

Student Scheduling: Scheduling Assistant Weights

  • Corrected precision on the selected choices criterion as the result is a % of the selected classes.
  • Put selected sections higher in the list.
  • Minimize class penalties: divide penalty by the number of sections (counting average section penalty of the enrollment).
    • This is to avoid penalization of enrollments with more/fewer sections.
  • Prefer sections that are available (there is space in them).
    • This is especially useful when a student has an individual reservation that is not given for a particular section (student is allowed to pick any section).

Student Scheduling: Student Conflict Constraint

  • Checking whether a student already has a complete schedule corrected.
    • If the request is over the limit (student already has a complete schedule), do not return a free time or a wait-listed course request as a conflict.
  • Ensure that completeness of a student schedule is properly checked during the assignment.
    • Using Student.canAssign(request) does not work as it returns true when the request is already assigned and the conflicts are checked when Constraint.assigned(value) is called.
    • This was causing troubles for the IFS phase.

Student Scheduling: Short Distance Conflicts

  • Added ability to consider Short Distances student accommodation.
  • When a student needs short distances, there is a distance conflict between two back-to-back classes if the distance in minutes is greater than zero.
  • The reference of the accommodation for students that need short distances is defined by solver property Distances.ShortDistanceAccommodationReference (defaults to SD).

Student Scheduling: Disabled Sections

  • Added ability to mark certain sections as disabled.
  • Such sections cannot be used, unless the student allows for disabled sections, or there is a (group) reservation that allows for disabled sections.

Event Management

Events: Time Grid

  • Added ability to define first day of week, using unitime.events.gridStartDay application property (0 is Monday, 1 is Tuesday, etc.).

Room Availability: Include Events From Other Academic Sessions

  • Course/Examination Timetabling: Added ability to include events (of the same type) from other academic sessions.
  • To enable this, set tmtbl.room.availability.includeOtherTerms to true on the Application Configuration page.
  • Rooms of the overlapping academic sessions must have the same permanent id.
    • This can be achieved, e.g., by rolling forward the rooms from one academic session to the next.
    • Or, the rooms must be created using the Add Room page (of the first academic session) using the Update Future Academic Sessions section (room is created in multiple academic sessions at once).

Automation

Queue Processor: Clustering

  • Added ability to display queue processes across the cluster.
    • Roll forward, data exchange, scripts, and PDF exam reports use queue processor at the moment.
  • A task is executed locally, but it shows on other nodes as well and the resultant file can be accessed from the other nodes too.

Scripts: Script API

  • Added script API (UniTime/api/script)
  • To execute script, use
    • GET/POST api/script?term=&script=<SCRIPT_NAME>
    • plus all the parameters of the script
    • use &queue=false to execute the script immediately (outside of the process queue)
    • when there is an input file, use POST with the file as the payload
    • For example:
    • The request returns the appropriate task (queue item) when queue=false is not used.
    • When queue=false is used, the request waits till the script is finished and returns the output file (if there is any) or the log (in the text format if there is no output file).
  • To retrieve all tasks (queue items) from the process queue, use GET without additional parameters, e.g.,
  • To check particular task (queue item), use id=<ITEM_ID>
  • To get text log of a particular task (queue item), use log=<ITEM_ID>
  • To get output file of a particular task (queue item), use output=<ITEM_ID>
  • To delete a particular task from the queue, use delete=<ITEM_ID>

Scripts: Parameter Defaults

  • Added ability to use subject area abbreviation, department code, building abbreviation or room names as defaults.
  • Added ability to provide multiple defaults (separated by a comma) when the list allows for multiple selection.

Scripts: Parameter Types

  • Added ability to use the parameters that are available in HQL Reports (e.g., use type ACCOMODATION for student accommodation).
  • Added slot format (using a time selector).
  • Added timestamp format (using combination of a single date selector and a time selector).

Task Scheduler

  • Added ability to schedule periodic executions of scripts.
  • Periodic tasks are academic session dependent, available under Administration > Academic Sessions > Task Scheduler.

Administration

Add/Edit Timetable Manager

  • Maximal length of the External ID field corrected (40 characters).

Staff Import / Lookup

  • Include campus code (academic initiative) in the Staff table.
  • Manage Instructor List: match campus code when it is set.
  • Add/Edit Instructor Lookup: include campus code in the Department column when the campus does not match the current session.

Student Group Types

  • Added ability to associate student groups with a type.
  • Additional properties can be set on a group type.

Data Exchange: Course Offering Import

  • When there is action="create-if-not-exists" on the offering element:
    • If the course already exists, do not update its offered/not-offered status, configurations, and exams (that is, only update courses and their title, schedule book note and credit information).
    • If the course does not exist, create the course with all its content.

Data Exchange: ZIP / GZIP

  • Added ability to import ZIP or GZIP files.
    • Use .xml.gz or .zxml extension for a gzipped XML file.
    • Use .dat.gz or .zdat extension for a gzipped DAT file.
    • Use .zip extension for a zipped, the file may contain multiple files.

HQL Reports

  • Added ability to provide additional parameters, just like in the scripts.
  • Each parameter has a name, a label, a type, and a default value.
  • These parameters could be strings, numbers, dates, enums, etc.
  • Use :name to inject the parameter value in the HQL (where name is the name of the parameter).
  • Added ability to filter by
    • student groups (STUDENT_GROUP or STUDENT_GROUPS)
    • student accommodations (ACCOMODATION or ACCOMODATIONS)
    • academic areas (ACADEMIC_AREA or ACADEMIC_AREAS)
    • majors (POS_MAJOR or POS_MAJORS)
  • Aadded %SESSIONS% parameter listing unique ids of available academic sessions.

Test HQL

  • Added ability to export table in CSV.
  • Improved table formatting: show return aliases (column names) when set, added pagination (when more lines than tmtbl.test_hql.max_line is returned).
  • Replace parameters like %SESSION% with the user's data.
  • Improved navigation: table is clickable when the first column has a unique id and is named _Class, __Offering, __Subpart, __Room, __Instructor, __Exam, or __Event.

UniTime API: Instructor Schedule

  • Added ability to export instructor preferences (when pref=1 in the request URL).
  • Added ability to export instructors with the matching external id across all academic session (when no session is selected, or all=1 in the request URL).

Data Exchange: Course Requests XML

  • Import: added ability to only add / drop certain requests of a student.
    • Use addCourseRequests and dropCourseRequests elements instead of updateCourseRequests.
    • These elements have the same format as updateCourseRequests.
  • Added export/import of section and instructional method preferences.

Other

Technology Update

  • GWT updated to version 2.8.2 (from 2.7.0)

Query Encoder: Illegal Block Size Fix

  • Use Base64 by default.
  • Fall back to base 36 big integers, but pad with sign bytes (0xff) when IllegalBlockSizeException is seen.
    • Using BigInteger to map bytes to strings is not ideal because of the sign bytes may get ignored, causing IllegalBlockSizeException during decoding.

Various iCalendar Exports: Custom VTimeZone Generator

Assets 3

@tomas-muller tomas-muller released this Jul 9, 2018 · 370 commits to master since this release

Course Timetabling

GWT

  • Remaining pages rewritten using the Google Web Toolkit.
  • These include Suggestions, Timetables, Solver Reports, Conflict Statistics, Changes, and History.

Time Patterns: First Day Of Week

  • Added ability to change the first day of week for time patterns.
  • Using unitime.timePattern.firstDayOfWeek application property (0 is Monday, 1 is Tuesday, etc.).

Timetable Grid

  • Added ability to show course titles on the timetable grid (there is a new toggle in the Filter named Show Course Titles).
  • Added ability to split class label into two lines (enable by setting the application property unitime.timeGrid.classNameTwoLines to true, defaults to false).
  • Export XLS: added ability to export the timetable grid to Excel Spreadsheet (XLS format).
  • Export PDF: show one table per each day of week when in the "In Row [horizontal]" mode (instead showing one table very wide table with all the days of the week inside).

Instructional Offering Cross Lists: Keep Course Requests

  • Added an ablitity to keep course requests on the course that is added to or dropped from a cross-list.
  • Enable this feature by setting unitime.crossList.keepCourseRequests to true (default is false).

Class Assignment: Solution Conflicts

  • Added ability to use solution conflicts instead of the real student class enrollments when there are no real enrollments yet.

Online Student Scheduling

Special Registration

  • The following work has been done to support special registration at Purdue.
  • Enable special registration in Scheduling Assistant by implementing the custom special registration provider class.
  • In the special registration mode, a student may be allowed to pick a section that is not available, conflicting with some other section that the student has, or reserved for some other students.
  • Added ability to show Submit Special Registration when Submit Schedule button is not available.
  • Added ability to select the current academic session using URL parameters term and campus (these may include external term and campus names, if unitime.custom.ExternalTermProvider is configured).

Course Requests Validation

  • The following work has been done to support course requests at Purdue.
  • Added ability to validate course requests and to provide errors and warnings back to the student.
  • These include student's eligibility to register, credit checking, providing alternatives, time conflicts of single section courses, etc.

Scheduling Dashboard

  • Include distance conflicts and time overlaps in the dashboard.
  • Enrollments table: show only primary requests in the Not-Enrolled column; show alternative requests in the (newly added) Alternative column.
  • Students table: show both Enrollment Credit and Request Credit columns.
  • Students table: added time overlaps, distance conflicts, and satisfaction of section and instructional method preferences.
  • Filter: added ability to filter by the number of credits and time overlaps.
  • Filter: added My Students mode showing only students associated with the current advisor role.
  • When a student is clicked, also include course requests and time grid in the view (Classes for student dialog).
    • There are now three tabs: Course Requests, List of Classes, and Time Grid.
  • Added ability for advisors to assign students to student groups and student statuses.
  • Added More button combining the operations of the individual columns of the table displayed.
  • Enrollment Credit: added ability to show credit information related to particular Instructional Mode.
    • For instance, when a student has 18 credit hours, 6 of which are online, the column will show 18 (online: 6)
    • Added ability to filter students by IM credit or by credit hours that are not associated with any instructional method.
  • Show more details about the selected status when using the Set student note... dialog.
  • Change Log: show course requests in a table, including selected sections and instructional method.
  • Added ability to see the change log even when the online scheduling server is not running.

Student Advisors

  • Created student advisors table (named advisor) and a many to many relation between advisors and students.
  • Added XML import and export.
  • Added Administration > Academic Sessions > Student Advisors page.
  • Authentication can use the advisor table (to associate the authenticated user with an advisor role).
  • Added a few new permissions related to
    • whether it is allowed to edit his/her students (Student Scheduling Advisor Can Modify My Students) or all students (Student Scheduling Advisor Can Modify All Students)
    • whether it is allowed to change status (Student Scheduling Change Student Status) or student group association (Student Scheduling Change Student Group)

Student Course Requests

  • Show total credit range on the Student Course Requests page, assuming that the student will be able to get a complete schedule.
  • Degree Plan: when updating course requests with a degree plan, do not remove course requests that cannot be deleted (student is already enrolled in the course).
    • Also, include alternatives from choice groups.
  • Automatically open 1st alternative when a course is entered in the Course Requests table.
  • When course requests are successfully submitted, a confirmation dialog is displayed. If agreed, a print dialog is opened with a printer-friendly version of the course requests table.
  • Added course request and credit status icons (when supported by the custom course request validation).
  • Added ability to open the Course Finder (in a read-only mode) for course requests that cannot be changed.
  • Added ability to hide Alternate Course Requests table (unless the student has some alternatives already, set StudentSectioningConstants.numberOfAlternatives to zero).

Student Scheduling Status

  • Registration statuses made more granular:
    • Assistant: formerly Access, only applies to the Scheduling Assistant
    • Student Enroll: renamed, formerly Enrollment
    • Advisor Enroll: formerly Advisor, only applies to the Scheduling Assistant
    • Admin Enroll: formerly Advisor, only applies to the Scheduling Assistant
    • Registration: Course Requests page is available (instead of using Access)
    • Student Register: renamed, formerly Registration (student can save requests)
    • Advisor Register: new status, advisor can save requests
    • Admin Register: new status, admin can save requests
  • Added a flag on whether the advisor can set this status.
  • Added effective dates and times, and a fall-back status (when outside of the effective period).

Disabled Sections

  • Added ability to allow some students to enroll into sections that are marked as not enabled for student scheduling.
  • Student must have a student group reservation for a student group of a type that allows for disabled sections (with a reservation).
  • Student must be of a student group that is of a type that allows for disabled sections (whithout a reservation).

Student Scheduling Entry Page

  • Added an entry page UniTime/studentScheduling.do
  • Admins and advisors are redirected to the Online Student Scheduling Dashboard (advisors with students will have mode:"My Students" selected).
  • Students are redirected (first match in this order):
      1. Scheduling Assistant page when enrollment is enabled
      1. Course Requests page when registration is enabled
      1. Scheduling Assistant page when access is enabled
      1. Course Requests page when registration is enabled
  • When there is no mach, the main page is opened.
  • Term, campus, and session parameters can be used to select the academic session.
  • Other parameters are passed on to the target page.

Constraint Solver

Course Timetabling: Max Half-Days Constraint

  • The MaxHalfDays constraint limits the number of half-days of week during which the given set of classes are taught.
  • It has one parameter: a maximal number of week half-days during which the given set of classes can be placed.
  • A day is split by noon (which can be changed using General.HalfDaySlot parameter).
  • A class starting before noon is considered a morning class (despite of its end), a class starting at noon or later is considered an afternoon class.
  • For instance, a reference MaxHalfDays:4 translates to a maximum number of 4 half-days a week.

Course Timetabling: added MaxHoles distribution constraint

  • The MaxHoles constraint limits the number of free time (holes) for an instructor on a day (between the first and the last class on a day).
  • It has one parameter: a maximal amount of free time that an instructor can have on a day in minutes.
  • For example, reference MaxHoles:120 translates to a maximum number of two hours of total free time between the first and the last class on a day:
    • if required, having more free time is prohibited
    • if preferred or strongly preferred, the excessive free time is penalized

Course Timetabling: Student Conflicts

  • Added a naive, yet effective approach for minimizing holes in student schedule.
    • The new StudentMinimizeScheduleHoles criterion penalizes all cases where a student has two classes taught on the same day that are not back-to-back.
    • The penalization is based on the time distance between the two classes, computed in hours.
    • These penalties are weighted by Comparator.MinimizeStudentScheduleHolesWeight, which defaults to 1/20 of the Comparator.StudentConflictWeight.
    • To enable this criterion, add org.cpsolver.coursett.criteria.additional.StudentMinimizeScheduleHoles to General.AdditionalCriteria.
  • Added a naive, yet effective approach for minimizing number of days in student schedule.
    • The new StudentMinimizeDaysOfWeek criterion penalizes all cases where a student has two classes taught on different days.
    • These penalties are weighted by Comparator.MinimizeStudentScheduleDaysWeight, which defaults to 1/20 of the Comparator.StudentConflictWeight.
    • To enable this criterion, add org.cpsolver.coursett.criteria.additional.StudentMinimizeDaysOfWeek to General.AdditionalCriteria.
  • As the StudentMinimizeScheduleHoles criterion tends to spread the student among as many days as possible, the second criterion StudentMinimizeDaysOfWeek can be used to counteract this effect, if desired.

Course Timetabling: Week Start/End

  • Added ability to define when a work week starts (General.FirstWorkDay) and when it ends (General.LastWorkDay).
  • It is possible that General.LastWorkDay < General.FirstWorkDay, e.g., General.FirstWorkDay = 6 (Sunday) and General.LastWorkDay = 3 (Thursday).
  • Corrected behavior of various constraints for the case when week starts on Sunday (PRECEDENCE, BTB_DAY, NDB_GT_1, FOLLOWING_DAY, SPREAD, MIN_ROOM_USE, and a few other places).

Course Timetabling: Work-Day Student Conflicts

  • Added work-day student conflicts
    • There is a work-day conflict when the time between the start of the first class and the end of the last class on a day is too long (e.g., more than 8 hours).
    • Solver parameter StudentConflict.WorkDayLimit defines the number of slots of a work-day (default is -1, work-day conflicts are disabled).

Course Timetabling: Automatic Instructor Constraints

  • Added ability to define distribution preferences that would be applied automatically to all instructors.
    • Using General.AutomaticInstructorConstraints solver parameter, containing a comma separated list of .
    • For example: General.AutomaticInstructorConstraints=Required At Most 5 Hrs, Required 6h Work-Day, Strongly Preferred 5h Work-Day
  • An automatic instructor distribution preference is only applied to instructors that do not have a preference of the same type already.
    • For instance, a Required At Most 5 Hrs will not be applied on an instructor that has a different At Most N Hrs preference already.

Course Timetabling: Instructor Distribution Preferences

  • Added ability to include all classes of an instructor (not just those that are of the same department) in the instructor's distributions.
    • Set solver parameter General.ApplyInstructorDistributionsAcrossAllDepartments to true (defaults to false).

Course Timetabling: Individual Reservations

  • Added checking for individual reservations (only useful when course requests are used as student course demand).

Examination Timetabling: Period Preferences

  • Added additional information about how well are the period preferences satisfied into the solution extended info (showing how many time a preferred, a strongly preferred, etc. period is selected for an exam).

Examination Timetabling: Room Split Penalty

  • Increased the limit on the maximal number of rooms that an exam can take to 30.

Examination Timetabling: Save XML

  • Corrected examination period penalty value.

Student Scheduling: Scheduling Assistant Weights

  • Corrected precision on the selected choices criterion as the result is a % of the selected classes.
  • Put selected sections higher in the list.
  • Minimize class penalties: divide penalty by the number of sections (counting average section penalty of the enrollment).
    • This is to avoid penalization of enrollments with more/fewer sections.
  • Prefer sections that are available (there is space in them).
    • This is especially useful when a student has an individual reservation that is not given for a particular section (student is allowed to pick any section).

Student Scheduling: Student Conflict Constraint

  • Checking whether a student already has a complete schedule corrected.
    • If the request is over the limit (student already has a complete schedule), do not return a free time or a wait-listed course request as a conflict.
  • Ensure that completeness of a student schedule is properly checked during the assignment.
    • Using Student.canAssign(request) does not work as it returns true when the request is already assigned and the conflicts are checked when Constraint.assigned(value) is called.
    • This was causing troubles for the IFS phase.

Student Scheduling: Short Distance Conflicts

  • Added ability to consider Short Distances student accommodation.
  • When a student needs short distances, there is a distance conflict between two back-to-back classes if the distance in minutes is greater than zero.
  • The reference of the accommodation for students that need short distances is defined by solver property Distances.ShortDistanceAccommodationReference (defaults to SD).

Student Scheduling: Disabled Sections

  • Added ability to mark certain sections as disabled.
  • Such sections cannot be used, unless the student allows for disabled sections, or there is a (group) reservation that allows for disabled sections.

Event Management

Events: Time Grid

  • Added ability to define first day of week, using unitime.events.gridStartDay application property (0 is Monday, 1 is Tuesday, etc.).

Room Availability: Include Events From Other Academic Sessions

  • Course/Examination Timetabling: Added ability to include events (of the same type) from other academic sessions.
  • To enable this, set tmtbl.room.availability.includeOtherTerms to true on the Application Configuration page.
  • Rooms of the overlapping academic sessions must have the same permanent id.
    • This can be achieved, e.g., by rolling forward the rooms from one academic session to the next.
    • Or, the rooms must be created using the Add Room page (of the first academic session) using the Update Future Academic Sessions section (room is created in multiple academic sessions at once).

Automation

Queue Processor: Clustering

  • Added ability to display queue processes across the cluster.
    • Roll forward, data exchange, scripts, and PDF exam reports use queue processor at the moment.
  • A task is executed locally, but it shows on other nodes as well and the resultant file can be accessed from the other nodes too.

Scripts: Script API

  • Added script API (UniTime/api/script)
  • To execute script, use
    • GET/POST api/script?term=&script=<SCRIPT_NAME>
    • plus all the parameters of the script
    • use &queue=false to execute the script immediately (outside of the process queue)
    • when there is an input file, use POST with the file as the payload
    • For example:
    • The request returns the appropriate task (queue item) when queue=false is not used.
    • When queue=false is used, the request waits till the script is finished and returns the output file (if there is any) or the log (in the text format if there is no output file).
  • To retrieve all tasks (queue items) from the process queue, use GET without additional parameters, e.g.,
  • To check particular task (queue item), use id=<ITEM_ID>
  • To get text log of a particular task (queue item), use log=<ITEM_ID>
  • To get output file of a particular task (queue item), use output=<ITEM_ID>
  • To delete a particular task from the queue, use delete=<ITEM_ID>

Scripts: Parameter Defaults

  • Added ability to use subject area abbreviation, department code, building abbreviation or room names as defaults.
  • Added ability to provide multiple defaults (separated by a comma) when the list allows for multiple selection.

Scripts: Parameter Types

  • Added ability to use the parameters that are available in HQL Reports (e.g., use type ACCOMODATION for student accommodation).
  • Added slot format (using a time selector).
  • Added timestamp format (using combination of a single date selector and a time selector).

Task Scheduler

  • Added ability to schedule periodic executions of scripts.
  • Periodic tasks are academic session dependent, available under Administration > Academic Sessions > Task Scheduler.

Administration

Add/Edit Timetable Manager

  • Maximal length of the External ID field corrected (40 characters).

Staff Import / Lookup

  • Include campus code (academic initiative) in the Staff table.
  • Manage Instructor List: match campus code when it is set.
  • Add/Edit Instructor Lookup: include campus code in the Department column when the campus does not match the current session.

Student Group Types

  • Added ability to associate student groups with a type.
  • Additional properties can be set on a group type.

Data Exchange: Course Offering Import

  • When there is action="create-if-not-exists" on the offering element:
    • If the course already exists, do not update its offered/not-offered status, configurations, and exams (that is, only update courses and their title, schedule book note and credit information).
    • If the course does not exist, create the course with all its content.

Data Exchange: ZIP / GZIP

  • Added ability to import ZIP or GZIP files.
    • Use .xml.gz or .zxml extension for a gzipped XML file.
    • Use .dat.gz or .zdat extension for a gzipped DAT file.
    • Use .zip extension for a zipped, the file may contain multiple files.

HQL Reports

  • Added ability to provide additional parameters, just like in the scripts.
  • Each parameter has a name, a label, a type, and a default value.
  • These parameters could be strings, numbers, dates, enums, etc.
  • Use :name to inject the parameter value in the HQL (where name is the name of the parameter).
  • Added ability to filter by
    • student groups (STUDENT_GROUP or STUDENT_GROUPS)
    • student accommodations (ACCOMODATION or ACCOMODATIONS)
    • academic areas (ACADEMIC_AREA or ACADEMIC_AREAS)
    • majors (POS_MAJOR or POS_MAJORS)
  • Aadded %SESSIONS% parameter listing unique ids of available academic sessions.

Test HQL

  • Added ability to export table in CSV.
  • Improved table formatting: show return aliases (column names) when set, added pagination (when more lines than tmtbl.test_hql.max_line is returned).
  • Replace parameters like %SESSION% with the user's data.
  • Improved navigation: table is clickable when the first column has a unique id and is named _Class, __Offering, __Subpart, __Room, __Instructor, __Exam, or __Event.

UniTime API: Instructor Schedule

  • Added ability to export instructor preferences (when pref=1 in the request URL).
  • Added ability to export instructors with the matching external id across all academic session (when no session is selected, or all=1 in the request URL).

Data Exchange: Course Requests XML

  • Import: added ability to only add / drop certain requests of a student.
    • Use addCourseRequests and dropCourseRequests elements instead of updateCourseRequests.
    • These elements have the same format as updateCourseRequests.
  • Added export/import of section and instructional method preferences.

Other

Technology Update

  • GWT updated to version 2.8.2 (from 2.7.0)

Query Encoder: Illegal Block Size Fix

  • Use Base64 by default.
  • Fall back to base 36 big integers, but pad with sign bytes (0xff) when IllegalBlockSizeException is seen.
    • Using BigInteger to map bytes to strings is not ideal because of the sign bytes may get ignored, causing IllegalBlockSizeException during decoding.

Various iCalendar Exports: Custom VTimeZone Generator

Assets 3

@tomas-muller tomas-muller released this May 30, 2018 · 67 commits to dev_UniTime43 since this release

Course Timetabling

GWT

  • Remaining pages rewritten using the Google Web Toolkit.
  • These include Suggestions, Timetables, Solver Reports, Conflict Statistics, Changes, and History.

Time Patterns: First Day Of Week

  • Added ability to change the first day of week for time patterns.
  • Using unitime.timePattern.firstDayOfWeek application property (0 is Monday, 1 is Tuesday, etc.).

Timetable Grid

  • Added ability to show course titles on the timetable grid (there is a new toggle in the Filter named Show Course Titles).
  • Added ability to split class label into two lines (enable by setting the application property unitime.timeGrid.classNameTwoLines to true, defaults to false).
  • Export XLS: added ability to export the timetable grid to Excel Spreadsheet (XLS format).
  • Export PDF: show one table per each day of week when in the "In Row [horizontal]" mode (instead showing one table very wide table with all the days of the week inside).

Instructional Offering Cross Lists: Keep Course Requests

  • Added an ablitity to keep course requests on the course that is added to or dropped from a cross-list.
  • Enable this feature by setting unitime.crossList.keepCourseRequests to true (default is false).

Class Assignment: Solution Conflicts

  • Added ability to use solution conflicts instead of the real student class enrollments when there are no real enrollments yet.

Online Student Scheduling

Special Registration

  • The following work has been done to support special registration at Purdue.
  • Enable special registration in Scheduling Assistant by implementing the custom special registration provider class.
  • In the special registration mode, a student may be allowed to pick a section that is not available, conflicting with some other section that the student has, or reserved for some other students.
  • Added ability to show Submit Special Registration when Submit Schedule button is not available.
  • Added ability to select the current academic session using URL parameters term and campus (these may include external term and campus names, if unitime.custom.ExternalTermProvider is configured).

Course Requests Validation

  • The following work has been done to support course requests at Purdue.
  • Added ability to validate course requests and to provide errors and warnings back to the student.
  • These include student's eligibility to register, credit checking, providing alternatives, time conflicts of single section courses, etc.

Scheduling Dashboard

  • Include distance conflicts and time overlaps in the dashboard.
  • Enrollments table: show only primary requests in the Not-Enrolled column; show alternative requests in the (newly added) Alternative column.
  • Students table: show both Enrollment Credit and Request Credit columns.
  • Students table: added time overlaps, distance conflicts, and satisfaction of section and instructional method preferences.
  • Filter: added ability to filter by the number of credits and time overlaps.
  • Filter: added My Students mode showing only students associated with the current advisor role.
  • When a student is clicked, also include course requests and time grid in the view (Classes for student dialog).
    • There are now three tabs: Course Requests, List of Classes, and Time Grid.
  • Added ability for advisors to assign students to student groups and student statuses.
  • Added More button combining the operations of the individual columns of the table displayed.
  • Enrollment Credit: added ability to show credit information related to particular Instructional Mode.
    • For instance, when a student has 18 credit hours, 6 of which are online, the column will show 18 (online: 6)
    • Added ability to filter students by IM credit or by credit hours that are not associated with any instructional method.
  • Show more details about the selected status when using the Set student note... dialog.
  • Change Log: show course requests in a table, including selected sections and instructional method.
  • Added ability to see the change log even when the online scheduling server is not running.

Student Advisors

  • Created student advisors table (named advisor) and a many to many relation between advisors and students.
  • Added XML import and export.
  • Added Administration > Academic Sessions > Student Advisors page.
  • Authentication can use the advisor table (to associate the authenticated user with an advisor role).
  • Added a few new permissions related to
    • whether it is allowed to edit his/her students (Student Scheduling Advisor Can Modify My Students) or all students (Student Scheduling Advisor Can Modify All Students)
    • whether it is allowed to change status (Student Scheduling Change Student Status) or student group association (Student Scheduling Change Student Group)

Student Course Requests

  • Show total credit range on the Student Course Requests page, assuming that the student will be able to get a complete schedule.
  • Degree Plan: when updating course requests with a degree plan, do not remove course requests that cannot be deleted (student is already enrolled in the course).
    • Also, include alternatives from choice groups.
  • Automatically open 1st alternative when a course is entered in the Course Requests table.
  • When course requests are successfully submitted, a confirmation dialog is displayed. If agreed, a print dialog is opened with a printer-friendly version of the course requests table.
  • Added course request and credit status icons (when supported by the custom course request validation).
  • Added ability to open the Course Finder (in a read-only mode) for course requests that cannot be changed.
  • Added ability to hide Alternate Course Requests table (unless the student has some alternatives already, set StudentSectioningConstants.numberOfAlternatives to zero).

Student Scheduling Status

  • Registration statuses made more granular:
    • Assistant: formerly Access, only applies to the Scheduling Assistant
    • Student Enroll: renamed, formerly Enrollment
    • Advisor Enroll: formerly Advisor, only applies to the Scheduling Assistant
    • Admin Enroll: formerly Advisor, only applies to the Scheduling Assistant
    • Registration: Course Requests page is available (instead of using Access)
    • Student Register: renamed, formerly Registration (student can save requests)
    • Advisor Register: new status, advisor can save requests
    • Admin Register: new status, admin can save requests
  • Added a flag on whether the advisor can set this status.
  • Added effective dates and times, and a fall-back status (when outside of the effective period).

Disabled Sections

  • Added ability to allow some students to enroll into sections that are marked as not enabled for student scheduling.
  • Student must have a student group reservation for a student group of a type that allows for disabled sections (with a reservation).
  • Student must be of a student group that is of a type that allows for disabled sections (whithout a reservation).

Student Scheduling Entry Page

  • Added an entry page UniTime/studentScheduling.do
  • Admins and advisors are redirected to the Online Student Scheduling Dashboard (advisors with students will have mode:"My Students" selected).
  • Students are redirected (first match in this order):
      1. Scheduling Assistant page when enrollment is enabled
      1. Course Requests page when registration is enabled
      1. Scheduling Assistant page when access is enabled
      1. Course Requests page when registration is enabled
  • When there is no mach, the main page is opened.
  • Term, campus, and session parameters can be used to select the academic session.
  • Other parameters are passed on to the target page.

Constraint Solver

Course Timetabling: Max Half-Days Constraint

  • The MaxHalfDays constraint limits the number of half-days of week during which the given set of classes are taught.
  • It has one parameter: a maximal number of week half-days during which the given set of classes can be placed.
  • A day is split by noon (which can be changed using General.HalfDaySlot parameter).
  • A class starting before noon is considered a morning class (despite of its end), a class starting at noon or later is considered an afternoon class.
  • For instance, a reference MaxHalfDays:4 translates to a maximum number of 4 half-days a week.

Course Timetabling: added MaxHoles distribution constraint

  • The MaxHoles constraint limits the number of free time (holes) for an instructor on a day (between the first and the last class on a day).
  • It has one parameter: a maximal amount of free time that an instructor can have on a day in minutes.
  • For example, reference MaxHoles:120 translates to a maximum number of two hours of total free time between the first and the last class on a day:
    • if required, having more free time is prohibited
    • if preferred or strongly preferred, the excessive free time is penalized

Course Timetabling: Student Conflicts

  • Added a naive, yet effective approach for minimizing holes in student schedule.
    • The new StudentMinimizeScheduleHoles criterion penalizes all cases where a student has two classes taught on the same day that are not back-to-back.
    • The penalization is based on the time distance between the two classes, computed in hours.
    • These penalties are weighted by Comparator.MinimizeStudentScheduleHolesWeight, which defaults to 1/20 of the Comparator.StudentConflictWeight.
    • To enable this criterion, add org.cpsolver.coursett.criteria.additional.StudentMinimizeScheduleHoles to General.AdditionalCriteria.
  • Added a naive, yet effective approach for minimizing number of days in student schedule.
    • The new StudentMinimizeDaysOfWeek criterion penalizes all cases where a student has two classes taught on different days.
    • These penalties are weighted by Comparator.MinimizeStudentScheduleDaysWeight, which defaults to 1/20 of the Comparator.StudentConflictWeight.
    • To enable this criterion, add org.cpsolver.coursett.criteria.additional.StudentMinimizeDaysOfWeek to General.AdditionalCriteria.
  • As the StudentMinimizeScheduleHoles criterion tends to spread the student among as many days as possible, the second criterion StudentMinimizeDaysOfWeek can be used to counteract this effect, if desired.

Course Timetabling: Week Start/End

  • Added ability to define when a work week starts (General.FirstWorkDay) and when it ends (General.LastWorkDay).
  • It is possible that General.LastWorkDay < General.FirstWorkDay, e.g., General.FirstWorkDay = 6 (Sunday) and General.LastWorkDay = 3 (Thursday).
  • Corrected behavior of various constraints for the case when week starts on Sunday (PRECEDENCE, BTB_DAY, NDB_GT_1, FOLLOWING_DAY, SPREAD, MIN_ROOM_USE, and a few other places).

Course Timetabling: Work-Day Student Conflicts

  • Added work-day student conflicts
    • There is a work-day conflict when the time between the start of the first class and the end of the last class on a day is too long (e.g., more than 8 hours).
    • Solver parameter StudentConflict.WorkDayLimit defines the number of slots of a work-day (default is -1, work-day conflicts are disabled).

Course Timetabling: Automatic Instructor Constraints

  • Added ability to define distribution preferences that would be applied automatically to all instructors.
    • Using General.AutomaticInstructorConstraints solver parameter, containing a comma separated list of .
    • For example: General.AutomaticInstructorConstraints=Required At Most 5 Hrs, Required 6h Work-Day, Strongly Preferred 5h Work-Day
  • An automatic instructor distribution preference is only applied to instructors that do not have a preference of the same type already.
    • For instance, a Required At Most 5 Hrs will not be applied on an instructor that has a different At Most N Hrs preference already.

Course Timetabling: Instructor Distribution Preferences

  • Added ability to include all classes of an instructor (not just those that are of the same department) in the instructor's distributions.
    • Set solver parameter General.ApplyInstructorDistributionsAcrossAllDepartments to true (defaults to false).

Course Timetabling: Individual Reservations

  • Added checking for individual reservations (only useful when course requests are used as student course demand).

Examination Timetabling: Period Preferences

  • Added additional information about how well are the period preferences satisfied into the solution extended info (showing how many time a preferred, a strongly preferred, etc. period is selected for an exam).

Examination Timetabling: Room Split Penalty

  • Increased the limit on the maximal number of rooms that an exam can take to 30.

Examination Timetabling: Save XML

  • Corrected examination period penalty value.

Student Scheduling: Scheduling Assistant Weights

  • Corrected precision on the selected choices criterion as the result is a % of the selected classes.
  • Put selected sections higher in the list.
  • Minimize class penalties: divide penalty by the number of sections (counting average section penalty of the enrollment).
    • This is to avoid penalization of enrollments with more/fewer sections.
  • Prefer sections that are available (there is space in them).
    • This is especially useful when a student has an individual reservation that is not given for a particular section (student is allowed to pick any section).

Student Scheduling: Student Conflict Constraint

  • Checking whether a student already has a complete schedule corrected.
    • If the request is over the limit (student already has a complete schedule), do not return a free time or a wait-listed course request as a conflict.
  • Ensure that completeness of a student schedule is properly checked during the assignment.
    • Using Student.canAssign(request) does not work as it returns true when the request is already assigned and the conflicts are checked when Constraint.assigned(value) is called.
    • This was causing troubles for the IFS phase.

Student Scheduling: Short Distance Conflicts

  • Added ability to consider Short Distances student accommodation.
  • When a student needs short distances, there is a distance conflict between two back-to-back classes if the distance in minutes is greater than zero.
  • The reference of the accommodation for students that need short distances is defined by solver property Distances.ShortDistanceAccommodationReference (defaults to SD).

Student Scheduling: Disabled Sections

  • Added ability to mark certain sections as disabled.
  • Such sections cannot be used, unless the student allows for disabled sections, or there is a (group) reservation that allows for disabled sections.

Event Management

Events: Time Grid

  • Added ability to define first day of week, using unitime.events.gridStartDay application property (0 is Monday, 1 is Tuesday, etc.).

Room Availability: Include Events From Other Academic Sessions

  • Course/Examination Timetabling: Added ability to include events (of the same type) from other academic sessions.
  • To enable this, set tmtbl.room.availability.includeOtherTerms to true on the Application Configuration page.
  • Rooms of the overlapping academic sessions must have the same permanent id.
    • This can be achieved, e.g., by rolling forward the rooms from one academic session to the next.
    • Or, the rooms must be created using the Add Room page (of the first academic session) using the Update Future Academic Sessions section (room is created in multiple academic sessions at once).

Automation

Queue Processor: Clustering

  • Added ability to display queue processes across the cluster.
    • Roll forward, data exchange, scripts, and PDF exam reports use queue processor at the moment.
  • A task is executed locally, but it shows on other nodes as well and the resultant file can be accessed from the other nodes too.

Scripts: Script API

  • Added script API (UniTime/api/script)
  • To execute script, use
    • GET/POST api/script?term=&script=<SCRIPT_NAME>
    • plus all the parameters of the script
    • use &queue=false to execute the script immediately (outside of the process queue)
    • when there is an input file, use POST with the file as the payload
    • For example:
    • The request returns the appropriate task (queue item) when queue=false is not used.
    • When queue=false is used, the request waits till the script is finished and returns the output file (if there is any) or the log (in the text format if there is no output file).
  • To retrieve all tasks (queue items) from the process queue, use GET without additional parameters, e.g.,
  • To check particular task (queue item), use id=<ITEM_ID>
  • To get text log of a particular task (queue item), use log=<ITEM_ID>
  • To get output file of a particular task (queue item), use output=<ITEM_ID>
  • To delete a particular task from the queue, use delete=<ITEM_ID>

Scripts: Parameter Defaults

  • Added ability to use subject area abbreviation, department code, building abbreviation or room names as defaults.
  • Added ability to provide multiple defaults (separated by a comma) when the list allows for multiple selection.

Scripts: Parameter Types

  • Added ability to use the parameters that are available in HQL Reports (e.g., use type ACCOMODATION for student accommodation).
  • Added slot format (using a time selector).
  • Added timestamp format (using combination of a single date selector and a time selector).

Task Scheduler

  • Added ability to schedule periodic executions of scripts.
  • Periodic tasks are academic session dependent, available under Administration > Academic Sessions > Task Scheduler.

Administration

Add/Edit Timetable Manager

  • Maximal length of the External ID field corrected (40 characters).

Staff Import / Lookup

  • Include campus code (academic initiative) in the Staff table.
  • Manage Instructor List: match campus code when it is set.
  • Add/Edit Instructor Lookup: include campus code in the Department column when the campus does not match the current session.

Student Group Types

  • Added ability to associate student groups with a type.
  • Additional properties can be set on a group type.

Data Exchange: Course Offering Import

  • When there is action="create-if-not-exists" on the offering element:
    • If the course already exists, do not update its offered/not-offered status, configurations, and exams (that is, only update courses and their title, schedule book note and credit information).
    • If the course does not exist, create the course with all its content.

HQL Reports

  • Added ability to provide additional parameters, just like in the scripts.
  • Each parameter has a name, a label, a type, and a default value.
  • These parameters could be strings, numbers, dates, enums, etc.
  • Use :name to inject the parameter value in the HQL (where name is the name of the parameter).
  • Added ability to filter by
    • student groups (STUDENT_GROUP or STUDENT_GROUPS)
    • student accommodations (ACCOMODATION or ACCOMODATIONS)
    • academic areas (ACADEMIC_AREA or ACADEMIC_AREAS)
    • majors (POS_MAJOR or POS_MAJORS)
  • Aadded %SESSIONS% parameter listing unique ids of available academic sessions.

Test HQL

  • Added ability to export table in CSV.
  • Improved table formatting: show return aliases (column names) when set, added pagination (when more lines than tmtbl.test_hql.max_line is returned).
  • Replace parameters like %SESSION% with the user's data.
  • Improved navigation: table is clickable when the first column has a unique id and is named _Class, __Offering, __Subpart, __Room, __Instructor, __Exam, or __Event.

UniTime API: Instructor Schedule

  • Added ability to export instructor preferences (when pref=1 in the request URL).
  • Added ability to export instructors with the matching external id across all academic session (when no session is selected, or all=1 in the request URL).

Data Exchange: Course Requests XML

  • Import: added ability to only add / drop certain requests of a student.
    • Use addCourseRequests and dropCourseRequests elements instead of updateCourseRequests.
    • These elements have the same format as updateCourseRequests.
  • Added export/import of section and instructional method preferences.

Other

Technology Update

  • GWT updated to version 2.8.2 (from 2.7.0)

Query Encoder: Illegal Block Size Fix

  • Use Base64 by default.
  • Fall back to base 36 big integers, but pad with sign bytes (0xff) when IllegalBlockSizeException is seen.
    • Using BigInteger to map bytes to strings is not ideal because of the sign bytes may get ignored, causing IllegalBlockSizeException during decoding.

Various iCalendar Exports: Custom VTimeZone Generator

Assets 3

@tomas-muller tomas-muller released this May 21, 2018 · 379 commits to dev_UniTime43 since this release

Event Management

Personal Schedule: Meeting Contacts

  • Include meetings where the user is filled in as a meeting contact in the personal schedule.

Rooms: Event Message

  • Do not copy event room note from the <event department, room type> pair over to the room when editing a room.

Events API: Resource Timetable

  • Added ability to lookup the subject, course, curriculum, department and student group by name (using name parameter).

Event Export: Personal Schedule Permissions

  • When exporting events of another person, the following permissions are used to filter the role:
    • Can Lookup Students is needed for the Student role (person is enrolled in a class, an exam, or a course related event as a student).
    • Can Lookup Instructors is needed for the Instructor and Coordinator roles (person is assigned to a class or an exam as an instructor or coordinator).
    • Can Lookup Event Contacts is needed for the Contact role (person is listed among contacts of the event).

Room Availability: Include Events From Other Academic Sessions

  • Course/Examination Timetabling: Added ability to include events (of the same type) from other academic sessions.
  • To enable this, set tmtbl.room.availability.includeOtherTerms to true on the Application Configuration page.
  • Rooms of the overlapping academic sessions must have the same permanent id.
    • This can be achieved, e.g., by rolling forward the rooms from one academic session to the next.
    • Or, the rooms must be created using the Add Room page (of the first academic session) using the Update Future Academic Sessions section (room is created in multiple academic sessions at once).

Event Detail: Enrollments

  • Conflicts: Make sure that cancelled class or examination meetings do not show up as conflicts in the Enrollments table.
  • Export CSV: Added ability to export the Enrollments table into a CSV file.

Course Timetabling

Room Sharing Grid, Instructor Availability Table

  • Corrected table splitting when more than 48 possible times are displayed horizontally.
  • Slightly increase cell width to make sure all cells are of the same width.

Room Sharing Grid: Add Department

  • Added ability to filter available departments by a given text (department code or name).

Date Pattern: Name

  • Date pattern name changed to fit 100 characters.
  • This is to avoid a Hibernate exception when a longer name is entered on the Add/Edit Date Pattern page (the name text field already allows for up to 100 characters).

Timetable Grid

  • Export PDF: Print one table per each day of week when in the "In Row [horizontal]" mode (instead showing one table very wide table with all the days of the week inside).
  • Show Course Title: It is now possible to show course titles on the timetable grid.
    • There is a new toggle in the Filter named Show Course Titles.
  • Split Class Name: Added ability to split class label into two lines.
    • Subject and course number on the first line,
    • itype and section number (and the optional suffix and/or configuration name) on the second line.
    • Enable by setting the application property unitime.timeGrid.classNameTwoLines to true (defaults to false).

Instructional Offering Detail: Enrollments Table

  • Allow schedule managers from non-controlling departments to see the enrollments.

Instructional Offering Cross Lists: Keep Course Requests

  • Added an ability to keep course requests on the course that is added to or dropped from a cross-list.
    • Enable this feature by setting unitime.crossList.keepCourseRequests to true (default is false).

Examination Timetabling

Examination Distribution Preferences: HQL Fix

  • Fixed a query syntax exception when Subject is set to All, but a Course Number is filled in.

Online Student Scheduling

Generic Updater: Check For Multiple Masters

  • If multiple masters are detected, release all master locks and reload the new master.

Student Scheduling Assistant

  • List of Classes: do not include course note in the section note.
  • Course Suggestions: when showing individual classes include subpart and section note in the hint.
  • Filter Box: limit the height of the suggestions / filter popup when on mobile (allow for vertical scroll).
  • Alternatives: allow for the Alternatives dialog to be wider if needed (up to 90% of viewport width).

Course Reservations

  • Corrected checking whether a student is meeting course reservation (using the requested course, not stored course requests).

No Alternate Course Requests

  • Added an ability to hide Alternate Course Requests table (unless the student has some alternatives already).
  • To do this, set the StudentSectioningConstants.numberOfAlternatives constant to zero.

Email Notification

  • Added ability to use the CourseUrlProvider to make the Subject and Course clickable.
  • When the unitime.custom.CourseUrlProvider application property is configured.

Administration

Scripts: Send email when finished

  • Added ability for a script to send an email (including the log and the generated file if there is any) when it is finished.
  • If there is an error, include stack trace in the log.

Add/Edit Timetable Manager

  • Maximal length of the External ID field corrected (40 characters).

Session Roll Forward: Instructor Attributes

  • Fixed TransientObjectException when rolling instructor attributes (with parent-child relation) forward.

HQL Reports: SESSIONS

  • Added %SESSIONS% parameter listing unique IDs of available academic sessions.
  • These are academic sessions for which the user has the current role.

Data Exchange: Course Requests XML Import

  • Added ability to only add / drop certain requests of a student.
  • Use the new addCourseRequests and dropCourseRequests elements instead of the updateCourseRequests element.
    • These elements have the same format as the updateCourseRequests element.

OpenStreetMap

  • Added ability to switch to OpenStreetMap (using Leaflet library, https://leafletjs.com).
  • Set unitime.coordinates.googlemap to false, unitime.coordinates.leafletmap to true.
  • Map tiles template URL and attribution can be changed (defaults to OpenStreetMap tiles).
  • See http://help.unitime.org/OpenStreetMap for more details.

Constraint Solver (1.3.124)

Course Timetabling: Max Half-Days Constraint

  • The MaxHalfDays constraint limits the number of half-days of week during which the given set of classes are taught.
  • It has one parameter: a maximal number of week half-days during which the given set of classes can be placed.
  • A day is split by noon (which can be changed using General.HalfDaySlot parameter).
  • A class starting before noon is considered a morning class (despite of its end), a class starting at noon or later is considered an afternoon class.
  • For instance, a reference MaxHalfDays:4 translates to a maximum number of 4 half-days a week.

Course Timetabling: added MaxHoles distribution constraint

  • The MaxHoles constraint limits the number of free time (holes) for an instructor on a day (between the first and the last class on a day).
  • It has one parameter: a maximal amount of free time that an instructor can have on a day in minutes.
  • For example, reference MaxHoles:120 translates to a maximum number of two hours of total free time between the first and the last class on a day:
    • if required, having more free time is prohibited
    • if preferred or strongly preferred, the excessive free time is penalized

Course Timetabling: Student Conflicts

  • Added a naive, yet effective approach for minimizing holes in student schedule.
    • The new StudentMinimizeScheduleHoles criterion penalizes all cases where a student has two classes taught on the same day that are not back-to-back.
    • The penalization is based on the time distance between the two classes, computed in hours.
    • These penalties are weighted by Comparator.MinimizeStudentScheduleHolesWeight, which defaults to 1/20 of the Comparator.StudentConflictWeight.
    • To enable this criterion, add org.cpsolver.coursett.criteria.additional.StudentMinimizeScheduleHoles to General.AdditionalCriteria.
  • Added a naive, yet effective approach for minimizing number of days in student schedule.
    • The new StudentMinimizeDaysOfWeek criterion penalizes all cases where a student has two classes taught on different days.
    • These penalties are weighted by Comparator.MinimizeStudentScheduleDaysWeight, which defaults to 1/20 of the Comparator.StudentConflictWeight.
    • To enable this criterion, add org.cpsolver.coursett.criteria.additional.StudentMinimizeDaysOfWeek to General.AdditionalCriteria.
  • As the StudentMinimizeScheduleHoles criterion tends to spread the student among as many days as possible, the second criterion StudentMinimizeDaysOfWeek can be used to counteract this effect, if desired.

Course Timetabling: Week Start/End

  • Added ability to define when a work week starts (General.FirstWorkDay) and when it ends (General.LastWorkDay).
  • It is possible that General.LastWorkDay < General.FirstWorkDay, e.g., General.FirstWorkDay = 6 (Sunday) and General.LastWorkDay = 3 (Thursday).
  • Corrected behavior of various constraints for the case when week starts on Sunday (PRECEDENCE, BTB_DAY, NDB_GT_1, FOLLOWING_DAY, SPREAD, MIN_ROOM_USE, and a few other places).

Examination Timetabling: Period Preferences

  • Added additional information about how well are the period preferences satisfied into the solution extended info (showing how many time a preferred, a strongly preferred, etc. period is selected for an exam).

Examination Timetabling: Room Split Penalty

  • Increased the limit on the maximal number of rooms that an exam can take to 30.

Examination Timetabling: Save XML

  • Corrected examination period penalty value.

Examination Timetabling: Criteria

  • Changed the value update type to after unassigned after assigned.
  • This corrects the direct conflict computations when a student is assigned to three or more exams on a day.
  • This corrects the more than two exams on a day computation when a student is assigned to four or more exams on a day.

Student Scheduling: Scheduling Assistant Weights

  • Corrected precision on the selected choices criterion as the result is a % of the selected classes.
  • Put selected sections higher in the list.
  • Minimize class penalties: divide penalty by the number of sections (counting average section penalty of the enrollment).
    • This is to avoid penalization of enrollments with more/fewer sections.
  • Prefer sections that are available (there is space in them).
    • This is especially useful when a student has an individual reservation that is not given for a particular section (student is allowed to pick any section).

Student Scheduling: Student Conflict Constraint

  • Checking whether a student already has a complete schedule corrected.
    • If the request is over the limit (student already has a complete schedule), do not return a free time or a wait-listed course request as a conflict.
  • Ensure that completeness of a student schedule is properly checked during the assignment.
    • Using Student.canAssign(request) does not work as it returns true when the request is already assigned and the conflicts are checked when Constraint.assigned(value) is called.
    • This was causing troubles for the IFS phase.
Assets 3

@tomas-muller tomas-muller released this May 16, 2018 · 82 commits to dev_UniTime43 since this release

Course Timetabling

GWT

  • Remaining pages rewritten using the Google Web Toolkit.
  • These include Suggestions, Timetables, Solver Reports, Conflict Statistics, Changes, and History.

Time Patterns: First Day Of Week

  • Added ability to change the first day of week for time patterns.
  • Using unitime.timePattern.firstDayOfWeek application property (0 is Monday, 1 is Tuesday, etc.).

Timetable Grid

  • Added ability to show course titles on the timetable grid (there is a new toggle in the Filter named Show Course Titles).
  • Added ability to split class label into two lines (enable by setting the application property unitime.timeGrid.classNameTwoLines to true, defaults to false).
  • Export XLS: added ability to export the timetable grid to Excel Spreadsheet (XLS format).
  • Export PDF: show one table per each day of week when in the "In Row [horizontal]" mode (instead showing one table very wide table with all the days of the week inside).

Instructional Offering Cross Lists: Keep Course Requests

  • Added an ablitity to keep course requests on the course that is added to or dropped from a cross-list.
  • Enable this feature by setting unitime.crossList.keepCourseRequests to true (default is false).

Class Assignment: Solution Conflicts

  • Added ability to use solution conflicts instead of the real student class enrollments when there are no real enrollments yet.

Online Student Scheduling

Special Registration

  • The following work has been done to support special registration at Purdue.
  • Enable special registration in Scheduling Assistant by implementing the custom special registration provider class.
  • In the special registration mode, a student may be allowed to pick a section that is not available, conflicting with some other section that the student has, or reserved for some other students.
  • Added ability to show Submit Special Registration when Submit Schedule button is not available.
  • Added ability to select the current academic session using URL parameters term and campus (these may include external term and campus names, if unitime.custom.ExternalTermProvider is configured).

Course Requests Validation

  • The following work has been done to support course requests at Purdue.
  • Added ability to validate course requests and to provide errors and warnings back to the student.
  • These include student's eligibility to register, credit checking, providing alternatives, time conflicts of single section courses, etc.

Scheduling Dashboard

  • Include distance conflicts and time overlaps in the dashboard.
  • Enrollments table: show only primary requests in the Not-Enrolled column; show alternative requests in the (newly added) Alternative column.
  • Students table: show both Enrollment Credit and Request Credit columns.
  • Students table: added time overlaps, distance conflicts, and satisfaction of section and instructional method preferences.
  • Filter: added ability to filter by the number of credits and time overlaps.
  • Filter: added My Students mode showing only students associated with the current advisor role.
  • When a student is clicked, also include course requests and time grid in the view (Classes for student dialog).
    • There are now three tabs: Course Requests, List of Classes, and Time Grid.
  • Added ability for advisors to assign students to student groups and student statuses.
  • Added More button combining the operations of the individual columns of the table displayed.
  • Enrollment Credit: added ability to show credit information related to particular Instructional Mode.
    • For instance, when a student has 18 credit hours, 6 of which are online, the column will show 18 (online: 6)
    • Added ability to filter students by IM credit or by credit hours that are not associated with any instructional method.
  • Show more details about the selected status when using the Set student note... dialog.
  • Change Log: show course requests in a table, including selected sections and instructional method.
  • Added ability to see the change log even when the online scheduling server is not running.

Student Advisors

  • Created student advisors table (named advisor) and a many to many relation between advisors and students.
  • Added XML import and export.
  • Added Administration > Academic Sessions > Student Advisors page.
  • Authentication can use the advisor table (to associate the authenticated user with an advisor role).
  • Added a few new permissions related to
    • whether it is allowed to edit his/her students (Student Scheduling Advisor Can Modify My Students) or all students (Student Scheduling Advisor Can Modify All Students)
    • whether it is allowed to change status (Student Scheduling Change Student Status) or student group association (Student Scheduling Change Student Group)

Student Course Requests

  • Show total credit range on the Student Course Requests page, assuming that the student will be able to get a complete schedule.
  • Degree Plan: when updating course requests with a degree plan, do not remove course requests that cannot be deleted (student is already enrolled in the course).
    • Also, include alternatives from choice groups.
  • Automatically open 1st alternative when a course is entered in the Course Requests table.
  • When course requests are successfully submitted, a confirmation dialog is displayed. If agreed, a print dialog is opened with a printer-friendly version of the course requests table.
  • Added course request and credit status icons (when supported by the custom course request validation).
  • Added ability to open the Course Finder (in a read-only mode) for course requests that cannot be changed.
  • Added ability to hide Alternate Course Requests table (unless the student has some alternatives already, set StudentSectioningConstants.numberOfAlternatives to zero).

Student Scheduling Status

  • Registration statuses made more granular:
    • Assistant: formerly Access, only applies to the Scheduling Assistant
    • Student Enroll: renamed, formerly Enrollment
    • Advisor Enroll: formerly Advisor, only applies to the Scheduling Assistant
    • Admin Enroll: formerly Advisor, only applies to the Scheduling Assistant
    • Registration: Course Requests page is available (instead of using Access)
    • Student Register: renamed, formerly Registration (student can save requests)
    • Advisor Register: new status, advisor can save requests
    • Admin Register: new status, admin can save requests
  • Added a flag on whether the advisor can set this status.
  • Added effective dates and times, and a fall-back status (when outside of the effective period).

Disabled Sections

  • Added ability to allow some students to enroll into sections that are marked as not enabled for student scheduling.
  • Student must have a student group reservation for a student group of a type that allows for disabled sections (with a reservation).
  • Student must be of a student group that is of a type that allows for disabled sections (whithout a reservation).

Student Scheduling Entry Page

  • Added an entry page UniTime/studentScheduling.do
  • Admins and advisors are redirected to the Online Student Scheduling Dashboard (advisors with students will have mode:"My Students" selected).
  • Students are redirected (first match in this order):
      1. Scheduling Assistant page when enrollment is enabled
      1. Course Requests page when registration is enabled
      1. Scheduling Assistant page when access is enabled
      1. Course Requests page when registration is enabled
  • When there is no mach, the main page is opened.
  • Term, campus, and session parameters can be used to select the academic session.
  • Other parameters are passed on to the target page.

Constraint Solver

Course Timetabling: Max Half-Days Constraint

  • The MaxHalfDays constraint limits the number of half-days of week during which the given set of classes are taught.
  • It has one parameter: a maximal number of week half-days during which the given set of classes can be placed.
  • A day is split by noon (which can be changed using General.HalfDaySlot parameter).
  • A class starting before noon is considered a morning class (despite of its end), a class starting at noon or later is considered an afternoon class.
  • For instance, a reference MaxHalfDays:4 translates to a maximum number of 4 half-days a week.

Course Timetabling: added MaxHoles distribution constraint

  • The MaxHoles constraint limits the number of free time (holes) for an instructor on a day (between the first and the last class on a day).
  • It has one parameter: a maximal amount of free time that an instructor can have on a day in minutes.
  • For example, reference MaxHoles:120 translates to a maximum number of two hours of total free time between the first and the last class on a day:
    • if required, having more free time is prohibited
    • if preferred or strongly preferred, the excessive free time is penalized

Course Timetabling: Student Conflicts

  • Added a naive, yet effective approach for minimizing holes in student schedule.
    • The new StudentMinimizeScheduleHoles criterion penalizes all cases where a student has two classes taught on the same day that are not back-to-back.
    • The penalization is based on the time distance between the two classes, computed in hours.
    • These penalties are weighted by Comparator.MinimizeStudentScheduleHolesWeight, which defaults to 1/20 of the Comparator.StudentConflictWeight.
    • To enable this criterion, add org.cpsolver.coursett.criteria.additional.StudentMinimizeScheduleHoles to General.AdditionalCriteria.
  • Added a naive, yet effective approach for minimizing number of days in student schedule.
    • The new StudentMinimizeDaysOfWeek criterion penalizes all cases where a student has two classes taught on different days.
    • These penalties are weighted by Comparator.MinimizeStudentScheduleDaysWeight, which defaults to 1/20 of the Comparator.StudentConflictWeight.
    • To enable this criterion, add org.cpsolver.coursett.criteria.additional.StudentMinimizeDaysOfWeek to General.AdditionalCriteria.
  • As the StudentMinimizeScheduleHoles criterion tends to spread the student among as many days as possible, the second criterion StudentMinimizeDaysOfWeek can be used to counteract this effect, if desired.

Course Timetabling: Week Start/End

  • Added ability to define when a work week starts (General.FirstWorkDay) and when it ends (General.LastWorkDay).
  • It is possible that General.LastWorkDay < General.FirstWorkDay, e.g., General.FirstWorkDay = 6 (Sunday) and General.LastWorkDay = 3 (Thursday).
  • Corrected behavior of various constraints for the case when week starts on Sunday (PRECEDENCE, BTB_DAY, NDB_GT_1, FOLLOWING_DAY, SPREAD, MIN_ROOM_USE, and a few other places).

Course Timetabling: Work-Day Student Conflicts

  • Added work-day student conflicts
    • There is a work-day conflict when the time between the start of the first class and the end of the last class on a day is too long (e.g., more than 8 hours).
    • Solver parameter StudentConflict.WorkDayLimit defines the number of slots of a work-day (default is -1, work-day conflicts are disabled).

Course Timetabling: Automatic Instructor Constraints

  • Added ability to define distribution preferences that would be applied automatically to all instructors.
    • Using General.AutomaticInstructorConstraints solver parameter, containing a comma separated list of .
    • For example: General.AutomaticInstructorConstraints=Required At Most 5 Hrs, Required 6h Work-Day, Strongly Preferred 5h Work-Day
  • An automatic instructor distribution preference is only applied to instructors that do not have a preference of the same type already.
    • For instance, a Required At Most 5 Hrs will not be applied on an instructor that has a different At Most N Hrs preference already.

Course Timetabling: Instructor Distribution Preferences

  • Added ability to include all classes of an instructor (not just those that are of the same department) in the instructor's distributions.
    • Set solver parameter General.ApplyInstructorDistributionsAcrossAllDepartments to true (defaults to false).

Course Timetabling: Individual Reservations

  • Added checking for individual reservations (only useful when course requests are used as student course demand).

Examination Timetabling: Period Preferences

  • Added additional information about how well are the period preferences satisfied into the solution extended info (showing how many time a preferred, a strongly preferred, etc. period is selected for an exam).

Examination Timetabling: Room Split Penalty

  • Increased the limit on the maximal number of rooms that an exam can take to 30.

Examination Timetabling: Save XML

  • Corrected examination period penalty value.

Student Scheduling: Scheduling Assistant Weights

  • Corrected precision on the selected choices criterion as the result is a % of the selected classes.
  • Put selected sections higher in the list.
  • Minimize class penalties: divide penalty by the number of sections (counting average section penalty of the enrollment).
    • This is to avoid penalization of enrollments with more/fewer sections.
  • Prefer sections that are available (there is space in them).
    • This is especially useful when a student has an individual reservation that is not given for a particular section (student is allowed to pick any section).

Student Scheduling: Student Conflict Constraint

  • Checking whether a student already has a complete schedule corrected.
    • If the request is over the limit (student already has a complete schedule), do not return a free time or a wait-listed course request as a conflict.
  • Ensure that completeness of a student schedule is properly checked during the assignment.
    • Using Student.canAssign(request) does not work as it returns true when the request is already assigned and the conflicts are checked when Constraint.assigned(value) is called.
    • This was causing troubles for the IFS phase.

Student Scheduling: Short Distance Conflicts

  • Added ability to consider Short Distances student accommodation.
  • When a student needs short distances, there is a distance conflict between two back-to-back classes if the distance in minutes is greater than zero.
  • The reference of the accommodation for students that need short distances is defined by solver property Distances.ShortDistanceAccommodationReference (defaults to SD).

Student Scheduling: Disabled Sections

  • Added ability to mark certain sections as disabled.
  • Such sections cannot be used, unless the student allows for disabled sections, or there is a (group) reservation that allows for disabled sections.

Event Management

Events: Time Grid

  • Added ability to define first day of week, using unitime.events.gridStartDay application property (0 is Monday, 1 is Tuesday, etc.).

Room Availability: Include Events From Other Academic Sessions

  • Course/Examination Timetabling: Added ability to include events (of the same type) from other academic sessions.
  • To enable this, set tmtbl.room.availability.includeOtherTerms to true on the Application Configuration page.
  • Rooms of the overlapping academic sessions must have the same permanent id.
    • This can be achieved, e.g., by rolling forward the rooms from one academic session to the next.
    • Or, the rooms must be created using the Add Room page (of the first academic session) using the Update Future Academic Sessions section (room is created in multiple academic sessions at once).

Automation

Queue Processor: Clustering

  • Added ability to display queue processes across the cluster.
    • Roll forward, data exchange, scripts, and PDF exam reports use queue processor at the moment.
  • A task is executed locally, but it shows on other nodes as well and the resultant file can be accessed from the other nodes too.

Scripts: Script API

  • Added script API (UniTime/api/script)
  • To execute script, use
    • GET/POST api/script?term=&script=<SCRIPT_NAME>
    • plus all the parameters of the script
    • use &queue=false to execute the script immediately (outside of the process queue)
    • when there is an input file, use POST with the file as the payload
    • For example:
    • The request returns the appropriate task (queue item) when queue=false is not used.
    • When queue=false is used, the request waits till the script is finished and returns the output file (if there is any) or the log (in the text format if there is no output file).
  • To retrieve all tasks (queue items) from the process queue, use GET without additional parameters, e.g.,
  • To check particular task (queue item), use id=<ITEM_ID>
  • To get text log of a particular task (queue item), use log=<ITEM_ID>
  • To get output file of a particular task (queue item), use output=<ITEM_ID>
  • To delete a particular task from the queue, use delete=<ITEM_ID>

Scripts: Parameter Defaults

  • Added ability to use subject area abbreviation, department code, building abbreviation or room names as defaults.
  • Added ability to provide multiple defaults (separated by a comma) when the list allows for multiple selection.

Scripts: Parameter Types

  • Added ability to use the parameters that are available in HQL Reports (e.g., use type ACCOMODATION for student accommodation).
  • Added slot format (using a time selector).
  • Added timestamp format (using combination of a single date selector and a time selector).

Administration

Add/Edit Timetable Manager

  • Maximal length of the External ID field corrected (40 characters).

Staff Import / Lookup

  • Include campus code (academic initiative) in the Staff table.
  • Manage Instructor List: match campus code when it is set.
  • Add/Edit Instructor Lookup: include campus code in the Department column when the campus does not match the current session.

Student Group Types

  • Added ability to associate student groups with a type.
  • Additional properties can be set on a group type.

Data Exchange: Course Offering Import

  • When there is action="create-if-not-exists" on the offering element:
    • If the course already exists, do not update its offered/not-offered status, configurations, and exams (that is, only update courses and their title, schedule book note and credit information).
    • If the course does not exist, create the course with all its content.

HQL Reports

  • Added ability to provide additional parameters, just like in the scripts.
  • Each parameter has a name, a label, a type, and a default value.
  • These parameters could be strings, numbers, dates, enums, etc.
  • Use :name to inject the parameter value in the HQL (where name is the name of the parameter).
  • Added ability to filter by
    • student groups (STUDENT_GROUP or STUDENT_GROUPS)
    • student accommodations (ACCOMODATION or ACCOMODATIONS)
    • academic areas (ACADEMIC_AREA or ACADEMIC_AREAS)
    • majors (POS_MAJOR or POS_MAJORS)
  • Aadded %SESSIONS% parameter listing unique ids of available academic sessions.

Test HQL

  • Added ability to export table in CSV.
  • Improved table formatting: show return aliases (column names) when set, added pagination (when more lines than tmtbl.test_hql.max_line is returned).
  • Replace parameters like %SESSION% with the user's data.
  • Improved navigation: table is clickable when the first column has a unique id and is named _Class, __Offering, __Subpart, __Room, __Instructor, __Exam, or __Event.

UniTime API: Instructor Schedule

  • Added ability to export instructor preferences (when pref=1 in the request URL).
  • Added ability to export instructors with the matching external id across all academic session (when no session is selected, or all=1 in the request URL).

Data Exchange: Course Requests XML

  • Import: added ability to only add / drop certain requests of a student.
    • Use addCourseRequests and dropCourseRequests elements instead of updateCourseRequests.
    • These elements have the same format as updateCourseRequests.
  • Added export/import of section and instructional method preferences.

Other

Technology Update

  • GWT updated to version 2.8.2 (from 2.7.0)

Query Encoder: Illegal Block Size Fix

  • Use Base64 by default.
  • Fall back to base 36 big integers, but pad with sign bytes (0xff) when IllegalBlockSizeException is seen.
    • Using BigInteger to map bytes to strings is not ideal because of the sign bytes may get ignored, causing IllegalBlockSizeException during decoding.

Various iCalendar Exports: Custom VTimeZone Generator

Assets 3
You can’t perform that action at this time.