UniTime Changelog

What's new in UniTime 4.0 Build 17

May 19, 2015
  • BUG FIXES:
  • Data Exchange: Session Restore
  • Avoid conversion of a binary object to utf-8 and back.
  • Student Scheduling Assistant: Authentication
  • When authentication is required but the user login dialog is not allowed: fixed the case when the Login page was not loaded at times.
  • Course Timetabling: Ignore Room Check
  • Improved handing of locations that have the ignore room check toggle set:
  • No overlaps are checked in such locations during commit.
  • No committed placements (of other problems) nor other approved events are loaded as unavailabilities for such locations (ignore room check location is always available).
  • UniTime Registration
  • Main page: fixed the ability to register the UniTime instance.

New in UniTime 4.0 Build 12 (Apr 20, 2015)

  • BUG FIXES:
  • Online Student Scheduling Server
  • Get course by name or by name and title: fix the case when there is a dash in the subject area abbreviation or a course number.
  • Improved handling of the case when a student is enrolled into the same offering multiple times, under different course names.
  • Course Timetabling: Database Load
  • Ensure that an instructor distribution preference is loaded in only once when the following two conditions are met:
  • a) inherited instructor preferences is enabled on an external department,
  • b) both the external department and the instructor's department are being loaded in.
  • Data Exchange: Session Restore
  • Fixed ability to import a new instructional type (id was not set).
  • OTHER IMPROVEMENTS:
  • Online Student Scheduling: Eligibility Check
  • When there is no student record matching with the external id of the authenticated user:
  • "You are not registered as a student in {0}." message changed to "You are not eligible to register in {0}.".
  • Do not display the message when in the assistant mode (enrollment is not enabled).
  • Solution Reports: Violated Distribution Preferences
  • Added a column counting the number of violations (violated pairs).
  • Include flexible group constraints in the list.
  • Suggestions: Flexible Constraints
  • Include flexible group constraints in the Distribution Preferences counters.
  • Include flexible group constraints on the Violated Constraints list.
  • Batch Student Sectioning: Database Loader
  • Minimal Perturbation Problem: Add current class assignments as selected choices.
  • This helps keeping students close to their original enrolment when the original enrolment is not in the domain.
  • Added ability to load student groups as request groups.
  • Request groups are loaded in only when the solver paramter Load.RequestGroups is set to true, default is false.
  • Solver parameter StudentWeights.SameGroup (defaults to 0.1) can be used to change the impact of the same group criterion.
  • Request Groups solver report has been also added.
  • Localization
  • Added ability to let users to choose the locale by defining the unitime.locale manager settings.
  • HQL Reports: Reference Tables
  • Added ability to include any reference table (room type, distribution type, etc.) as query parameter.
  • Scripts: Import / Export XML
  • Added ability to export a script in XML format.
  • Added ability to import XML with one ore more scripts.
  • Events: Standard Notes
  • Added Select button when selecting a standard note (both Standard Notes dialog and Approval dialog).
  • This fixes the issue of not being able to select a standard note on a mobile device (due to the inability to double click).
  • CAS Authentication
  • Added ability to always translate the returned external user id by setting unitime.authentication.cas.id-translate to true (defaults to false).
  • Added ability to lookup multiple attributes in the CAS ticket (the unitime.authentication.cas.id-translate can contain a comma separated list of attributes).
  • Each attribute may or may not be translated (the unitime.authentication.cas.id-translate can contain a comma separated list of true and false values, one for each attribute).
  • External User Id Translation
  • Added ability to translate user names (as returned by the authentication) to the external user ids that are used by UniTime.
  • Configuration (default SQLs are using the users table):
  • # Enable custom SQL user id translation
  • tmtbl.externalUid.translation=org.unitime.timetable.spring.security.CustomSQLExternalUidTran slation
  • # SQL query converting user name to external user id
  • unitime.custom.sql.uid2ext=select external_uid from %SCHEMA%.users where username = ?
  • # SQL query converting external user id to user name
  • unitime.custom.sql.ext2uid=select username from %SCHEMA%.users where external_uid = ?
  • Events: Course Title
  • Time Grid: Added ability to display course title in the header of an event in the time grid.
  • This only happens when the application property unitime.events.grid_display_title is set to true (defaults to false, current behaviour).
  • Only applies to class events (course related events and examination events can relate to multiple courses and can have multiple titles with ambiguous choice which one to display).
  • When multiple course title exists, only the first one is displayed (e.g., in the case of a cross-list, it should be the title of the controlling course).
  • Format: course title (instruction section)
  • Example: Fundamentals of Biology II (Laboratory 12038-042)
  • Events: ICS Export
  • When the grid display title is enabled (see above), course title is used as event name (summary field).
  • Added ability to include instructor names in the description of an event.
  • Tis only happens when the application property unitime.events.ics_instructors_in_description is set to true (defaults to false, current behaviour). CPSolver updated to version 1.3.52 (was 1.3.47)
  • Student Sectioning: Minimal Perturbation Problem
  • Priority and equal weighting: added ability to minimise perturbations.
  • Difference of an enrollment (from the initial one) is computed as a number between 0 (completely different) and 1 (the initial enrollment).
  • It is computed as average using the following schema (over all sections of the enrollment):
  • An initial section counts as 1,
  • same choice section counts as 0.9 (parameter StudentWeights.SameChoice),
  • same time section counts as 0.7 (parameter StudentWeights.SameTime),
  • and different time section counts as 0.
  • Non-initial enrollment weight is penalized with weight StudentWeights.Perturbation (defaults to 0.100) using the following formula
  • weights *= (1
  • difference * StudentWeights.Perturbation)
  • When MPP is enabled, solution info contains the following three new properties:
  • Perturbations: same section assigned (% of initial section assigned over all course requests with initial enrollment)
  • Perturbations: same choice assigned (% of same choice section assigned over all course requests with initial enrollment)
  • Perturbations: same time assigned (% of same time section assigned over all course requests with initial enrollment)
  • Note: same choice means same time and instructor.
  • Student Sectioning: Reservations
  • If reservations are allowed to assign students over the limit during the batch student sectioning, do not count the enrollments with such reservations towards course, configuration, and section limits.
  • This is to avoid issues with the order in which enrollemnts were made.
  • Student Sectioning: Parallel Solver
  • Course, Config, Section, and Reservation contexts now implement the CanInheritContext interface.
  • This speeds up the creation of an inherited context.
  • Batch Student Sectioning: Request Groups
  • Added ability to keep students of the same group together.
  • Measured as an average probability of two students (of a group) that are requesting the same course being given the same section (of the same subpart).
  • There is a new weight (named StudentWeights.SameGroup, defaults to 0.1) expressing how much this criterion affects the student weight (in both priority and equal weighting).
  • This means that if a student is being enrolled into a completely different section, weight of such an enrollment is decreased by 10%.
  • (the metric reflects how much are the students spread between the sections of the course)
  • Course Timetabling: Added MaxDays Flexible Constraint
  • The MaxDays constraint limits the number of days of week during which the given set of classes are taught.
  • It has one parameters: a maximal number of week days during which the given set of classes can be placed.
  • For instance, reference _MaxDays:2_ translates to a maximum number of 2 days a week.

New in UniTime 4.0 Build 2 (Mar 26, 2015)

  • Organizational Changes:
  • The Apereo Foundation
  • This is the first release under the Apereo Foundation.
  • License was changed to the Apache Software License (ASL), Version 2.0.
  • This release has the same features as UniTime 3.5 build 209.

New in UniTime 3.5 Build 210 (Mar 3, 2015)

  • Bug Fixes:
  • Session Roll Forward:
  • Distribution Preferences:
  • fixed rolling forward of distribution preferences when an academic session is rolled forward multiple times.
  • There can be multiple distribution preferences with the same value of the uniqueIdRolledForwardFrom attribute, one for each target academic session.
  • Examination Timetabling:
  • Load Availabilities:
  • ignore class event meetings that are cancelled.
  • Event Management:
  • Course Related Events: class selection corrected when trying to select a class that has a parent class.
  • Only top level classes showed up in the Class Number drop down.
  • iCalendar Export: fixed SEQUENCE and DTSTAMP attributes in the iCalendar feed.
  • This change fixes the issue of DTSTAMP being blank in certain cases (and violating the RFC 5545).
  • Online Student Scheduling:
  • Online Scheduling Reports: fixed null exception thrown when there is a student with free time request.
  • Course Timetabling:
  • Database Save: Fixed SuspectedException thrown during save of the conflict statistics under certain condition.
  • If run in a cluster, the remembered address of the web-server gets invalid when the web-server is restarted.
  • Group Constraint: Fixed an exception that can be thrown during the purge invalid placement phase because of a hard back-to-back constraint.
  • Rooms:
  • Edit Room Groups / Features (accessible from the Room Detail page): fixed the problem of removing the last departmental room feature or group.
  • It was not possible to remove the last departmental room feature or room group using this page because the relation between the feature / group and the location was not updated on both sides in this particular case.
  • The other page (Edit Room Feature / Group) did not have the problem.
  • Other Improvements:
  • Suggestions:
  • When a placement that conflicts with itself is selected, display the selected assignments and the conflict table, but no Assign button.
  • This is to give the user more information on why the selected assignment cannot be used.
  • CAS Authentication:
  • Added ability to provide user external id and full name from the CAS response attributes.
  • Event Management
  • Email Confirmation: Added ability to CC event managers in the confirmation email.
  • This is only enabled when the unitime.email.event.managers application property is set to true (default is false).
  • If set to true, all timetable managers that are associated with the event department of a room in the event and which have an event management role (that is a role with Event Lookup Contact permission) with the receive emails toggle checked are carbon copied on the event confirmation email.
  • Data Entry:
  • Classes, Instructional Offerings: Added ability to highlight preferences that are set directly on classes.
  • Preferences that are set directly on classes have light yellow background.
  • This is only enabled when the unitime.preferences.highlightClassPrefs property is set to true (default is false).
  • Preference owner (class, scheduling subpart, instructor, etc.) is also mentioned in the preference tooltip (this feature is always on).
  • Multiple Class Setup: Added ability to edit class sufixes (labeled as External Ids in the user interface).
  • This is only enabled when the tmtbl.class_setup.edit_external_ids property is set to true (default is false).
  • Examination Timetabling
  • PDF Reports: Added compact mode for the period chart.
  • No section information is printed, but the page fits up to 6 columns instead of just 4.

New in UniTime 3.5 Build 196 (Jan 26, 2015)

  • BUG FIXES:
  • SESSION ROLL FORWARD:
  • Distribution Preferences: fixed rolling forward of distribution preferences when an academic session is rolled forward multiple times.
  • There can be multiple distribution preferences with the same value of the uniqueIdRolledForwardFrom attribute, one for each target academic session.
  • EXAMINATION TIMETABLING:
  • Load Availabilities: ignore class event meetings that are cancelled.
  • EVENT MANAGEMENT:
  • Course Related Events: class selection corrected when trying to select a class that has a parent class.
  • Only top level classes showed up in the Class Number drop down.
  • iCalendar Export: fixed SEQUENCE and DTSTAMP attributes in the iCalendar feed.
  • This change fixes the issue of DTSTAMP being blank in certain cases (and violating the RFC 5545).
  • ONLINE STUDENT SCHEDULING:
  • Online Scheduling Reports: fixed null exception thrown when there is a student with free time request. Other Improvements
  • SUGGESTIONS:
  • When a placement that conflicts with itself is selected, display the selected assignments and the conflict table, but no Assign button.
  • This is to give the user more information on why the selected assignment cannot be used.
  • CAS AUTHENTICATION:
  • Added ability to provide user external id and full name from the CAS response attributes.
  • EVENT MANAGEMENT:
  • Email Confirmation: Added ability to CC event managers in the confirmation email.
  • This is only enabled when the unitime.email.event.managers application property is set to true (default is false).
  • If set to true, all timetable managers that are associated with the event department of a room in the event and which have an event management role (that is a role with Event Lookup Contact permission) with the receive emails toggle checked are carbon copied on the event confirmation email.
  • DATA ENTRY:
  • Classes, Instructional Offerings: Added ability to highlight preferences that are set directly on classes.
  • Preferences that are set directly on classes have light yellow background.
  • This is only enabled when the unitime.preferences.highlightClassPrefs property is set to true (default is false).
  • Preference owner (class, scheduling subpart, instructor, etc.) is also mentioned in the preference tooltip (this feature is always on).

