Skip to content

Releases: UniTime/unitime

UniTime 3.5 build 244

08 Oct 11:29
Compare
Choose a tag to compare

Bug Fixes

Online Student Scheduling: Custom Student Enrollment Interface

  • Fixed an issue with the disabled for student scheduling check (do not drop a student if he/she
    is already in the section).
  • Keep sections that cannot be dropped in the add (courseReferenceNumbers) list.
  • When a course is locked and there is a change, also mark dropped sections as failed.
  • When UniTime does not know about the student, but there is an enrollment provider capable of
    requesting updates, then use the custom eligibility check to request an update.
  • During enrollment, ensure that there is a request for any course that the student failed to drop
    because of the custom student enrollment interface rejected the drop.
  • Avoid inclusing classes that were rejected to be added by the custom student enrollment
    interface in the consecutive enrollment request.

Course Timetabling: Student Sectioning

  • Include committed student conflicts in the check whether a student swap was improving.
  • Undo the swap if it was not improving (this fixes the problem that could cause student
    sectioning to hang).

Instructional Offering Configuration

  • Fixed an issue preventing a configuration with two or more levels of parent-child relations from
    being deleted (ObjectDeletedException).

Permissions

  • Remember the roles and their order when the page is loaded, use this list for the updates.
  • This fixes the issue with the permissions getting shifted between roles as the order of the
    roles is changed between updates (number of permissions of a role is used in the ordering).

Course Timetabling: Missing Solver Group

  • Fixed a NullPointerException thrown when the solver tries to load a class that is managed by
    a department which does not have a solver group.
  • Warning "Manager of class X has no solver group." is logged instead.

Other Improvements

Course Timetabling: N Hour Work Day

  • Added constraint N Hour Work Day (where N can be 6, 7, 8, ..., 12)
  • The constraint limits the time between the start of the first class and the end of the last
    class on any day.
  • Distribution type reference is WORKDAY(N), where N is between 6 and 12.
  • The constraint needs to be registered. This can be done by a script:
    • Download the script from http://goo.gl/dCgiV6 and import it on the Administration > Academic
      Sessions > Data Exchange page.
    • Run the script Distribution Types: Create Work Day Constraints on the Administration >
      Utilities > Scripts page.

Events Lookup Backend: Personal Schedule

  • Added ability to filter events by role (student, instructor, coordinator, contact):
    • contact: only list events that has the user as main or additional contact,
    • student: only list class, course related and examination events attended by the person (as
      a student),
    • instructor: only list classes, course related and examination events with the person assigned
      as instructor,
    • coordinator: only list classes, course related and examination events with the person assigned
      as course coordinator.
  • Multiple roles can be provided (default is student, instructor, and contact).
  • Added ability to type in role (or roles) on the Personal Timetable page (but the roles do not
    show up in the Event Filter).

Event Filter: Do not count conflicting events

  • Added ability to avoid counting conflicting events in the Event Filter.
    • To be enabled by setting the application property
      unitime.events.eventFilter.skipConflictCounts to true (defaults is false).
    • This makes the component load faster, especially on MySQL.

UniTime RESTful API

  • First take on creating a RESTful API in UniTime.
  • Following conntectors have been created so far:
    • /api/events: ability to retrieve events (using the EventInterface class converted to JSON,
      example: GET UniTime/api/events?type=PERSON&ext=1001&term=Fal2010)
    • /api/json: JSON interface for GWT calls (that implement the GwtRpcRequest interface)
    • /api/exchange: to export/import UniTime's data exchange XML files
      • export example: GET UniTime/api/exchange?term=Fal2010&type=students
      • import example: POST UniTime/api/exchange (with the XML as payload)
    • /api/roles?id= returns a list of academic sessions (and roles) for a person
      (returns a list of academic sessions when there is no id parameter)
    • /api/enrollments?eventId= returns student enrollments for an event, a class (when classId
      parameter is used instead), an exam (examId), a course offering (courseId), an instructional
      offering (offeringId), or instructional offering configuration (configId)
    • /api/instructor-schedule?id=&term= returns classes, courses, and
      examinations assigned to an instructor.
    • /api/class-info?classId= returns information about a class (including assinged instructors
      and coordinators)
  • Each connector has the appropriate permission (see Api... permissions), with the ability to
    either use HTTP-simple authentication or an API token.
  • It is possible to change the hibernate cache mode for a particular API connector by setting the
    unitime.api.X.cacheMode application property (where X is the connector name).
    • For example, setting unitime.api.enrollments.cacheMode=REFRESH will make the /api/enrollments
      connector to never read the hibernate cache, but it will keep it updated.

