Skip to content

UniTime 4.0 build 12

Compare
Choose a tag to compare
@tomas-muller tomas-muller released this 20 Apr 11:08
· 3464 commits to master since this release

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.