New in UniTime 3.5 Build 187 (Dec 29, 2014)

  • TECHNOLOGY UPDATE:
  • CLUSTERING:
  • Improved ability for UniTime to run in a cluster.
  • Remote solver servers connect to each other and the web server(s) using JGroups.
  • Hibernate L2 cache is now replicated across the cluster.
  • However, L2 cache is disabled when Hibernate is used outside of Tomcat (e.g., on a remote solver server).
  • Clustering can be disabled by setting application properties unitime.hibernate.cluster (Hibernate L2 cache) and unitime.solver.cluster (remove solver servers) to false.
  • Online student scheduling server can now run on multiple machines at once, with the data asynchronously replicated (using infinispan) and one machine being the master (responsible for all the updates).
  • To enable replication, set unitime.enrollment.server.replicated to true.
  • CONSTRAINT SOLVER:
  • Using the latest version of CPSolver 1.3
  • This update contains a new assignment model and multi-core capabilities.
  • Mobile
  • A few initial steps have been made towards a frendlier version of UniTime pages on mobile (tables or phone) devices.
  • Mobile page layout is using less tables, and there is a new menu. Student Scheduling
  • OVER-EXPECTED CRITERION:
  • Added ability to provide a custom criterion that decides whether a class is over-expected or not.
  • Default implementation now falls back to section balancing when there are no expectations.
  • I.e., students can be only allowed into sections that are (or will become) dis-balanced by more than 10% if there are no other sections meeting their schedule.
  • STUDENT SCHEDULING REPORTS:
  • Added an interface that is implemented by all the reports.
  • Added time / availability conflicts report: unlike the existing course conflict report, conflicts are counted between individual classes.
  • Distance conflict report: changed to compute conflicts between individual classes.
  • Unbalanced sections report: list sections that are dis-balanced by more than 10%.
  • Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
  • Added a page through which various student sectioning solver reports can be displayed:
  • Works for both batch (page Student Sectioning Solver Reports, menu Students > Solver Reports) and online (page Online Student Scheduling Reports, menu Students > Online Scheduling Reports).
  • All the existing current reports are available (time conflicts, availability conflicts, unbalanced classes, distance conflicts, time overlaps).
  • STUDENT SCHEDULING DASHBOARD:
  • Display Not-Enrolled student requests instead of just the wait-listed ones.
  • Distinguish wait-listed unassigned request with the w) hint.
  • This is done in the same way as there is the r) hint for enrollments using reservations or for reserved space.
  • Filter text field was replaced by the new filter box component (which is used on the events page, e.g., as Event Filter or Room Filter).
  • Student Scheduling Assistant
  • Added ability to wait-list an unassigned course request in the List of Classes table.
  • Added ability to automatically add course request and alternate course request lines as they are needed.
  • Time Conflicts: display the allowed time conflicts note (Overlaps with x) in red color.
  • There is also a warning icon next to each class that has a time conflict.
  • CUSTOM STUDENT ENROLLMENT INTERFACE:
  • Added an ability to provide a custom class that synchronizes the enrollments with an external system.
  • The interface can be used to check student's eligibility (an additional step in the CheckEligibility action).
  • The external system can request students to enter a PIN number.
  • Discrepancies between the two systems can be detected (e.g., a student may be denied the ability to enroll through UniTime if the two systems are not in sync).
  • The interface can be used to enroll students into classes (an additional step in the EnrollStudent action).
  • The external system may reject enrollment of some classes.
  • If this happens, student is not enrolled into the rejected classes in UniTime as well (appropriate error messages are displayed instead).
  • Automated qait-listing is disabled when such a custom interface is used.
  • This change also includes an example implementation using the new Banner XE (RESTful) interface. Course Timetabling
  • INSTRUCTOR PREFERENCES:
  • Added ability to automatically inherit instructor preferences to externally managed classes.
  • There is a new toggle (inherit instructor preferences) on a department which controls whether instructor preferences are to be inherited or not.
  • Applicable room and building preferences, global room features and groups can now be inherited onto an externally managed class as well.
  • If the externally managed department does not allow required time and/or room preferences, the instructor preferences are weakened accordingly.
  • Hierarchical Preference Inheritance
  • If there are two or more scheduling subparts in a parent-child relation with the same instructional type (e.g., Lec
  • Lec a
  • Lec b stacked underneath), inherit preferences and the date pattern from the parent subpart whenever possible.
  • This behavior can be enabled by setting application property unitime.preferences.hierarchicalInheritance to true.
  • Instructor Unavailability
  • Instructor unavailabilty can include special and course-related events that are approved.
  • These are events for which the instructor is the main contact or he/she is present in the additional contacts of the event.
  • This feature can be enabled by setting the application property unitime.events.instructorUnavailability to true (default is false).
  • If enabled, the unavailabilities will also show:
  • in the Timetable Grid (in the same way as blocking events are displayed for rooms now)
  • on the Instructor Detail page (there is a new section called Instructor Unavailability, only visible when there is at least one such blocking event for the instructor).
  • The RoomAvailabilityInterface has been extended to provide instructor availability, the default room availability service has been extended to provide instructor availability from the events as described above.
  • COURSE CREDIT:
  • Course credit moved from instructional offering to course offering.
  • That is, each course of a cross-list can have a different credit information.
  • This allows for variable credit courses where a student can pick the proper number of credits by selecting the appropriate course offering in the cross-list.
  • Course credit information is now also visible in the Course Finder dialog of the Student Scheduling Assistant page. Other Changes
  • EVENT MANAGEMENT: NO ROOM CHECK
  • Rooms that have the Ignore Room Check toggle enabled can be overbooked.
  • To easily identify such a room, there is a No Room Check note in the room's tooltip and the room name is in italic in the Meetings table on the Add / Edit Event pages.
  • Meetings that are in a room with no room check never show any conflicts and such meetings also never show among conflicting events.
  • ROOMS:
  • Added ability to provide room pictures.
  • Pictures (of a room) can be updated for
  • the current academic session only,
  • the current academic session and all future academic sessions, or
  • all academic sessions.
  • APPLICATION PROPERTIES:
  • All (or most of) application properties are now registered and used through the ApplicationProperty enum.
  • This allows for an easy place to see all configuration properties, define their default values and short descriptions.
  • Application Configuration page was modified to include all registered properties, including their defaults and descriptions.
  • Data Exchange
  • Added export of student course requests.
  • Student Class Enrollment Import: update student course requests to match student class enrollments.
  • Room Sharing: added ability to export and import room sharing.
  • Student Import, Student Class Enrollments Import: added incremental mode
  • When not in incremental mode, students (student class enrollments) that are not included in the XML are deleted (this is the default).
  • When in incremental mode, students that are not included in the file are completely ignored.
  • Student Course Requests Import
  • Added ability to cancel a student through the import (cancelStudent element).
  • Added ability to include class enrollments with the course requests.
  • Added enrollment mode (attribute enrollment on the root element) with the following values:
  • update: enrollments are updated to point to new course requests, orphaned enrollments (enrollments without course requests) are deleted (this is the default)
  • nochange: all enrollments are kept (previously, this was achieved by keepEnrollments='true')
  • import: import enrollments from the file (default when there are class elements in the file)
  • delete: all class enrollments (of the related students) are deleted
  • CAS AUTHENTICATION:
  • Added provisions for CAS-based authentication.
  • To enable CAS, uncomment the CAS Authentication sections in securityContext.xml and web.xml (see the comments there).
  • LOCALIZATION:
  • Added en_UK locale: it is much like the default, except of time (24-hour format) and date (day before moth) formatting.
  • Course Timetabling: Added ability to display assigned times in either 12-hour or 24-hour time format (based on the locale).
  • CONSTRAINT SOLVER:
  • Course Timetabling: Deterministic Student Sectioning Customization
  • This custom sectioning assign students to groups in a deterministic way.
  • Students are ordered by their academic information (curriculum) and unique ids and assigned in this order to the first available group (configuration or lecture).
  • To enable this customization set the following parameter:
  • StudentSectioning.Class=org.cpsolver.coursett.custom.DeterministicStudentSectioning
  • COURSE TIMETABLING: GROUP CONSTRAINT:
  • Forward checking extended to all hard group constraints (not only meet-together).
  • It is possible to avoid forward check on variables with large domains (parameter ForwardCheck.MaxDomainSize, defaults to 1000) and to limit the depth (parameter ForwardCheck.MaxDepth, defaults to 2).
  • COURSE TIMETABLING:
  • MaxBreaks constraint MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor on a day.
  • It has two parameters: a maximal number of breaks and a minimal length of a break between two classes not to be considered in the same block.
  • For example, reference _MaxBreaks:1:30_ translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes a part.
  • COURSE TIMETABLING: CLASS WEIGHTS:
  • Added an ability to provide each class with a weight.
  • This weight is used in the time and room preferences (the preference is weighted by the "importance" of the class).
  • For instance, this can be used for classes that are only offered once in a semester to have a lower weight.
  • So that there is an incentive to put a class that is taught every week in a preferred time even if it bumps two classes (that only meet once) from their preferred times.
  • This also allows for things like giving compulsory or elective courses more weight over optional courses in the curriculum timetabling, if ever needed.
  • This feature can be enabled by the solver parameter Class Weights, two implementations are now available:
  • Default Class Weights (default): all class weights are 1.0 (so, all works as before).
  • Average Hours A Week Class Weights: a weight of a class is estimated by the average number of hours it takes during the academic session.
  • IFS: NEIGHBORHOOD SEARCH ALGORITHMS:
  • Added a general versions of Hill Climber, Great Deluge, and Simulated Annealing to the solver, with three problem independent neighboorhoods:
  • Random move just picks a random unconflicting value to a variable.
  • Random swap tries to resolve all possible conflicts (unlike with suggestions there is no limit on depth, however, no new conflict can be created by resolving an existing one).
  • Suggestion move: a variable is selected randomly, a limited depth backtracking is used to find a possible change.
  • Unlike in NeighbourSelectionWithSuggestions, the very first found suggestion is returned.
  • Added a "simple search" algorithm that combines the ifs, hill climber, and great deluge or simulated annealing in a similar way as the examination solver (or the ITC competition solver) does.
  • This algorithm is enabled by setting the Search Algorithm solver parameter to Experimental.
  • Student Scheduling: Required Reservation Constraint
  • This global constraint ensures that reservations that must be used are used.
  • That is, an enrollment is conflicting when there is a reservation for the student that must be used, but the given enrollment does not use it.
  • While the domain of the course request already does not allow for such enrollments, such an enrollment can be loaded in from the database or XML.
  • This constraint is to prevent assignment of such invalid enrollments.
  • COURSE TIMETABLING:
  • Room RatioChanged the computation of minimal room size to round(room ratio x class limit), instead of the previous ceil(room ratio x class limit).
  • While using ceiling instead of round has some merit, this fixes the ongoing issues with the computation.
  • E.g., minimal room size of a class with limit 25 and room ratio 0.6 was 16 (as 0.6f * 25 = 15.000001 in Java) instead of the expected 15.
  • COURSE TIMETABLING: MAXWEEKS CONSTRAINT:
  • The MaxWeeks constraint limits the number of weeks during which the given set of classes are taught.
  • It has two parameters: a maximal number of weeks during which the given set of classes can be placed and a day code indicating what days of week are considered.
  • Reference _MaxWeeks:3:48_ translates to a maximum number of 3 weeks, but only for classes that are placed on Fridays and Saturdays
  • (64 for Monday, 32 for Tuesday, 16 for Wednesday, 8 for Thursday, 4 for Friday, 2 for Saturday, and 1 for Sunday)
  • If the second parameter is zero, all days of week are considered.
  • Course Timetabling: Classes with multiple rooms
  • For each time, limit the number of room combinations (parameter General.MaxRoomCombinations, defaults to 100).
  • Domain is dynamic (not cached) in this case, preferring rooms that are available for the given time (for which the room combinations are generated).
  • COURSE TIMETABLING: MAX N HOURS A DAY CONSTRAINT:
  • Added ability to consider date patterns (individual weeks).
  • When solver parameter MaxNHoursADay.ConsiderDatePatterns is set to true (this is also the new default).
  • For former behavior, set MaxNHoursADay.ConsiderDatePatterns to false.
  • COURSE TIMETABLING: DISTRIBUTION PREFERENCES:
  • Added structure One of Each
  • The distribution constraint is created for each combination of classes such that one class is taken from each line representing a class or a scheduling subpart
  • For instance, if the constraint is put between three scheduling subparts, a constraint will be posted between each combination of three classes, each from one of the three subparts.
  • If a constraint is put between a class and a scheduling subpart, there will be a binary constraint posted between the class and each of the classes of the scheduling subpart.