Online Student Scheduling: Scheduling Assistant

  • If eligibility check fails, keep on displaying the eligibility check message. This makes it
    easier to see why the Submit Schedule button is not visible.
  • Added ability to execute the custom eligibility check when the Submit Schedule is pressed:
    • when the custom eligibility chek returns RECHECK_BEFORE_ENROLLMENT flag, or
    • when unitime.enrollment.recheckCustomEligibility is set tu true (defaults to false).
  • Course Requests: Added a missing notification when a course is selected using the Course Finder
    dialog.
    • This fixes the issue of the course alternative not being enabled when the course is entered
      using the Course Finder dialog.

Online Student Scheduling: Locking

  • Added ability to tune the locking using application properties.
  • For each action, it is possible to specify if the student as well as the related offerings
    should be locked.
  • By default, the following operations no longer lock offerings (they only lock the student):
    eligibility, status-change, student-email.
  • The locking can be changed by the following properties:
    • unitime.sectioning.config.X.LockOfferings (include offerings in the lock for the action named
      X)
    • unitime.sectioning.config.X.LockStudents (include student in the lock for the action named X)

Online Student Scheduling Reports

  • CSV Export: Added ability to provide the academic session as parameter. This allows for the
    exporter to be called from outside of UniTime.
  • Individual Time Overlaps: Added a new report computing individual student time conflicts. There
    are four variants:
    • Individual Student Time Overlaps lists all time conflicts, showing why a conflict is allowed,
    • Not Allowed Time Overlaps only lists time conflicts that are not allowed (and should not be
      present in the data),
    • Individual Student Time Overlaps (Exclude Break Times) lists all time conflicts, but break
      times are excluded from conflict checking,
    • Not Allowed Time Overlaps (Exclude Break Times) lists all time conflicts that are not allowed
      even when break times are excluded from conflict checking

Online Student Scheduling: Enrollments table

  • Do not list enrollment message for requests that are enrolled (enrollment message contains
    a reason why a request is not enrolled).

Data Exchange: Student Enrollments and Student Sectioning XML imports

  • The import can now work with a case where class external ids are NOT unique (e.g., when Lec 1
    and Lec 1a share the same external id).
  • Fixed an issue with dropping alternative course request (deleted object would be re-saved by
    cascade).
  • Fixed an issue with parsing free-time request days of week (Thursday, Sunday were incorrectly
    parsed).
  • Added ability to have element of an element (which is the way how
    2nd alternative is exported).
  • When a student is enrolled into an existing course request, drop the enrollment message if there
    is one (enrollment message contains a reason why a request is not enrolled).

Data Exchange: Course Offering XML export and import

  • Added course offering reserved space (reserved attribute of the course element).

Technology Update: GWT 2.7.0

  • GWT updated to version 2.7.0 (was 2.6.1).
  • Also updated CGLIB to version 3.1 (was 2.2.2), to use the same version of ASM as GWT (5.0.3, was
    3.3.1).

Timetable Managers: Show all managers

  • Added ability to hide managers that have no session independent role and no relation to the
    current academic session.
    • By default only managers that have a session independent role or at least one department of
      the current academic session are shown.
    • This can be changed by checking the "Show all managers" at the bottom of the list.

UniTime 4.0 build 17

18 May 14:39
Compare
Choose a tag to compare

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.

UniTime 3.5 build 223

18 May 14:34
Compare
Choose a tag to compare

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.

UniTime 4.0 build 12

20 Apr 11:08
Compare
Choose a tag to compare

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.CustomSQLExternalUidTransl
      ation
    • 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.

UniTime 3.5 build 218

20 Apr 11:04
Compare
Choose a tag to compare

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.CustomSQLExternalUidTransl
      ation
    • 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.

UniTime 4.0 build 2

02 Mar 13:44
Compare
Choose a tag to compare

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

UniTime 3.5 build 210

02 Mar 13:51
Compare
Choose a tag to compare

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.

UniTime 3.5 build 187

26 Jan 15:05
Compare
Choose a tag to compare

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.Determin...
Read more