New in UniTime 3.5 Build 169 RC 2 (Nov 5, 2014)

  • CLUSTERING:
  • Improved ability for UniTime to run in a cluster.
  • Remote solver servers connect to each other and the web server(s) using JGroups.
  • Hibernate L2 cache is now replicated across the cluster.
  • However, L2 cache is disabled when Hibernate is used outside of Tomcat (e.g., on a remote solver server).
  • Clustering can be disabled by setting application properties unitime.hibernate.cluster (Hibernate L2 cache) and unitime.solver.cluster (remove solver servers) to false.
  • Online student scheduling server can now run on multiple machines at once, with the data asynchronously replicated (using infinispan) and one machine being the master (responsible for all the updates).
  • To enable replication, set unitime.enrollment.server.replicated to true.
  • CONSTRAINT SOLVER:
  • Using the latest version of CPSolver 1.3
  • This update contains a new assignment model and multi-core capabilities.
  • MOBILE:
  • A few initial steps have been made towards a frendlier version of UniTime pages on mobile (tables or phone) devices.
  • Mobile page layout is using less tables, and there is a new menu.
  • STUDENT SCHEDULING:
  • Over-Expected Criterion
  • Added ability to provide a custom criterion that decides whether a class is over-expected or not.
  • Default implementation now falls back to section balancing when there are no expectations.
  • I.e., students can be only allowed into sections that are (or will become) dis-balanced by more than 10% if there are no other sections meeting their schedule.
  • STUDENT SCHEDULING REPORTS:
  • Added an interface that is implemented by all the reports.
  • Added time / availability conflicts report: unlike the existing course conflict report, conflicts are counted between individual classes.
  • Distance conflict report: changed to compute conflicts between individual classes.
  • Unbalanced sections report: list sections that are dis-balanced by more than 10%.
  • Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
  • Added a page through which various student sectioning solver reports can be displayed:
  • Works for both batch (page Student Sectioning Solver Reports, menu Students > Solver Reports) and online (page Online Student Scheduling Reports, menu Students > Online Scheduling Reports).
  • All the existing current reports are available (time conflicts, availability conflicts, unbalanced classes, distance conflicts, time overlaps).
  • STUDENT SCHEDULING DASHBOARD:
  • Display Not-Enrolled student requests instead of just the wait-listed ones.
  • Distinguish wait-listed unassigned request with the w) hint.
  • This is done in the same way as there is the r) hint for enrollments using reservations or for reserved space.
  • Filter text field was replaced by the new filter box component (which is used on the events page, e.g., as Event Filter or Room Filter).
  • STUDENT STUDENT ASSISTANT:
  • Added ability to wait-list an unassigned course request in the List of Classes table.
  • Added ability to automatically add course request and alternate course request lines as they are needed.
  • Time Conflicts: display the allowed time conflicts note (Overlaps with x) in red color.
  • There is also a warning icon next to each class that has a time conflict.
  • CUSTOM STUDENT ENROLLMENT INTERFACE:
  • Added an ability to provide a custom class that synchronizes the enrollments with an external system.
  • The interface can be used to check student's eligibility (an additional step in the CheckEligibility action).
  • The external system can request students to enter a PIN number.
  • Discrepancies between the two systems can be detected (e.g., a student may be denied the ability to enroll through UniTime if the two systems are not in sync).
  • The interface can be used to enroll students into classes (an additional step in the EnrollStudent action).
  • The external system may reject enrollment of some classes.
  • If this happens, student is not enrolled into the rejected classes in UniTime as well (appropriate error messages are displayed instead).
  • Automated qait-listing is disabled when such a custom interface is used.
  • This change also includes an example implementation using the new Banner XE (RESTful) interface. Course Timetabling
  • INSTRUCTOR PREFERENCES:
  • Added ability to automatically inherit instructor preferences to externally managed classes.
  • There is a new toggle (inherit instructor preferences) on a department which controls whether instructor preferences are to be inherited or not.
  • Applicable room and building preferences, global room features and groups can now be inherited onto an externally managed class as well.
  • If the externally managed department does not allow required time and/or room preferences, the instructor preferences are weakened accordingly.
  • HIERARCHICAL PREFERENCE INHERITANCE:
  • If there are two or more scheduling subparts in a parent-child relation with the same instructional type (e.g., Lec
  • Lec a
  • Lec b stacked underneath), inherit preferences and the date pattern from the parent subpart whenever possible.
  • This behavior can be enabled by setting application property unitime.preferences.hierarchicalInheritance to true.
  • INSTRUCTOR UNAVAILABILITY:
  • Instructor unavailabilty can include special and course-related events that are approved.
  • These are events for which the instructor is the main contact or he/she is present in the additional contacts of the event.
  • This feature can be enabled by setting the application property unitime.events.instructorUnavailability to true (default is false).
  • If enabled, the unavailabilities will also show:
  • in the Timetable Grid (in the same way as blocking events are displayed for rooms now)
  • on the Instructor Detail page (there is a new section called Instructor Unavailability, only visible when there is at least one such blocking event for the instructor).
  • The RoomAvailabilityInterface has been extended to provide instructor availability, the default room availability service has been extended to provide instructor availability from the events as described above.
  • COURSE CREDIT:
  • Course credit moved from instructional offering to course offering.
  • That is, each course of a cross-list can have a different credit information.
  • This allows for variable credit courses where a student can pick the proper number of credits by selecting the appropriate course offering in the cross-list.
  • Course credit information is now also visible in the Course Finder dialog of the Student Scheduling Assistant page. Other Changes
  • EVENT MANAGEMENT - NO ROOM CHECK:
  • Rooms that have the Ignore Room Check toggle enabled can be overbooked.
  • To easily identify such a room, there is a No Room Check note in the room's tooltip and the room name is in italic in the Meetings table on the Add / Edit Event pages.
  • Meetings that are in a room with no room check never show any conflicts and such meetings also never show among conflicting events.
  • ROOMS:
  • Added ability to provide room pictures.
  • Pictures (of a room) can be updated for
  • the current academic session only,
  • the current academic session and all future academic sessions, or
  • all academic sessions.
  • APPLICATION PROPERTIES:
  • All (or most of) application properties are now registered and used through the ApplicationProperty enum.
  • This allows for an easy place to see all configuration properties, define their default values and short descriptions.
  • Application Configuration page was modified to include all registered properties, including their defaults and descriptions.
  • DATA EXCHANGE:
  • Added export of student course requests.
  • Student Class Enrollment Import: update student course requests to match student class enrollments.
  • Room Sharing: added ability to export and import room sharing.
  • Student Import, Student Class Enrollments Import: added incremental mode
  • When not in incremental mode, students (student class enrollments) that are not included in the XML are deleted (this is the default).
  • When in incremental mode, students that are not included in the file are completely ignored.
  • Student Course Requests Import
  • Added ability to cancel a student through the import (cancelStudent element).
  • Added ability to include class enrollments with the course requests.
  • Added enrollment mode (attribute enrollment on the root element) with the following values:
  • update: enrollments are updated to point to new course requests, orphaned enrollments (enrollments without course requests) are deleted (this is the default)
  • nochange: all enrollments are kept (previously, this was achieved by keepEnrollments='true')
  • import: import enrollments from the file (default when there are class elements in the file)
  • delete: all class enrollments (of the related students) are deleted
  • CAS AUTHENTIFICATION:
  • Added provisions for CAS-based authentication.
  • To enable CAS, uncomment the CAS Authentication sections in securityContext.xml and web.xml (see the comments there).
  • LOCALIZATION:
  • Added en_UK locale: it is much like the default, except of time (24-hour format) and date (day before moth) formatting.
  • Course Timetabling: Added ability to display assigned times in either 12-hour or 24-hour time format (based on the locale). Constraint Solver
  • COURSE TIMETABLING - DETERMINISTIC STUDENT SECTIONING CUSTOMIZATION:
  • This custom sectioning assign students to groups in a deterministic way.
  • Students are ordered by their academic information (curriculum) and unique ids and assigned in this order to the first available group (configuration or lecture).
  • To enable this customization set the following parameter:
  • StudentSectioning.Class=org.cpsolver.coursett.custom.DeterministicStudentSectioning
  • COURSE TIMETABLING - GROUP CONSTRAINT:
  • Forward checking extended to all hard group constraints (not only meet-together).
  • It is possible to avoid forward check on variables with large domains (parameter ForwardCheck.MaxDomainSize, defaults to 1000) and to limit the depth (parameter ForwardCheck.MaxDepth, defaults to 2).
  • COURSE TIMETABLING - MAXBREAKS CONSTRAINT:
  • MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor on a day.
  • It has two parameters: a maximal number of breaks and a minimal length of a break between two classes not to be considered in the same block.
  • For example, reference _MaxBreaks:1:30_ translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes a part.
  • COURSE TIMETABLING - THE:
  • Added an ability to provide each class with a weight.
  • This weight is used in the time and room preferences (the preference is weighted by the "importance" of the class).
  • For instance, this can be used for classes that are only offered once in a semester to have a lower weight.
  • So that there is an incentive to put a class that is taught every week in a preferred time even if it bumps two classes (that only meet once) from their preferred times.
  • This also allows for things like giving compulsory or elective courses more weight over optional courses in the curriculum timetabling, if ever needed.
  • This feature can be enabled by the solver parameter Class Weights, two implementations are now available:
  • Default Class Weights (default): all class weights are 1.0 (so, all works as before).
  • Average Hours A Week Class Weights: a weight of a class is estimated by the average number of hours it takes during the academic session.
  • IFS - NEIGHBORHOOD SEARCH ALGORITHM:
  • Added a general versions of Hill Climber, Great Deluge, and Simulated Annealing to the solver, with three problem independent neighboorhoods:
  • Random move just picks a random unconflicting value to a variable.
  • Random swap tries to resolve all possible conflicts (unlike with suggestions there is no limit on depth, however, no new conflict can be created by resolving an existing one).
  • Suggestion move: a variable is selected randomly, a limited depth backtracking is used to find a possible change.
  • Unlike in NeighbourSelectionWithSuggestions, the very first found suggestion is returned.
  • Added a "simple search" algorithm that combines the ifs, hill climber, and great deluge or simulated annealing in a similar way as the examination solver (or the ITC competition solver) does.
  • This algorithm is enabled by setting the Search Algorithm solver parameter to Experimental.
  • STUDENT SCHEDULING - REQUIRED RESERVATION CONSTRAINT:
  • This global constraint ensures that reservations that must be used are used.
  • That is, an enrollment is conflicting when there is a reservation for the student that must be used, but the given enrollment does not use it.
  • While the domain of the course request already does not allow for such enrollments, such an enrollment can be loaded in from the database or XML.
  • This constraint is to prevent assignment of such invalid enrollments.
  • Course Timetabling: Room Ratio
  • Changed the computation of minimal room size to round(room ratio x class limit), instead of the previous ceil(room ratio x class limit).
  • While using ceiling instead of round has some merit, this fixes the ongoing issues with the computation.
  • E.g., minimal room size of a class with limit 25 and room ratio 0.6 was 16 (as 0.6f * 25 = 15.000001 in Java) instead of the expected 15.
  • COURSE TIMETABLING - MAXWEEKS CONSTRAINT:
  • The MaxWeeks constraint limits the number of weeks during which the given set of classes are taught.
  • It has two parameters: a maximal number of weeks during which the given set of classes can be placed and a day code indicating what days of week are considered.
  • Reference _MaxWeeks:3:48_ translates to a maximum number of 3 weeks, but only for classes that are placed on Fridays and Saturdays
  • (64 for Monday, 32 for Tuesday, 16 for Wednesday, 8 for Thursday, 4 for Friday, 2 for Saturday, and 1 for Sunday)
  • If the second parameter is zero, all days of week are considered.
  • Course Timetabling: Classes with multiple rooms
  • For each time, limit the number of room combinations (parameter General.MaxRoomCombinations, defaults to 100).
  • Domain is dynamic (not cached) in this case, preferring rooms that are available for the given time (for which the room combinations are generated).
  • Course Timetabling: Max N Hours A Day constraint
  • Added ability to consider date patterns (individual weeks).
  • When solver parameter MaxNHoursADay.ConsiderDatePatterns is set to true (this is also the new default).
  • For former behavior, set MaxNHoursADay.ConsiderDatePatterns to false.
  • Course Timetabling: Distribution Preferences
  • Added structure One of Each
  • The distribution constraint is created for each combination of classes such that one class is taken from each line representing a class or a scheduling subpart
  • For instance, if the constraint is put between three scheduling subparts, a constraint will be posted between each combination of three classes, each from one of the three subparts.
  • If a constraint is put between a class and a scheduling subpart, there will be a binary constraint posted between the class and each of the classes
  • of the scheduling subpart.

New in UniTime 3.4 Build 321 (Oct 30, 2014)

  • Bug Fixes:
  • Application Properties: Base Path
  • Fixed an issue that sometimes happens on Windows that could cause UniTime to fail to start (could not instantiate bean SpringConfigurationProperties).

New in UniTime 3.5 Build 164 RC 1 (Oct 25, 2014)

  • Clustering:
  • Improved ability for UniTime to run in a cluster.
  • Remote solver servers connect to each other and the web server(s) using JGroups.
  • Hibernate L2 cache is now replicated across the cluster.
  • However, L2 cache is disabled when Hibernate is used outside of Tomcat (e.g., on a remote solver server).
  • Clustering can be disabled by setting application properties unitime.hibernate.cluster (Hibernate L2 cache) and unitime.solver.cluster (remove solver servers) to false.
  • Online student scheduling server can now run on multiple machines at once, with the data asynchronously replicated (using infinispan) and one machine being the master (responsible for all the updates).
  • To enable replication, set unitime.enrollment.server.replicated to true.
  • Constraint Solver:
  • Using the latest version of CPSolver 1.3
  • This update contains a new assignment model and multi-core capabilities.
  • Mobile:
  • A few initial steps have been made towards a frendlier version of UniTime pages on mobile (tables or phone) devices.
  • Mobile page layout is using less tables, and there is a new menu. Student Scheduling
  • Over-Expected Criterion
  • Added ability to provide a custom criterion that decides whether a class is over-expected or not.
  • Default implementation now falls back to section balancing when there are no expectations.
  • I.e., students can be only allowed into sections that are (or will become) dis-balanced by more than 10% if there are no other sections meeting their schedule.
  • Student Scheduling Reports:
  • Added an interface that is implemented by all the reports.
  • Added time / availability conflicts report: unlike the existing course conflict report, conflicts are counted between individual classes.
  • Distance conflict report: changed to compute conflicts between individual classes.
  • Unbalanced sections report: list sections that are dis-balanced by more than 10%.
  • Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
  • Added a page through which various student sectioning solver reports can be displayed:
  • Works for both batch (page Student Sectioning Solver Reports, menu Students > Solver Reports) and online (page Online Student Scheduling Reports, menu Students > Online Scheduling Reports).
  • All the existing current reports are available (time conflicts, availability conflicts, unbalanced classes, distance conflicts, time overlaps).
  • Student Scheduling Dashboard
  • Display Not-Enrolled student requests instead of just the wait-listed ones.
  • Distinguish wait-listed unassigned request with the w) hint.
  • This is done in the same way as there is the r) hint for enrollments using reservations or for reserved space.
  • Filter text field was replaced by the new filter box component (which is used on the events page, e.g., as Event Filter or Room Filter).
  • Student Scheduling Assistant
  • Added ability to wait-list an unassigned course request in the List of Classes table.
  • Added ability to automatically add course request and alternate course request lines as they are needed.
  • Time Conflicts: display the allowed time conflicts note (Overlaps with x) in red color.
  • There is also a warning icon next to each class that has a time conflict.
  • Custom Student Enrollment Interface
  • Added an ability to provide a custom class that synchronizes the enrollments with an external system.
  • The interface can be used to check student's eligibility (an additional step in the CheckEligibility action).
  • The external system can request students to enter a PIN number.
  • Discrepancies between the two systems can be detected (e.g., a student may be denied the ability to enroll through UniTime if the two systems are not in sync).
  • The interface can be used to enroll students into classes (an additional step in the EnrollStudent action).
  • The external system may reject enrollment of some classes.
  • If this happens, student is not enrolled into the rejected classes in UniTime as well (appropriate error messages are displayed instead).
  • Automated qait-listing is disabled when such a custom interface is used.
  • This change also includes an example implementation using the new Banner XE (RESTful) interface. Course Timetabling
  • Instructor Preferences
  • Added ability to automatically inherit instructor preferences to externally managed classes.
  • There is a new toggle (inherit instructor preferences) on a department which controls whether instructor preferences are to be inherited or not.
  • Applicable room and building preferences, global room features and groups can now be inherited onto an externally managed class as well.
  • If the externally managed department does not allow required time and/or room preferences, the instructor preferences are weakened accordingly.
  • Hierarchical Preference Inheritance
  • If there are two or more scheduling subparts in a parent-child relation with the same instructional type (e.g., Lec
  • Lec a
  • Lec b stacked underneath), inherit preferences and the date pattern from the parent subpart whenever possible.
  • This behavior can be enabled by setting application property unitime.preferences.hierarchicalInheritance to true.
  • Instructor Unavailability
  • Instructor unavailabilty can include special and course-related events that are approved.
  • These are events for which the instructor is the main contact or he/she is present in the additional contacts of the event.
  • This feature can be enabled by setting the application property unitime.events.instructorUnavailability to true (default is false).
  • If enabled, the unavailabilities will also show:
  • in the Timetable Grid (in the same way as blocking events are displayed for rooms now)
  • on the Instructor Detail page (there is a new section called Instructor Unavailability, only visible when there is at least one such blocking event for the instructor).
  • The RoomAvailabilityInterface has been extended to provide instructor availability, the default room availability service has been extended to provide instructor availability from the events as described above.
  • Course Credit:
  • Course credit moved from instructional offering to course offering.
  • That is, each course of a cross-list can have a different credit information.
  • This allows for variable credit courses where a student can pick the proper number of credits by selecting the appropriate course offering in the cross-list.
  • Course credit information is now also visible in the Course Finder dialog of the Student Scheduling Assistant page. Other Changes
  • Event Management:
  • No Room Check
  • Rooms that have the Ignore Room Check toggle enabled can be overbooked.
  • To easily identify such a room, there is a No Room Check note in the room's tooltip and the room name is in italic in the Meetings table on the Add / Edit Event pages.
  • Meetings that are in a room with no room check never show any conflicts and such meetings also never show among conflicting events.
  • Rooms
  • Added ability to provide room pictures.
  • Pictures (of a room) can be updated for
  • the current academic session only,
  • the current academic session and all future academic sessions, or
  • all academic sessions.
  • Application Properties
  • All (or most of) application properties are now registered and used through the ApplicationProperty enum.
  • This allows for an easy place to see all configuration properties, define their default values and short descriptions.
  • Application Configuration page was modified to include all registered properties, including their defaults and descriptions.
  • Data Exchange
  • Added export of student course requests.
  • Student Class Enrollment Import: update student course requests to match student class enrollments.
  • Room Sharing: added ability to export and import room sharing.
  • Student Import, Student Class Enrollments Import: added incremental mode
  • When not in incremental mode, students (student class enrollments) that are not included in the XML are deleted (this is the default).
  • When in incremental mode, students that are not included in the file are completely ignored.
  • Student Course Requests Import
  • Added ability to cancel a student through the import (cancelStudent element).
  • Added ability to include class enrollments with the course requests.
  • Added enrollment mode (attribute enrollment on the root element) with the following values:
  • update: enrollments are updated to point to new course requests, orphaned enrollments (enrollments without course requests) are deleted (this is the default)
  • nochange: all enrollments are kept (previously, this was achieved by keepEnrollments='true')
  • import: import enrollments from the file (default when there are class elements in the file)
  • delete: all class enrollments (of the related students) are deleted
  • CAS Authentication
  • Added provisions for CAS-based authentication.
  • To enable CAS, uncomment the CAS Authentication sections in securityContext.xml and web.xml (see the comments there).
  • Localization
  • Added en_UK locale: it is much like the default, except of time (24-hour format) and date (day before moth) formatting.
  • Course Timetabling: Added ability to display assigned times in either 12-hour or 24-hour time format (based on the locale). Constraint Solver
  • Course Timetabling: Deterministic Student Sectioning Customization
  • This custom sectioning assign students to groups in a deterministic way.
  • Students are ordered by their academic information (curriculum) and unique ids and assigned in this order to the first available group (configuration or lecture).
  • To enable this customization set the following parameter:
  • StudentSectioning.Class=org.cpsolver.coursett.custom.DeterministicStudentSectioning
  • Course Timetabling: Group Constraint
  • Forward checking extended to all hard group constraints (not only meet-together).
  • It is possible to avoid forward check on variables with large domains (parameter ForwardCheck.MaxDomainSize, defaults to 1000) and to limit the depth (parameter ForwardCheck.MaxDepth, defaults to 2).
  • Course Timetabling: MaxBreaks constraint
  • MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor on a day.
  • It has two parameters: a maximal number of breaks and a minimal length of a break between two classes not to be considered in the same block.
  • For example, reference _MaxBreaks:1:30_ translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes a part.
  • Course Timetabling: Class Weights
  • Added an ability to provide each class with a weight.
  • This weight is used in the time and room preferences (the preference is weighted by the "importance" of the class).
  • For instance, this can be used for classes that are only offered once in a semester to have a lower weight.
  • So that there is an incentive to put a class that is taught every week in a preferred time even if it bumps two classes (that only meet once) from their preferred times.
  • This also allows for things like giving compulsory or elective courses more weight over optional courses in the curriculum timetabling, if ever needed.
  • This feature can be enabled by the solver parameter Class Weights, two implementations are now available:
  • Default Class Weights (default): all class weights are 1.0 (so, all works as before).
  • Average Hours A Week Class Weights: a weight of a class is estimated by the average number of hours it takes during the academic session.
  • IFS: Neighborhood Search Algorithms
  • Added a general versions of Hill Climber, Great Deluge, and Simulated Annealing to the solver, with three problem independent neighboorhoods:
  • Random move just picks a random unconflicting value to a variable.
  • Random swap tries to resolve all possible conflicts (unlike with suggestions there is no limit on depth, however, no new conflict can be created by resolving an existing one).
  • Suggestion move: a variable is selected randomly, a limited depth backtracking is used to find a possible change.
  • Unlike in NeighbourSelectionWithSuggestions, the very first found suggestion is returned.
  • Added a "simple search" algorithm that combines the ifs, hill climber, and great deluge or simulated annealing in a similar way as the examination solver (or the ITC competition solver) does.
  • This algorithm is enabled by setting the Search Algorithm solver parameter to Experimental.
  • Student Scheduling: Required Reservation Constraint
  • This global constraint ensures that reservations that must be used are used.
  • That is, an enrollment is conflicting when there is a reservation for the student that must be used, but the given enrollment does not use it.
  • While the domain of the course request already does not allow for such enrollments, such an enrollment can be loaded in from the database or XML.
  • This constraint is to prevent assignment of such invalid enrollments.
  • Course Timetabling: Room Ratio
  • Changed the computation of minimal room size to round(room ratio x class limit), instead of the previous ceil(room ratio x class limit).
  • While using ceiling instead of round has some merit, this fixes the ongoing issues with the computation.
  • E.g., minimal room size of a class with limit 25 and room ratio 0.6 was 16 (as 0.6f * 25 = 15.000001 in Java) instead of the expected 15.
  • Course Timetabling: MaxWeeks constraint
  • The MaxWeeks constraint limits the number of weeks during which the given set of classes are taught.
  • It has two parameters: a maximal number of weeks during which the given set of classes can be placed and a day code indicating what days of week are considered.
  • Reference _MaxWeeks:3:48_ translates to a maximum number of 3 weeks, but only for classes that are placed on Fridays and Saturdays
  • (64 for Monday, 32 for Tuesday, 16 for Wednesday, 8 for Thursday, 4 for Friday, 2 for Saturday, and 1 for Sunday)
  • If the second parameter is zero, all days of week are considered.
  • Course Timetabling: Classes with multiple rooms
  • For each time, limit the number of room combinations (parameter General.MaxRoomCombinations, defaults to 100).
  • Domain is dynamic (not cached) in this case, preferring rooms that are available for the given time (for which the room combinations are generated).
  • Course Timetabling: Max N Hours A Day constraint
  • Added ability to consider date patterns (individual weeks).
  • When solver parameter MaxNHoursADay.ConsiderDatePatterns is set to true (this is also the new default).
  • For former behavior, set MaxNHoursADay.ConsiderDatePatterns to false.
  • Course Timetabling: Distribution Preferences
  • Added structure One of Each
  • The distribution constraint is created for each combination of classes such that one class is taken from each line representing a class or a scheduling subpart
  • For instance, if the constraint is put between three scheduling subparts, a constraint will be posted between each combination of three classes, each from one of the three subparts.
  • If a constraint is put between a class and a scheduling subpart, there will be a binary constraint posted between the class and each of the classes of the scheduling subpart.

New in UniTime 3.5 Build 153 Beta 1 (Oct 2, 2014)

  • UniTime 3.5.153 release notes
  • TECHNOLOGY UPDATE:
  • Clustering:
  • Improved ability for UniTime to run in a cluster.
  • Remote solver servers connect to each other and the web server(s) using JGroups.
  • Hibernate L2 cache is now replicated across the cluster.
  • However, L2 cache is disabled when Hibernate is used outside of Tomcat (e.g., on a remote solver server).
  • Clustering can be disabled by setting application properties unitime.hibernate.cluster
  • (Hibernate L2 cache) and unitime.solver.cluster (remove solver servers) to false.
  • Online student scheduling server can now run on multiple machines at once, with the data
  • asynchronously replicated (using infinispan) and one machine being the master (responsible for
  • all the updates).
  • To enable replication, set unitime.enrollment.server.replicated to true.
  • Constraint Solver:
  • Using the latest version of CPSolver 1.3
  • This update contains a new assignment model and multi-core capabilities.
  • Mobile:
  • A few initial steps have been made towards a frendlier version of UniTime pages on mobile
  • (tables or phone) devices.
  • Mobile page layout is using less tables, and there is a new menu.
  • STUDENT SCHEDULING:
  • Over-Expected Criterion:
  • Added ability to provide a custom criterion that decides whether a class is over-expected or
  • not.
  • Default implementation now falls back to section balancing when there are no expectations.
  • I.e., students can be only allowed into sections that are (or will become) dis-balanced by more than 10% if there are no other sections meeting their schedule.
  • Student Scheduling Reports:
  • Added an interface that is implemented by all the reports.
  • Added time / availability conflicts report: unlike the existing course conflict report,
  • conflicts are counted between individual classes.
  • Distance conflict report: changed to compute conflicts between individual classes.
  • Unbalanced sections report: list sections that are dis-balanced by more than 10%.
  • Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
  • Added a page through which various student sectioning solver reports can be displayed:
  • Works for both batch (page Student Sectioning Solver Reports, menu Students > Solver Reports) and online (page Online Student Scheduling Reports, menu Students > Online Scheduling Reports).
  • All the existing current reports are available (time conflicts, availability conflicts, unbalanced classes, distance conflicts, time overlaps).
  • Student Scheduling Dashboard:
  • Display Not-Enrolled student requests instead of just the wait-listed ones.
  • Distinguish wait-listed unassigned request with the w) hint.
  • This is done in the same way as there is the r) hint for enrollments using reservations or for reserved space.
  • Filter text field was replaced by the new filter box component (which is used on the events
  • page, e.g., as Event Filter or Room Filter).
  • Student Scheduling Assistant:
  • Added ability to wait-list an unassigned course request in the List of Classes table.
  • Added ability to automatically add course request and alternate course request lines as they
  • are needed.
  • Time Conflicts: display the allowed time conflicts note (Overlaps with x) in red color.
  • There is also a warning icon next to each class that has a time conflict.
  • Custom Student Enrollment Interface:
  • Added an ability to provide a custom class that synchronizes the enrollments with an external
  • system.
  • The interface can be used to check student's eligibility (an additional step in the
  • CheckEligibility action).
  • The external system can request students to enter a PIN number.
  • Discrepancies between the two systems can be detected (e.g., a student may be denied the ability to enroll through UniTime if the two systems are not in sync).
  • The interface can be used to enroll students into classes (an additional step in the
  • EnrollStudent action).
  • The external system may reject enrollment of some classes.
  • If this happens, student is not enrolled into the rejected classes in UniTime as well (appropriate error messages are displayed instead).
  • Automated qait-listing is disabled when such a custom interface is used.
  • This change also includes an example implementation using the new Banner XE (RESTful)
  • interface.
  • COURSE TIMETABLING:
  • Instructor Preferences:
  • Added ability to automatically inherit instructor preferences to externally managed classes.
  • There is a new toggle (inherit instructor preferences) on a department which controls whether
  • instructor preferences are to be inherited or not.
  • Applicable room and building preferences, global room features and groups can now be inherited
  • onto an externally managed class as well.
  • If the externally managed department does not allow required time and/or room preferences, the
  • instructor preferences are weakened accordingly.
  • Hierarchical Preference Inheritance:
  • If there are two or more scheduling subparts in a parent-child relation with the same
  • instructional type (e.g., Lec - Lec a - Lec b stacked underneath), inherit preferences and the
  • date pattern from the parent subpart whenever possible.
  • This behavior can be enabled by setting application property
  • unitime.preferences.hierarchicalInheritance to true.
  • Instructor Unavailability:
  • Instructor unavailabilty can include special and course-related events that are approved.
  • These are events for which the instructor is the main contact or he/she is present in the additional contacts of the event.
  • This feature can be enabled by setting the application property unitime.events.instructorUnavailability to true (default is false).
  • If enabled, the unavailabilities will also show:
  • in the Timetable Grid (in the same way as blocking events are displayed for rooms now)
  • on the Instructor Detail page (there is a new section called Instructor Unavailability, only visible when there is at least one such blocking event for the instructor).
  • The RoomAvailabilityInterface has been extended to provide instructor availability, the
  • default room availability service has been extended to provide instructor availability from
  • the events as described above.
  • Course Credit:
  • Course credit moved from instructional offering to course offering.
  • That is, each course of a cross-list can have a different credit information.
  • This allows for variable credit courses where a student can pick the proper number of credits by selecting the appropriate course offering in the cross-list.
  • Course credit information is now also visible in the Course Finder dialog of the Student
  • Scheduling Assistant page.
  • Other Changes
  • - Event Management: No Room Check
  • Rooms that have the Ignore Room Check toggle enabled can be overbooked.
  • To easily identify such a room, there is a No Room Check note in the room's tooltip and the room name is in italic in the Meetings table on the Add / Edit Event pages.
  • Meetings that are in a room with no room check never show any conflicts and such meetings also
  • never show among conflicting events.
  • Rooms:
  • Added ability to provide room pictures.
  • Pictures (of a room) can be updated for
  • the current academic session only,
  • the current academic session and all future academic sessions, or
  • all academic sessions.
  • Application Properties:
  • All (or most of) application properties are now registered and used through the
  • ApplicationProperty enum.
  • This allows for an easy place to see all configuration properties, define their default values and short descriptions.
  • Application Configuration page was modified to include all registered properties, including
  • their defaults and descriptions.
  • Data Exchange:
  • Added export of student course requests.
  • Student Class Enrollment Import: update student course requests to match student class
  • enrollments.
  • Room Sharing: added ability to export and import room sharing.
  • Student Import, Student Class Enrollments Import: added incremental mode
  • When not in incremental mode, students (student class enrollments) that are not included in the XML are deleted (this is the default).
  • When in incremental mode, students that are not included in the file are completely ignored.
  • Student Course Requests Import
  • Added ability to cancel a student through the import (cancelStudent element).
  • Added ability to include class enrollments with the course requests.
  • Added enrollment mode (attribute enrollment on the root element) with the following values: - update: enrollments are updated to point to new course requests, orphaned enrollments (enrollments without course requests) are deleted (this is the default)
  • nochange: all enrollments are kept (previously, this was achieved by keepEnrollments='true')
  • import: import enrollments from the file (default when there are class elements in the file)
  • delete: all class enrollments (of the related students) are deleted
  • CAS Authentication:
  • Added provisions for CAS-based authentication.
  • To enable CAS, uncomment the CAS Authentication sections in securityContext.xml and web.xml
  • (see the comments there).
  • Localization:
  • Added en_UK locale: it is much like the default, except of time (24-hour format) and date (day
  • before moth) formatting.
  • Course Timetabling: Added ability to display assigned times in either 12-hour or 24-hour time
  • format (based on the locale).
  • CONSTRAINT SOLVER:
  • Course Timetabling: Deterministic Student Sectioning Customization:
  • This custom sectioning assign students to groups in a deterministic way.
  • Students are ordered by their academic information (curriculum) and unique ids and assigned in this order to the first available group (configuration or lecture).
  • To enable this customization set the following parameter:
  • StudentSectioning.Class=org.cpsolver.coursett.custom.DeterministicStudentSectioning
  • Course Timetabling: Group Constraint:
  • Forward checking extended to all hard group constraints (not only meet-together).
  • It is possible to avoid forward check on variables with large domains (parameter
  • ForwardCheck.MaxDomainSize, defaults to 1000) and to limit the depth (parameter
  • ForwardCheck.MaxDepth, defaults to 2).
  • Course Timetabling: MaxBreaks constraint:
  • MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor
  • on a day.
  • It has two parameters: a maximal number of breaks and a minimal length of a break between two
  • classes not to be considered in the same block.
  • For example, reference _MaxBreaks:1:30_ translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes a part.
  • Course Timetabling: Class Weights:
  • Added an ability to provide each class with a weight.
  • This weight is used in the time and room preferences (the preference is weighted by the "importance" of the class).
  • For instance, this can be used for classes that are only offered once in a semester to have
  • a lower weight.
  • So that there is an incentive to put a class that is taught every week in a preferred time even if it bumps two classes (that only meet once) from their preferred times.
  • This also allows for things like giving compulsory or elective courses more weight over
  • optional courses in the curriculum timetabling, if ever needed.
  • This feature can be enabled by the solver parameter Class Weights, two implementations are now
  • available:
  • Default Class Weights (default): all class weights are 1.0 (so, all works as before).
  • Average Hours A Week Class Weights: a weight of a class is estimated by the average number of hours it takes during the academic session.
  • IFS: Neighborhood Search Algorithms:
  • Added a general versions of Hill Climber, Great Deluge, and Simulated Annealing to the solver,
  • with three problem independent neighboorhoods:
  • Random move just picks a random unconflicting value to a variable.
  • Random swap tries to resolve all possible conflicts (unlike with suggestions there is no limit on depth, however, no new conflict can be created by resolving an existing one).
  • Suggestion move: a variable is selected randomly, a limited depth backtracking is used to find a possible change.
  • Unlike in NeighbourSelectionWithSuggestions, the very first found suggestion is returned.
  • Added a "simple search" algorithm that combines the ifs, hill climber, and great deluge or
  • simulated annealing in a similar way as the examination solver (or the ITC competition solver)
  • does.
  • This algorithm is enabled by setting the Search Algorithm solver parameter to Experimental.
  • Student Scheduling: Required Reservation Constraint:
  • This global constraint ensures that reservations that must be used are used.
  • That is, an enrollment is conflicting when there is a reservation for the student that must be used, but the given enrollment does not use it.
  • While the domain of the course request already does not allow for such enrollments, such an
  • enrollment can be loaded in from the database or XML.
  • This constraint is to prevent assignment of such invalid enrollments.
  • Course Timetabling: Room Ratio
  • Changed the computation of minimal room size to round(room ratio x class limit), instead of
  • the previous ceil(room ratio x class limit).
  • While using ceiling instead of round has some merit, this fixes the ongoing issues with the
  • computation.
  • E.g., minimal room size of a class with limit 25 and room ratio 0.6 was 16 (as 0.6f * 25 = 15.000001 in Java) instead of the expected 15.
  • Course Timetabling: MaxWeeks constraint
  • The MaxWeeks constraint limits the number of weeks during which the given set of classes are
  • taught.
  • It has two parameters: a maximal number of weeks during which the given set of classes can be
  • placed and a day code indicating what days of week are considered.
  • Reference _MaxWeeks:3:48_ translates to a maximum number of 3 weeks, but only for classes that
  • are placed on Fridays and Saturdays
  • (64 for Monday, 32 for Tuesday, 16 for Wednesday, 8 for Thursday, 4 for Friday, 2 for Saturday, and 1 for Sunday)
  • If the second parameter is zero, all days of week are considered.
  • Course Timetabling: Classes with multiple rooms
  • For each time, limit the number of room combinations (parameter General.MaxRoomCombinations,
  • defaults to 100).
  • Domain is dynamic (not cached) in this case, preferring rooms that are available for the given time (for which the room combinations are generated).
  • Course Timetabling: Max N Hours A Day constraint
  • Added ability to consider date patterns (individual weeks).
  • When solver parameter MaxNHoursADay.ConsiderDatePatterns is set to true (this is also the new default).
  • Course Timetabling: Distribution Preferences
  • Added structure One of Each
  • The distribution constraint is created for each combination of classes such that one class is taken from each line representing a class or a scheduling subpart
  • For instance, if the constraint is put between three scheduling subparts, a constraint will be posted between each combination of three classes, each from one of the three subparts.
  • If a constraint is put between a class and a scheduling subpart, there will be a binary constraint posted between the class and each of the classes of the scheduling subpart.

New in UniTime 3.5 Build 136 Beta (Sep 9, 2014)

  • Technology Update
  • Clustering
  • Improved ability for UniTime to run in a cluster.
  • Remote solver servers connect to each other and the web server(s) using JGroups.
  • Hibernate L2 cache is now replicated across the cluster.
  • However, L2 cache is disabled when Hibernate is used outside of Tomcat (e.g., on a remote solver server).
  • Clustering can be disabled by setting application properties unitime.hibernate.cluster (Hibernate L2 cache) and unitime.solver.cluster (remove solver servers) to false.
  • Online student scheduling server can now run on multiple machines at once, with the data asynchronously replicated (using infinispan) and one machine being the master (responsible for all the updates).
  • To enable replication, set unitime.enrollment.server.replicated to true.
  • Constraint Solver
  • Using the latest version of CPSolver 1.3
  • This update contains a new assignment model and multi-core capabilities.
  • Mobile
  • A few initial steps have been made towards a frendlier version of UniTime pages on mobile (tables or phone) devices.
  • Mobile page layout is using less tables, and there is a new menu.
  • Student Scheduling
  • Over-Expected Criterion
  • Added ability to provide a custom criterion that decides whether a class is over-expected or not.
  • Default implementation now falls back to section balancing when there are no expectations.
  • I.e., students can be only allowed into sections that are (or will become) dis-balanced by more than 10% if there are no other sections meeting their schedule.
  • Student Scheduling Reports
  • Added an interface that is implemented by all the reports.
  • Added time / availability conflicts report: unlike the existing course conflict report, conflicts are counted between individual classes.
  • Distance conflict report: changed to compute conflicts between individual classes.
  • Unbalanced sections report: list sections that are dis-balanced by more than 10%.
  • Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
  • Added a page through which various student sectioning solver reports can be displayed:
  • Works for both batch (page Student Sectioning Solver Reports, menu Students > Solver Reports) and online (page Online Student Scheduling Reports, menu Students > Online Scheduling Reports).
  • All the existing current reports are available (time conflicts, availability conflicts, unbalanced classes, distance conflicts, time overlaps).
  • Student Scheduling Dashboard
  • Display Not-Enrolled student requests instead of just the wait-listed ones.
  • Distinguish wait-listed unassigned request with the w) hint.
  • This is done in the same way as there is the r) hint for enrollments using reservations or for reserved space.
  • Filter text field was replaced by the new filter box component (which is used on the events page, e.g., as Event Filter or Room Filter).
  • Student Scheduling Assistant
  • Added ability to wait-list an unassigned course request in the List of Classes table.
  • Added ability to automatically add course request and alternate course request lines as they are needed.
  • Time Conflicts: display the allowed time conflicts note (Overlaps with x) in red color.
  • There is also a warning icon next to each class that has a time conflict.
  • Custom Student Enrollment Interface
  • Added an ability to provide a custom class that synchronizes the enrollments with an external system.
  • The interface can be used to check student's eligibility (an additional step in the CheckEligibility action).
  • The external system can request students to enter a PIN number.
  • Discrepancies between the two systems can be detected (e.g., a student may be denied the ability to enroll through UniTime if the two systems are not in sync).
  • The interface can be used to enroll students into classes (an additional step in the EnrollStudent action).
  • The external system may reject enrollment of some classes.
  • If this happens, student is not enrolled into the rejected classes in UniTime as well (appropriate error messages are displayed instead).
  • Automated qait-listing is disabled when such a custom interface is used.
  • This change also includes an example implementation using the new Banner XE (RESTful) interface.
  • Course Timetabling
  • Instructor Preferences
  • Added ability to automatically inherit instructor preferences to externally managed classes.
  • There is a new toggle (inherit instructor preferences) on a department which controls whether instructor preferences are to be inherited or not.
  • Applicable room and building preferences, global room features and groups can now be inherited onto an externally managed class as well.
  • If the externally managed department does not allow required time and/or room preferences, the instructor preferences are weakened accordingly.
  • Hierarchical Preference Inheritance
  • If there are two or more scheduling subparts in a parent-child relation with the same instructional type (e.g., Lec Lec a Lec b stacked underneath), inherit preferences and the date pattern from the parent subpart whenever possible.
  • This behavior can be enabled by setting application property unitime.preferences.hierarchicalInheritance to true.
  • Instructor Unavailability
  • Instructor unavailabilty can include special and course-related events that are approved.
  • These are events for which the instructor is the main contact or he/she is present in the additional contacts of the event.
  • This feature can be enabled by setting the application property unitime.events.instructorUnavailability to true (default is false).
  • If enabled, the unavailabilities will also show:
  • in the Timetable Grid (in the same way as blocking events are displayed for rooms now)
  • on the Instructor Detail page (there is a new section called Instructor Unavailability, only visible when there is at least one such blocking event for the instructor).
  • The RoomAvailabilityInterface has been extended to provide instructor availability, the default room availability service has been extended to provide instructor availability from the events as described above.
  • Course Credit
  • Course credit moved from instructional offering to course offering.
  • That is, each course of a cross-list can have a different credit information.
  • This allows for variable credit courses where a student can pick the proper number of credits by selecting the appropriate course offering in the cross-list.
  • Course credit information is now also visible in the Course Finder dialog of the Student Scheduling Assistant page.
  • Other Changes
  • Event Management: No Room Check
  • Rooms that have the Ignore Room Check toggle enabled can be overbooked.
  • To easily identify such a room, there is a No Room Check note in the room's tooltip and the room name is in italic in the Meetings table on the Add / Edit Event pages.
  • Meetings that are in a room with no room check never show any conflicts and such meetings also never show among conflicting events.
  • Rooms
  • Added ability to provide room pictures.
  • Pictures (of a room) can be updated for
  • the current academic session only,
  • the current academic session and all future academic sessions, or
  • all academic sessions.
  • Application Properties
  • All (or most of) application properties are now registered and used through the ApplicationProperty enum.
  • This allows for an easy place to see all configuration properties, define their default values and short descriptions.
  • Application Configuration page was modified to include all registered properties, including their defaults and descriptions.
  • Data Exchange
  • Added export of student course requests.
  • Student Class Enrollment Import: update student course requests to match student class enrollments.
  • Room Sharing: added ability to export and import room sharing.
  • Student Import, Student Class Enrollments Import: added incremental mode
  • When not in incremental mode, students (student class enrollments) that are not included in the XML are deleted (this is the default).
  • When in incremental mode, students that are not included in the file are completely ignored.
  • Student Course Requests Import
  • Added ability to cancel a student through the import (cancelStudent element).
  • Added ability to include class enrollments with the course requests.
  • Added enrollment mode (attribute enrollment on the root element) with the following values:
  • update: enrollments are updated to point to new course requests, orphaned enrollments (enrollments without course requests) are deleted (this is the default)
  • nochange: all enrollments are kept (previously, this was achieved by keepEnrollments='true')
  • import: import enrollments from the file (default when there are class elements in the file)
  • delete: all class enrollments (of the related students) are deleted
  • CAS Authentication
  • Added provisions for CAS-based authentication.
  • To enable CAS, uncomment the CAS Authentication sections in securityContext.xml and web.xml (see the comments there).
  • Localization
  • Added en_UK locale: it is much like the default, except of time (24-hour format) and date (day before moth) formatting.
  • Course Timetabling: Added ability to display assigned times in either 12-hour or 24-hour time format (based on the locale).
  • Constraint Solver
  • Course Timetabling: Deterministic Student Sectioning Customization
  • This custom sectioning assign students to groups in a deterministic way.
  • Students are ordered by their academic information (curriculum) and unique ids and assigned in this order to the first available group (configuration or lecture).
  • To enable this customization set the following parameter:
  • StudentSectioning.Class=org.cpsolver.coursett.custom.DeterministicStudentSectioning
  • Course Timetabling: Group Constraint
  • Forward checking extended to all hard group constraints (not only meet-together).
  • It is possible to avoid forward check on variables with large domains (parameter ForwardCheck.MaxDomainSize, defaults to 1000) and to limit the depth (parameter ForwardCheck.MaxDepth, defaults to 2).
  • Course Timetabling: MaxBreaks constraint
  • MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor on a day.
  • It has two parameters: a maximal number of breaks and a minimal length of a break between two classes not to be considered in the same block.
  • For example, reference _MaxBreaks:1:30_ translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes a part.
  • Course Timetabling: Class Weights
  • Added an ability to provide each class with a weight.
  • This weight is used in the time and room preferences (the preference is weighted by the "importance" of the class).
  • For instance, this can be used for classes that are only offered once in a semester to have a lower weight.
  • So that there is an incentive to put a class that is taught every week in a preferred time even if it bumps two classes (that only meet once) from their preferred times.
  • This also allows for things like giving compulsory or elective courses more weight over optional courses in the curriculum timetabling, if ever needed.
  • This feature can be enabled by the solver parameter Class Weights, two implementations are now available:
  • Default Class Weights (default): all class weights are 1.0 (so, all works as before).
  • Average Hours A Week Class Weights: a weight of a class is estimated by the average number of hours it takes during the academic session.
  • IFS: Neighborhood Search Algorithms
  • Added a general versions of Hill Climber, Great Deluge, and Simulated Annealing to the solver, with three problem independent neighboorhoods:
  • Random move just picks a random unconflicting value to a variable.
  • Random swap tries to resolve all possible conflicts (unlike with suggestions there is no limit on depth, however, no new conflict can be created by resolving an existing one).
  • Suggestion move: a variable is selected randomly, a limited depth backtracking is used to find a possible change.
  • Unlike in NeighbourSelectionWithSuggestions, the very first found suggestion is returned.
  • Added a "simple search" algorithm that combines the ifs, hill climber, and great deluge or simulated annealing in a similar way as the examination solver (or the ITC competition solver) does.
  • This algorithm is enabled by setting the Search Algorithm solver parameter to Experimental.
  • Student Scheduling: Required Reservation Constraint
  • This global constraint ensures that reservations that must be used are used.
  • That is, an enrollment is conflicting when there is a reservation for the student that must be used, but the given enrollment does not use it.
  • While the domain of the course request already does not allow for such enrollments, such an enrollment can be loaded in from the database or XML.
  • This constraint is to prevent assignment of such invalid enrollments.
  • Course Timetabling: Room Ratio
  • Changed the computation of minimal room size to round(room ratio x class limit), instead of the previous ceil(room ratio x class limit).
  • While using ceiling instead of round has some merit, this fixes the ongoing issues with the computation.
  • E.g., minimal room size of a class with limit 25 and room ratio 0.6 was 16 (as 0.6f * 25 = 15.000001 in Java) instead of the expected 15.
  • Course Timetabling: MaxWeeks constraint
  • The MaxWeeks constraint limits the number of weeks during which the given set of classes are taught.
  • It has two parameters: a maximal number of weeks during which the given set of classes can be placed and a day code indicating what days of week are considered.
  • Reference _MaxWeeks:3:48_ translates to a maximum number of 3 weeks, but only for classes that are placed on Fridays and Saturdays
  • (64 for Monday, 32 for Tuesday, 16 for Wednesday, 8 for Thursday, 4 for Friday, 2 for Saturday, and 1 for Sunday)
  • If the second parameter is zero, all days of week are considered.
  • Course Timetabling: Classes with multiple rooms
  • For each time, limit the number of room combinations (parameter General.MaxRoomCombinations, defaults to 100).
  • Domain is dynamic (not cached) in this case, preferring rooms that are available for the given time (for which the room combinations are generated).
  • Course Timetabling: Max N Hours A Day constraint
  • Added ability to consider date patterns (individual weeks).
  • When solver parameter MaxNHoursADay.ConsiderDatePatterns is set to true (this is also the new default).
  • For former behavior, set MaxNHoursADay.ConsiderDatePatterns to false.

New in UniTime 3.4 Build 320 (Sep 9, 2014)

  • Bug Fixes:
  • Add Event
  • Fixed the behavior of the "contact information changed" confirmation when an academic session is changed.
  • Original contact got incorrectly reset to the current value of the main contact when the academic session was changed.
  • Examination Detail: Enrollment Table
  • Fixed the link when clicking on another exam of a student (from his/her examination schedule).
  • The link was broken in Firefox, but it worked fine in Chrome and Safari.
  • Buildings: Update Data
  • When update of room departments is enabled for existing rooms (unitime.external.room.update.existing and unitime.external.room.update.existing.departments are set to true):
  • Reset the list of departments to what is set in the external room departments table (instead of just adding new departments from the relation).
  • This fixes the issue of adding the same department into the relation every time the Update Data is clicked.
  • Data Exchange: Academic Session Restore
  • Fixed import of travel times (location ids were not properly translated).
  • Add Instructor
  • Fixed a Tomcat issue (page fails to compile with NoSuchElementException when Apache Tomcat 7.0.50 or later is used).
  • See https://issues.apache.org/bugzilla/show_bug.cgi?id=56529 for more details (NoSuchElementException for attribute with empty string in custom tag).
  • Data Exchange: Session Restore
  • Fix Location.managerIds during restore.
  • It needs to list unique ids of the newly created departments, not the exported value.
  • Other Improvements
  • Examination Detail: Enrollments Table
  • Examinations for a student dialog: added a column (named Conflict) displaying examination conflicts.
  • Only course of the conflicting exam is displayed, following the conflict color coding (direct conflict in red, >2 exams a day in orange, back-to-back in yellow).
  • More information is available in mouse-over tooltip.
  • Conflicting class and course related events are displayed as well, also in red, with just the event name.
  • The Conflict column is only visible if there is at least one examination conflict in the student's schedule.
  • Events: Time Grid
  • Room details popup is shown whenever it is allowed to select some time in a room (mouse cursor is a cross).
  • Examination PDF Reports: Abbreviated Schedule, Individual Schedule, Instructor / Student
  • Conflicts, Schedule by Course / Period / Room, Period Chart
  • Subject field increased to 7 characters.
  • Course (number) field increased to 8 characters.
  • Section field increased to 9 characters.
  • Few additional adjustments to accommodate for the above changes.
  • Session Roll Forward
  • Do not check the target session on the SessionRollForward permission in the permission check.
  • This change allows a session administrator role to do the first step of the roll forward (there are no managers in the target academic session yet).
  • Constraint Solver Update
  • Student Scheduling: Reservations
  • Reservations that allow assignment over the class / configuration / course limit (i.e., individual reservations) have no limit cap.
  • Student Scheduling: Save XML
  • Fixed a null exception when the given file has no parent.
  • Ensure that student weights are formated with US locale (i.e., can be parsed using Float.valueOf()).
  • Student Sectioning Model
  • Extended info: Added ability to display a list of unbalanced sections
  • Maximal number of unbalanced sections to display is given by solver parameter Info.ListDisbalancedSections, defaults to zero.
  • Student Sectioning Reports
  • Added an interface that is implemented by all the reports (StudentSectioningReport).
  • Added time / availability conflicts report: unlike the existing course conflict report, conflicts are counted between individual classes.
  • Distance conflict report: changed to compute conflicts between individual classes.
  • Unbalanced sections report: list sections that are dis-balanced by more than 10%.
  • Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
  • Student Scheduling: Required Reservation constraint added
  • This global constraint ensures that reservations that must be used are used.
  • That is, an enrollment is conflicting when there is a reservation for the student that must be used, but the given enrollment does not use it.
  • While the domain of the course request already does not allow for such enrollments, such an enrollment can be loaded in from the database or XML.
  • This constraint is to prevent assignment of such invalid enrollments.
  • Student Sectioning: Student Choice Order
  • When the new solver property StudentChoiceOrder.Fast is set to true, estimate the number of choices in an offering simply by multiplying sizes of subparts that have no children.
  • This is turned on by default.
  • Student Sectioning: Course Request
  • Added a new solver parameter Sectioning.MaxDomainSize (defaults to -1) which, if set to a positive integer, effectively limits the domain size of a course request.
  • This means that offerings with hundreds of thousands of possible enrollments will only return a subset of the possible enrollments in the domain.
  • Also, an effort was made (in CourseRequest.computeEnrollments(...)) to spread the returned enrollments evenly across the (original/huge) domain.
  • Distance Metrics
  • Synchronize access to distance cache and travel times to improve thread safety.
  • IFS: neighborhood search algorithms
  • Added a general versions of hill climber, great deluge, and simulated annealing to the solver.
  • With two problem independent neighboorhoods:
  • Random move just picks a random unconflicting value to a variable
  • Random swap tries to resolve all possible conflicts (unlike with suggestions there is no limit on depth, however, no new conflict can be created by resolving an existing one)
  • Added a "simple search" algorithm that combines the ifs, hill climber, and great deluge or simulated annealing in a similar way as the examination solver (or the ITC competition solver) does.
  • Course Timetabling: Added a few problem dependent neighborhoods (only time or room is changed or swapped).
  • Added suggestion move
  • A variable is selected randomly, a limited depth backtracking is used to find a possible change.
  • Unlike in NeighbourSelectionWithSuggestions, the very first found suggestion is returned.
  • Use construction or IFS heuristics whenever there are unassigned variables.
  • Bigger neigbourhoods (swap / suggestion moves) limited by a time limit (defaults to 200ms)
  • If the limits is reached, the number of attempts is reduced to 1.
  • IFS: Hill Climber
  • Added ability not to set the HC mode on the neigbhourhoods.
  • In HC mode, the neighbourhoods (that support this feature) avoid returning worsening moves.
  • This, while improving the quality of the provided neighbourhoods, can slow down the sovler quite a bit in certain situations.
  • IFS: Step Counting Hill Climber
  • Implemented SCHC algorithm.
  • Inlike with the ordinary hill climber, there is a bound.
  • The bound is updated (to the value of the current solution) after a given number of moves.
  • Based on the given mode, either all moves, only accepted moves, or only improving moves are counted.
  • Weakening Constraints
  • Moved weakening of constraints into the standard neighbor selection (more general).
  • Also weaken all related weakening constraints when no value cannot be selected for the selected variable.
  • Course Timetable: Student Sectioning
  • Added ability to customize initial and final student sectioning.
  • All sectioning functions (that are needed in course timetabling) are accessed through TimetableModel.getStudentSectioning() interface.
  • Default (existing sectioning functionality) is wrapped with the DefaultStudentSectioning class, a custom sectioning can be provided by StudentSectioning.Class parameter.
  • Course Timetabling: Deterministic Student Sectioning
  • Deterministic implementation of the initial student sectioning.
  • This class assign students to groups in a deterministic way:
  • Students are ordered by their academic information (curriculum) and unique ids and assigned in this order to the first available group (configuration or lecture).
  • Course Timetabling: Group Constraint Forward Checking
  • Extend forward checking to all hard group constraints (not only meet-together).
  • Also include forward checking when inConflict method is used (to be consistent with computeConflicts).
  • Improved forward checking routine to avoid unnecessary pair checks.
  • Limit the depth of the forward checking (to avoid spending too much time in there).
  • Avoid forward check on variables with large domains (parameter ForwardCheck.MaxDomainSize, defaults to 1000).
  • Course Timetabling: MaxBreaks constraint
  • The MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor on a day.
  • It has two parameters: a maximal number of breaks and a minimal length of a break between two classes not to be considered in the same block.
  • For example, reference _MaxBreaks:1:30_ translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes a part.
  • Course Timetabling: XML Save
  • Ensure that student weights are formated with US locale (i.e., can be parsed using Float.valueOf()).
  • Course Timetabling: fixing (complete) solution phase
  • Limit the number of fixes by only fixing a new best solution if it was found more than 5000 iterations away from the last best solution.
  • Moved the parameters from the constructor to the initSolver method (to ensure that the parameters are properly set every time the solver starts).
  • Added a few parameters to be able enable / disable fix solution phase, or to define how often it can be executed.
  • Few more tweaks in the computation of the incremental change of the criterion.
  • Course Timetabling: Group / Flexible Constraint
  • Do not return a penalty when the constraint is hard (must be satisfied).
  • Course Timetabling: Useless Half Hours, Flexible Constraint, Broken Time Patterns, and Distribution Preferences criteria
  • Corrected computation of the incremental change of the criterion (wrong value was returned in some cases).
  • Course Timetabling: Class Weights
  • Added an ability to provide each class with a weight.
  • This weight is used in the time and room preferences (the preference is weighted by the "importance" of the class).
  • For instance, this can be used for classes that are only offered once in a semester to have a lower weight.
  • So that there is an incentive to put a class that is taught every week in a preferred time even if it bumps two classes (that only meet once) from their preferred times.
  • This also allows for things like giving compulsory or elective courses more weight over optional courses in the curriculum timetabling, if ever needed.
  • Course Timetabling: Group Constraints
  • Cache TimeLocation.getFirstMeeting.
  • This significantly improves the evaluation of precedence constraints.
  • Back-to-back sequence check: prefer conflict sets that do not contain the placement in question.
  • Course Timetabling: Placement.getNotValidReason(Assignment)
  • When the placement is invalid due to an instructor or a room that is not available, try to include the name of the conflicting event in the reason.
  • Course Timetabling: Placement Validity Check (e.g. used in purging invalid values)
  • Exclude weakening constraints from the check (a value that may become valid later in the search process should not be removed from the domain).
  • Student Scheduling Assistant
  • Display the allowed time conflicts note (Overlaps with x) in red color.
  • There is also a warning icon next to each class that has a time conflict.

New in UniTime 3.2 Build 125 (Feb 21, 2011)

  • User interface:
  • Add/Edit Instructional Type
  • Avoid "JspException: Cannot find bean under name itypesList" runtime exception when form validation fails.
  • For instance, when a user attempts to create an instructional type with an existing IType.
  • Instructional type that has children types cannot be deleted.
  • Student Scheduling Assistant
  • Free time requests on the Timetable view
  • show free time statement in the top left corner of the red box.
  • Data Exchange:
  • Course Offering Import
  • Fixed NonUniqueResultException when looking for a matching date pattern.
  • There is nothing in the user interface preventing users to create two date patterns with the same type and dates (first matching one is used in this case).
  • Only create "Week .." date patterns (out of event meeting dates) for classes imported using elements.
  • Classes imported using datePattern attribute (of element) or using elements should keep their matching / generated patterns.
  • Other Changes:
  • Google Chrome Frame
  • When Google Chrome Frame is used it tends to cache redirects (despite of all the expires, pragma, cache-control meta tags).
  • To avoid caching, when chrome frame is detected, a timestamp parameter (named noCacheTS) is added to every redirect (overriding HttpsServletResponse.sendRedirect). - This should fix various navigation issues, e.g., going back and forth while creating a new event.
  • Minor technology update
  • GWT updated to version 2.2.0 (was 2.1.1)
  • Constraint solver updated with the latest version (1.2.31)
  • Added course reservations.
  • Added ability to enroll students with individual reservation over the class / course / section limit.
  • Fixed NullPointerException when last-like student course requests are involved (after a recent change (reservations), first last-like adept got ignored).

New in UniTime 3.2 Build 120 (Feb 2, 2011)

  • User interface:
  • Student Scheduling Assistant:
  • Adopted to use the new priority weighting model
  • adding penalization for sections without time assignment, over
  • expected sections, and sections that have a different time or
  • instructor than selected
  • Only show Enroll button when it is available
  • Show LoadingWidget while waiting
  • Display free time requests as red background in the timetable grid
  • Examination Timetable
  • Date filter corrected for the case when session start date is in a different year than the period.
  • Event Timetable:
  • Room Timetable: Only show rooms that can be used for event management.
  • Scheduling Subpart Detail / Edit
  • Added student allow overlap toggle.
  • If checked, students will be allowed to take classes from this
  • subpart even when they are overlapping with other classes.
  • Constraint Solver Update (CPSolver 1.2.29)
  • Student Sectioning Solver:
  • New priority weighting model:
  • total student weight is between zero and one (one means student got
  • the best schedule)
  • weight of the given priority course is higher than sum of the
  • remaining weights the student can get
  • first alternative is better than the following course
  • second alternative is better than the second following course
  • distance conflicts are considered secondary (priorities should be
  • maximized first), and only counted on the lower priority course
  • time overlaps can cut up to 50% of the weight on both courses that
  • overlap (when overlapping completely)
  • if alternative sections are otherwise equal, the better balanced one
  • is preferred
  • New equal weighting model:
  • all course (non alternative) requests have equal weight
  • first alternatives have lower weight than first choices, but equal
  • among themselves
  • second alternatives have lower weight than first alternatives,
  • alternative course requests than second alternatives
  • distance conflicts are considered secondary, and only counted on
  • the lower priority course
  • time overlaps can cut up to 50% of the weight on both courses that
  • overlap (when overlapping completely)
  • if alternative sections are otherwise equal, the better balanced one
  • is preferred
  • Time overlaps:
  • added ability for some classes to overlap (time overlap is
  • minimized) -- to be defined on scheduling subparts
  • minimize overlaps with free times (when those cannot be fully
  • satisfied)
  • Batch sectioning improvements:
  • added a new priority based construction phase
  • enforce course and configuration limits
  • Section balancing:
  • Small weight is removed from assignments that further dis-balance
  • a section
  • Small weight is added to assignments that better balance the section
  • Target balance:
  • Sections with limits: section limit x ( subpart enrollment /
  • subpart limit )
  • Unlimited sections: subpart enrollment / number of sections in
  • the subpart
  • Student weights parameters were added to solver configuration.
  • Load information about whether student overlaps are allowed.
  • Apache Tomcat 7 Compatibility Issues
  • Query Log:
  • Fixed the AbstractMethodError in QueryLogFilter (by changing the
  • HttpServletRequestWrapper to be a Java Proxy)
  • Various Pages:
  • Corrected syntax to meet the new Tomcat 7 validation
  • Bug Fixes:
  • Course Timetabling Database Loader
  • Avoid meetings outside of the session (IndexOutOfBoundsException:
  • bitIndex < 0: -167)
  • Other Changes:
  • Data Exchange:
  • Course Offering Import: student overlaps should be disabled by
  • default.

New in UniTime 3.2 Build 107 (Dec 23, 2010)

  • a better approach seems to be to set normalization decrease factor to 1.0 in a solver configuration (and alter the other time preference weights accordingly)

New in UniTime 3.2 Build 93 RC 3 (Dec 1, 2010)

  • BUG FIXES & OTHER IMPROVEMENTS
  • First Release of UniTime 3.2 (Release Candidate 3)
  • Look & feel changes
  • Menu on the top of the page or on the side
  • Can be changed in user preferences (user.menu.style property)
  • User / solver info -> solver, user, session components under page title
  • Back button (does not work well in Chrome)
  • Help page opens in a dialog
  • A disclaimer message (in HTML format) can be added at the bottom of every page.
  • Value of the application property tmtbl.page.disclaimer.
  • Room & building coordinates can be in GPS
  • A map showing the room's location can be displayed on the Room Detail page
  • Edit pages can use Google maps to enter coordinates
  • Non-university locations can have GPS coordinates set
  • Rooms can ignore distances (not just non-university locations)
  • More informative tooltips
  • Events (all pages): show tooltip on locations including name, display name, room type, minimap,
  • capacity, global groups and features
  • Classes, Instructional Offerings: show enlarged version of the time preferences table as tooltip
  • for time preferences icon
  • Examinations: show enlarged version of the period preferences table as tooltip for period
  • preferences icon
  • Classes, Instructional Offerings, Examinations: show list of distribution objects in the tooltip
  • of a distribution preference
  • Classes, Instructional Offerings, Examinations: show a bigger tooltip for room and building preferences
  • (including minimap and capacity, global room/features for rooms)
  • Rooms: show a bigger tooltip for room sharing, exam period preferences, room and building names
  • New version of people lookup dialog
  • Show each person only once (merging information from various sources)
  • Only people having external id are displayed (external id is used to merge contact information)
  • Except on events, where people without external id are displayed in gray and at the bottom of the list
  • It is now possible to search people by email as well
  • Suggestions, Class Assignment, Examination Assignment, Date pattern preview, wiki help
  • Use GWT-based dialog box instead of opening a new browser window
  • Suggestions, Class/Examination Assignment -refresh the parent page when a new assignment is made
  • Event Timetable
  • Timetable of a room, person, department, curriculum, subject area
  • Including all events, calendar-like time grid as well as list, export to iCalendar
  • Solver changes
  • Added ability to use GPS coordinates
  • Back-to-back distance student conflict are now based on break times
  • Course demand can be based on
  • Last-like student enrollments
  • Projected course demands (last-like + curriculum projections)
  • Curriculum-based (with or without last-like information)
  • Current student enrollments
  • Student course requests
  • Student sectioning in course timetabling changes
  • Students can be moved among committed classes as well
  • May or may not include courses that do not have any classes of the problem (default only for
  • curriculum-based demands where students are made up)
  • New features
  • Curriculum-based Course Timetabling
  • Curriculum Projections page
  • Curricula / Curriculum Edit / Curriculum Details page
  • Curricula section on Instructional Offering Details page
  • Academic Areas, Classifications, Majors, Minors administrative page
  • Curricula XML export/import
  • Student Sectioning Assistant
  • Still more of a demo as it only allows for class assignment changes (with no rescheduling)
  • Student Course Requests page for collecting student pre-registration (must be enabled by
  • session status)
  • Other
  • Update of underlying technologies
  • Constraint Solver Library 1.2
  • Hibernate 3.5, Struts 1.3.10, iText 5.0.2, GWT 2.1
  • Unified sending of emails
  • Replaced Hibernate Synchronizer with a home-made class
  • Code cleanup
  • Queue for roll-forward and data exchange
  • Online documentation moved to help.unitime.org (powered by Google Sites)
  • Added default implementation of LDAP external uid lookup, translation between uid and external id
  • Excessive days/months on sessions/date patterns made more general.
  • Few improvements to the Timetable (grid) page (e.g., show event when a solution from the database is
  • displayed).
  • Room allocation report (Solvers Reports page) improved (counting of weekly hour usage)
  • Select Academic Session / Select User Role: table or roles / sessions made sortable, default order
  • by session (last session first)
  • Event Detail: added Inquire button (an email is sent, a message is added to events history); added
  • ability to attach a file to a approve / inquiry / reject email
  • Events / Meetings: added export to CSV; added enrollment counts for exam and course related events;
  • added filter by day of week and time
  • Woebegon example contains a new term (Fall 2010) with few example curricula defined
  • Examination Assignment page, examination reports: for the sake of consistency, exam size (if set)
  • overrides the number of students on an exam in all cases (not just for the examination solver)
  • Exporting an iCalendar now produces a URL that can be shared.
  • Manage Solvers: it is now possible to unload a (working) solver
  • Hibernate configuration files: all table names are now in lower-case avoiding the need to set MySQL to
  • case insensitive mode on Linux based systems
  • Timetable: added ability to show/hide non-class events
  • It is now possible to create an academic session over a whole year (but not longer than a year)
  • Events: when filtering rooms by non-university location room type, added ability to select the room
  • from a drop down box
  • Rooms: added navigation
  • Added optional registration
  • License update to GNU General Public License, Version 3 (was Version 2)
  • Added list of dependencies (including URLs, copyrights, and licenses)
  • Added query log (Page Statistics page)
  • Examinations: Added ability to automatically put a preference on an original building (i.e., building of
  • a room in which the related class took place)
  • Course timetabling solver: handling of meet with constraint improved
  • Course offerings: course number can be in lower case (automatic conversion to upper case is disabled when
  • tmtbl.courseNumber.upperCase property is set to false)
  • Fixes
  • All recent fixes of UniTime 3.1 are included (see below)
  • Personal Schedule -fixed the ability to change sessions for an administrator looking up a student's schedule
  • Fixed a problem in people lookup (single quotation marks were not escaped)
  • Preview of a date pattern -window size increased to fit more months
  • Delete Session -all room group / feature relations were deleted (not just the ones of the session)
  • Added workaround for a Java Bug 4466485 (URL.getFile() may return for spaces on Windows).
  • UniTime 3.1 Bug Fixes & Other Improvements
  • PDF Exam reports
  • Reports Queue
  • Process only one report at a time by putting all requests for a PDF exam report into a queue.
  • Display current queue (of PDF exam reports) on the page, if it is not empty.
  • There is also an ability to delete a request from the queue before it is processed.
  • Also show reports (including log and output files) that were finished during the last hour.
  • Exam Verification Report -Class not full-term message
  • Fixed an issue with the message not being printed in some cases (POL 10100).
  • Session Roll-Forward
  • After rolling forward last like demand data, update the last like demand counts on the Course Offerings.
  • Fix bug where solver groups were not being placed on the timetable managers during roll forward.
  • Data Exchange
  • Student Enrollment Import
  • Update class / course enrollments by default.
  • Fixed the queries that do the update to work on MySQL as well.
  • When classes have no external ids, allow the given external id (in the XML file) to match on the class name.
  • Student Sectioning Import
  • If a new student is created, set all required properties.
  • Update both sides of the course request relations (student demands requested courses) to avoid
  • Hibernate cache issues.
  • Other
  • When a manager of a class is changed, not only delete all related class assignments (class belongs to
  • a different problem), but also delete the related class event.
  • This (class having an event associated but no committed assignment) was causing a problem on the
  • Class Assignment page.
  • Fixed a bug that was introduced in October 2009 -exam print offset got completely ignored.
  • Fixes related to an old date patterns change (adding extra 3 months before and after the data pattern,
  • from Jul)
  • Exam print offset got completely ignored
  • Week filter on Timetable page fixed
  • Course timetabling solver -room availability was incorrect (all meetings got shifted by these 3 months).
  • Room Allocation report (Solution Reports page) fixed.
  • Add Event: Changed location search to use an in statement when searching for room groups rather than
  • an or statement. This makes the search more efficient.
  • Examination conflicts: query returning overlapping course meetings with required attendance improved
  • Add Event: fixed a problem with creating a course event with >1000 students
  • Enrollment Audits: Ensure the correct enrollment is used for the audit results when a student is enrolled
  • in multiple names of a cross listed course.
  • Edit Date Pattern: fixed ArrayIndexOutOfBoundsException when pattern offset is negative, assumption about
  • the days of weeks corrected
  • Class Assignment: remove all related constraint infos to avoid hibernate cache issues when an orphaned
  • constraint info is automatically deleted
  • This should fix the ObjectNotFoundException on the Class Assignment page
  • Student sectioning: check for LazyInitializationException during save
  • Remote solver server: added ability to override database connection string by the
  • tmtbl.solver.connection.url property
  • Examination verification report: limit the length of the scheduling note to fit within one line

New in UniTime 3.1 Build 284 (Oct 20, 2010)

  • BUG FIXES & OTHER IMPROVEMENTS
  • PDF Exam reports
  • Reports Queue
  • Process only one report at a time by putting all requests for a PDF exam report into a queue.
  • Display current queue (of PDF exam reports) on the page, if it is not empty.
  • There is also an ability to delete a request from the queue before it is processed.
  • Also show reports (including log and output files) that were finished during the last hour.
  • Exam Verification Report -Class not full-term message
  • Fixed an issue with the message not being printed in some cases (POL 10100).
  • Session Roll-Forward
  • After rolling forward last like demand data, update the last like demand counts on the Course Offerings.
  • Fix bug where solver groups were not being placed on the timetable managers during roll forward.
  • Data Exchange
  • Student Enrollment Import
  • Update class / course enrollments by default.
  • Fixed the queries that do the update to work on MySQL as well.
  • Other
  • When a manager of a class is changed, not only delete all related class assignments (class belongs to a different problem), but also delete the related class event.
  • This (class having an event associated but no committed assignment) was causing a problem on the
  • Class Assignment page.

New in UniTime 3.1 Build 264 (May 26, 2010)

  • BUG FIXES & OTHER IMPROVEMENTS
  • Student Sectioning
  • Added a set of Enrollment Audit PDF reports.
  • Enrollments Violating Course StructureThis report lists where students are enrolled in a class that has
  • a parent class but the student is not enrolled in the parent class.
  • Missing Course EnrollmentsThis report lists where student are enrolled in a course offering but are not
  • enrolled in a class in each of the subparts within a configuration of the courses offering.
  • Multiple Course EnrollmentsThis reports lists where students are enrolled in more than one class within
  • a subpart. If a student is allowed to enroll in a course offering more than once in a term this student will
  • be listed here as well.
  • Session Roll-Forward
  • Fixed bug that occurred when rolling forward courses that do not have a unique subject area and course number.
  • Added functionality to push class time patterns up to the scheduling subpart level as part of the roll forward
  • of scheduling subparts.
  • Fixed bug with rolling forward a room preference for a room that does not have an external id.
  • The course offering roll forward is being modified to do the following:
  • 1. An option has been added to allow the user to select whether or not to roll forward subpart level time
  • preferences. The default is for these preferences to roll forward as is. Required stays required, prohibited
  • stays prohibited, etc. If the user chooses not to roll forward subpart level time preferences the time patterns
  • will remain but the time preferences for those patterns a removed.
  • 2. An option has been added to allow the user to select whether or not to roll forward subpart level location
  • preferences. The default is for these preferences is to roll forward as is. If the user chooses not to roll
  • forward subpart level location preferences, no room, building, room feature or room group preferences are moved
  • forward.
  • 3. An option has been added to allow the user to promote appropriate class preferences to the subpart level.
  • The default is to do nothing with class level preferences. If the user selects to promote the appropriate
  • class preferences to the subpart level and the scheduling subpart does not already have a room preference,
  • then any room preferences that exist on all classes within a scheduling subpart are moved to the subpart
  • level as is. The same rule applies to building, room group, and room feature preferences. In this case
  • required stays required, prohibited stays prohibited, etc. If a scheduling subpart does not have any time
  • patterns assigned to it, all time patterns on its child classes will be pushed up the the subpart level.
  • In addition if the same time preference exists on all classes within a scheduling subpart and does not
  • contain any requires or prohibits then that time preference is also moved to the subpart level.
  • PDF Exam reports speedup
  • Preloading student exam enrollments (this broke with the change for cross-listed exams).
  • Preloading Class_ -> ClassEvent relation.
  • When solver is used, preload crosslisted exams (solver does not know about them, it takes too long to load
  • them one by one).
  • Removed relation Class_-> sectioningInfo (using SectioningInfo -> Class_ instead where needed) to avoid
  • unnecessary queries.
  • Few other small changes.
  • Configuration
  • Hibernate DTDs bundled with the application.
  • This is to avoid application deployment problems when Hibernate is unable to validate configuration because
  • of a poor internet connection.
  • See Q9 of http://wiki.unitime.org/Timetabling_Installation_FAQ
  • Simplified JAAS configuration by using tmtbl.authenticate.modules rather than .java.login.config file.
  • It contains a semicolon separated list of authentication modules with their configuration flag.
  • Default is sufficient DbAuthenticateModule;sufficient LdapAuthenticateModule
  • Ldap module is ignored if LDAP provider is not set
  • Changes to Database Update to allow custom add on packages to UniTime to install their own database updates
  • on startup.
  • Other
  • Instructors: When application property tmtbl.instructor.allowExternalIdEdit exists and is set to true, it is
  • allowed to edit instructor external id.
  • Rooms: Corrected display of departmental room groups and features (i.e., display departmental features/groups
  • of the selected department).
  • Added many to many relation between curricula and majors.
  • Class assignment: Avoid throwing an exception when given dates are empty (this fixes the issue with SCI
  • 90900 Ind 1).
  • Modified Time Pattern Edit to allow a time pattern that is in use to be edited if the session is in the
  • Initial Data Load status and the "tmtbl.time_pattern.initial_data_load.editable" application property is set
  • to true. By default this value is "false".
  • If a time pattern is edited in this state, all time preferences that refer to the time pattern will have
  • their preference string set back to null. This is because modifying a time pattern changes the layout of
  • the preference string for that time pattern so existing preferences using that time pattern are no longer
  • valid.

New in UniTime 3.1 Build 248 (Apr 8, 2010)

  • BUG FIXES & OTHER IMPROVEMENTS
  • Timetable page (containing the time grid)
  • Added following properties in order to be able to change the periods in which the time is printed (30 minutes periods starting 7:30am by default). The default values are as follows:
  • tmtbl.timeGrid.slotsPerPeriod=6 # Number of time (5-minute long) slots per period
  • tmtbl.timeGrid.firstDaySlot=90 # 90 5-minutes slots from midnight ~ 7:30 am
  • tmtbl.timeGrid.lastDaySlot=209 # last day slot 5:25 pm5:30 pm
  • tmtbl.timeGrid.lastEveningSlot=275 # last evening slot 10:55 pm11:00 pm
  • Instructional Offerings
  • Put in temporary change to prevent users from entering 9999 in the "Number of Classes" field on the
  • "Instructional Offering Configuration" edit page. If the user enters 9999 in the field when they leave the field the value is set to 0.
  • Remove restriction from Instructional Offering Configuration edit page that prevented the user from
  • creating more than one class per scheduling subpart when working with a configuration marked as having unlimited enrollment.
  • Added display of infinity symbol to limits column for classes that are part of unlimited enrollment configurations. Changed drunken 8 to be a true infinity symbol.
  • Limit size of number of classes field to 3 digits on the Configuration Edit screen.
  • Class Assignment
  • Toggle "Do not unassign conflicting classes" moved to a more appropriate place (under the table with
  • new assignments). The conflicting assignments are now recomputed on change.
  • Added ability to filter the list of rooms by room types, global room groups and global room features.
  • Examination Assignment
  • Added ability to filter the list of rooms by room types, global room groups and global room features.
  • Examination Reports
  • Removed number of registered students from the Exam Statistics Report as this number may be misleading (it could include last-like students).
  • Administration
  • Manage Solvers: Improved checking for solver inconsistencies (fewer exceptions should be thrown when a solver instance is caught in an inconsistent state)
  • Other
  • If an exception is seen print a warning message (including request URI, user login and request parameters for easier debugging).
  • Fixed broken compatibility with Java 5.

New in UniTime 3.1 Build 129 (Dec 28, 2008)

  • Suggestions (Interactive Solver for Course Timetabling)
  • Following improvements have been implemented:
  • order values (placements) by their impact on the objective function,
  • bound improved (estimate the solution value by taking the best possible value for unresolved variables).
  • Personalized Schedule:
  • Significantly improved loading speed of student examination schedule and conflicts by tweaking the ExamAssignmentInfo model (only conflicts related to the student are generated and/or loaded).
  • Changed message to read "Examination Conflicts and/or Back-To-Back Examinations for" to lesson student confusion over whether they need to reschedule back-to-back exams.
  • Distinguish between conflicting class or course event.
  • Exam Verification Report:
  • Make sure that the last page gets printed.
  • Academic Sessions:
  • Fixed the NullPointerException problem on Add Acedemic Session page.
  • Distribution Preferences:
  • Fixed bug that occurred when a distribution preferences sequence number is not set.
  • Database:
  • Database update to version 40 fixed (Oracle)

New in UniTime 3.1 Build 122 (Oct 28, 2008)

  • Examination Timetabling:
  • Examination Reports Statistics report: fixed a typo (instructor not available instead of student not available), do not print   as space in PDF.
  • Personalized Schedule: by default read examination conflicts from cache.
  • Examination Schedule, Class Schedule: disable Apply buttons on submit.
  • Fixed bug that did not submitted the screen in IE.
  • Distribution Types: Fix bug that occurred when user was not a TimetableManager.
  • Examination Periods: Fix case where number of students is divisible by 1000 (computation of student conflicts).
  • Course Timetabling:
  • Course Offering Import: Fixed bug that occurred during the Course Offering Import when a class changed itypes.
  • Distribution Types: Fix bug that occurred when session was null.
  • Preference Groups: Fixed bug in isEditableBy, now returns false if the user does not have a role.
  • Preference Groups: Fixed bug in isViewableBy(User) caused when the user does not have a role.
  • Event Management:
  • Fixed bug that occurred when writing to the change log after deleting a meeting from an event.