Skip to content

Releases: UniTime/unitime

UniTime 4.1 build 94 (Alpha 2)

23 Oct 06:39

Choose a tag to compare

Pre-release

Changes from UniTime 4.1.92, Alpha 1

Data Exchange: Course Offering Import / Export

  • added ability to export and import cancelled classes
  • if a class does not have an external id, fall back to the class label (e.g., ALG 101 Lec 1)
  • added ability to import examinations together with the courses (including period and room assignments)

Course Timetabling: Student Course Demands

  • fixed a bug that is causing all student course demands that are using made up students to squish all the course demands under a single student
    • this was caused by the generated student id not being properly set on the WeightedStudentId class
    • the bug was introduced recently, by commit bf612af

API: Online Student Scheduling

  • added online student scheduling JSON API
    • pretty much all the calls in the org.unitime.timetable.gwt.services.SectioningService are covered,
      except of those related to HTTP session attributes (e.g., last request / schedule)
    • the SectioningService is used by the Online Student Scheduling Assistant and the Online Student Scheduling Dashboard pages

Full Release Notes

Course Timetabling

Class Duration Types

  • Added ability to define different ways how class duration is entered and used in the system (to
    extend the formal Minutes per Week selection).
  • There is a new page (Administration > Other > Class Duration Types), where the class duration
    types can be managed.
    • Permission ClassDurationTypes is needed to access the page, ClassDurationTypeEdit is needed to
      make changes.
  • Default duration type can be defined on an academic session, it can be overridden on the
    instructional offering configuration level (Instructional Offering Configuration page).
    • Name of the default duration type is used in the column headers (Classes, Instructional
      Offerings), abbreviation is used to suffix durations that are using a non-default duration
      type.
  • Following class duration types have been implemented:
    • Minutes per Week (default): this is the existing behaviour (minutes per week == number of
      meetings x minutes per meeting)
    • Average Weekly Mintes: average number of minutes a class takes during a week (weekly minutes =
      number of meetings x minutes per meeting x number of weeks of the data pattern / number of
      weeks in the term)
      • Paramter: number of weeks in the term (defaults to the number of weeks of the default date
        pattern)
    • Semester Minutes: number of minutes in the semester (semester minutes == number of meetings x
      minutes per meeting x number of weeks of the data pattern)
    • Semester Hours: number of hours in the semester (semester hours == number of meetings x
      minutes per meeting x number of weeks of the data pattern / minutes in an hour)
      • Paramter: number of minutes in an hour (defaults to 50)
    • Meetings Minutes: number of minutes of all the meetings, excluding vacations (meeting minutes
      == number of meetings based on the date pattern x minutes per meeting)
      • Parameters: allowed variation of the meeting minutes, expressed as lower and upper bound
        (defaults to 0.95,1.10 -- meaning a class can have 5% less time, combinations with 10% more
        time will be also considered).
      • If the number of meetings based on the date pattern exceeds the desired number of meeting
        minutes, only meetings covering the given number of meeting minutes are created.
    • Meeting Hours: just like meeting minutes, but with hours (semester hours == number of meetings
      based on the date pattern x minutes per meeting / minutes in an hour)
      • Paramters: number of minutes in an hour and the allowed variation of the meeting minutes
        (defaults to 50,0.95,1.10 -- 50 minutes in an hour, 5% less time allowed, combinations with
        up to 10% excess time are considered).
  • It is possible to hide class duration types that are not to be used by the users.
    • If only one type is visible, there is no selection of the class duration type on the
      Instructional Offering Configuration page.

Cancelled Classes

  • Added ability to cancel a class.
  • Multiple Class Setup page: class with enrolments cannot be deleted, but it could be cancelled
    instead.
  • Cancelled classes retain their committed assignment, but the appropriate class event is
    cancelled.
  • Cancelled classes are not loaded into the course timetabling solver.
  • Cancelled classes cannot be edited or re-assigned and they do not block the room or instructor.
  • When a cancelled classes is reopened, the appropriate event is also re-approved.
    • This could cause conflicts, that have to be manually resolved.
  • In student scheduling, cancelled classes are avoided (no valid enrollment can contain
    a cancelled class).
  • In online student scheduling, it is possible to keep existing students in cancelled classes when
    solver configuration parameter named Enrollment.CanKeepCancelledClass is set to true (defaults
    to false).
  • New permissions:
    • Class Delete: ability to delete a class (class cannot be deleted when there is a committed
      solution and at least one student enrolled in the class)
    • Class Delete No Enrollment Check: this permission overrides the enrollment check from the
      Class Delete permission (not given to any role by default)
    • Class Cancel: ability to cancel a class (there must be a committed solution)
    • The Class Delete and Class Cancel permissions are by default given to all roles that have
      Multiple Class Setup Class and / or Class Edit permissions.
  • Added a new permission (named Class Delete No Enrollment Check) that overrides the enrollment
    check from the Class Delete permission.
    • No role is given this permission by default.
  • Make Not-Offered: It is allowed to make an offering not-offered only when there are no students
    enrolled, there is no committed solution, or the user has the Class Delete No Enrollment Check
    permission.
  • Cross Lists: it is allowed to remove a cross-listed course from an offering only when there are
    no students enrolled, there is no committed solution, or the user has the Class Delete No
    Enrollment Check permission.

Conficting Classes

  • Class Detail: Display conflicting classes.
    • There is a new table called Conflicting Classes, just below the Timetable section.
    • The table is only visible when the class is conflicting with some other class (or classes).
    • The same checking as on the Class Assignment page is used.
  • Instructional Offering Detail: Highlight conflicting classes with light red background.
    • Conflicting classes are listed in the tooltip (more details are provided on the Class Detail
      page, see above).
  • Conflict checking: avoid showing conflicts between classes that can overlap because of the Can
    Share Room or the Meet Together distribution.

Instructional Methods

  • Added instructional methods lookup table. Each method has a reference and a label.
  • Example instructional methods: Online, Hybrid, or Face-to-Face.
  • Instructional offering configuration can have an instructional method set.
  • If set, instructional method appear on various pages, including the Scheduling Assistant and
    Events.
  • It is usually included in the Type column, next to the instructional type, e.g., Lecture
    (Online).

Multiple-Major Curricula

  • A curriculum has a new property named multiple majors (boolean, default to false).
  • If a curriculum is marked as multiple-major: a student meets the curriculum only when he/she has
    all the selected majors (not one of the selected).
  • A multiple-major curriculum will inherit course projections from curricula that have no or one
    of the matching majors.
  • There can be multiple curricula that get combined together to form a multiple-major curriculum.
  • If a course is on several curricula, the highest percent share (of the particular
    classification) will be used.
  • These shares can be overridden on the multiple-major curriculum, but no courses can be deleted
    (course projection must be set to zero instead).
  • The parent (single or no major curricula) can have zero requested students, only acting as
    templates for the multiple-major curricula.
  • If there is no multiple-major curriculum, everything works like before.

Reservations

  • Remember last sort in the reservation cookie.
  • Added Previous / Next buttons (Edit Reservation).
  • Added confirmation message when deleting a reservation (Edit Reservation).

Rooms

Overview

  • The room pages have been completely rewritten using the Google Web Toolkit.
  • The new pages are localizable, they are using the same Room Filter as is used in the event
    management, and they are allowing a change to propagate over to the future academic sessions as
    well.
  • It is also possible for users that are not managers in UniTime (e.g., instructors) and/or that
    have no relation to a particular department (e.g., students) to be allowed to use the new rooms
    pages.
  • When accessed from the Events menu, the Rooms, Room Groups and Room Features pages contain the
    selection of an academic session, just like the Events page.
  • It is possible to use the old pages by setting the application property unitime.legacy.rooms to
    true (defaults to false).

Rooms

  • The Rooms page now contains a Room Filter and a table with many features.
  • The table of rooms can be sorted by a given column, can show pretty much any room property, and
    it can be exported to PDF or CSV.

Add/Edit Room

  • Add Room and Edit Room page now contains all the functionality of the various edit pages that
    were accessible from the Room Detail page.
  • Moreover, it is now possible to make the update the room in the (selected) future academic
    sessions as well.
  • Only selected groups of properties can be updated in a particular future session.

Edit Room Departments

  • The page can be used to assign multiple rooms to a particular department or examination
    problem).
  • The page is only accessible when a departm...
Read more

UniTime 4.1 build 92 (Alpha 1)

21 Oct 11:38

Choose a tag to compare

Pre-release

Course Timetabling

Class Duration Types

  • Added ability to define different ways how class duration is entered and used in the system (to
    extend the formal Minutes per Week selection).
  • There is a new page (Administration > Other > Class Duration Types), where the class duration
    types can be managed.
    • Permission ClassDurationTypes is needed to access the page, ClassDurationTypeEdit is needed to
      make changes.
  • Default duration type can be defined on an academic session, it can be overridden on the
    instructional offering configuration level (Instructional Offering Configuration page).
    • Name of the default duration type is used in the column headers (Classes, Instructional
      Offerings), abbreviation is used to suffix durations that are using a non-default duration
      type.
  • Following class duration types have been implemented:
    • Minutes per Week (default): this is the existing behaviour (minutes per week == number of
      meetings x minutes per meeting)
    • Average Weekly Mintes: average number of minutes a class takes during a week (weekly minutes =
      number of meetings x minutes per meeting x number of weeks of the data pattern / number of
      weeks in the term)
      • Paramter: number of weeks in the term (defaults to the number of weeks of the default date
        pattern)
    • Semester Minutes: number of minutes in the semester (semester minutes == number of meetings x
      minutes per meeting x number of weeks of the data pattern)
    • Semester Hours: number of hours in the semester (semester hours == number of meetings x
      minutes per meeting x number of weeks of the data pattern / minutes in an hour)
      • Paramter: number of minutes in an hour (defaults to 50)
    • Meetings Minutes: number of minutes of all the meetings, excluding vacations (meeting minutes
      == number of meetings based on the date pattern x minutes per meeting)
      • Parameters: allowed variation of the meeting minutes, expressed as lower and upper bound
        (defaults to 0.95,1.10 -- meaning a class can have 5% less time, combinations with 10% more
        time will be also considered).
      • If the number of meetings based on the date pattern exceeds the desired number of meeting
        minutes, only meetings covering the given number of meeting minutes are created.
    • Meeting Hours: just like meeting minutes, but with hours (semester hours == number of meetings
      based on the date pattern x minutes per meeting / minutes in an hour)
      • Paramters: number of minutes in an hour and the allowed variation of the meeting minutes
        (defaults to 50,0.95,1.10 -- 50 minutes in an hour, 5% less time allowed, combinations with
        up to 10% excess time are considered).
  • It is possible to hide class duration types that are not to be used by the users.
    • If only one type is visible, there is no selection of the class duration type on the
      Instructional Offering Configuration page.

Cancelled Classes

  • Added ability to cancel a class.
  • Multiple Class Setup page: class with enrolments cannot be deleted, but it could be cancelled
    instead.
  • Cancelled classes retain their committed assignment, but the appropriate class event is
    cancelled.
  • Cancelled classes are not loaded into the course timetabling solver.
  • Cancelled classes cannot be edited or re-assigned and they do not block the room or instructor.
  • When a cancelled classes is reopened, the appropriate event is also re-approved.
    • This could cause conflicts, that have to be manually resolved.
  • In student scheduling, cancelled classes are avoided (no valid enrollment can contain
    a cancelled class).
  • In online student scheduling, it is possible to keep existing students in cancelled classes when
    solver configuration parameter named Enrollment.CanKeepCancelledClass is set to true (defaults
    to false).
  • New permissions:
    • Class Delete: ability to delete a class (class cannot be deleted when there is a committed
      solution and at least one student enrolled in the class)
    • Class Delete No Enrollment Check: this permission overrides the enrollment check from the
      Class Delete permission (not given to any role by default)
    • Class Cancel: ability to cancel a class (there must be a committed solution)
    • The Class Delete and Class Cancel permissions are by default given to all roles that have
      Multiple Class Setup Class and / or Class Edit permissions.
  • Added a new permission (named Class Delete No Enrollment Check) that overrides the enrollment
    check from the Class Delete permission.
    • No role is given this permission by default.
  • Make Not-Offered: It is allowed to make an offering not-offered only when there are no students
    enrolled, there is no committed solution, or the user has the Class Delete No Enrollment Check
    permission.
  • Cross Lists: it is allowed to remove a cross-listed course from an offering only when there are
    no students enrolled, there is no committed solution, or the user has the Class Delete No
    Enrollment Check permission.

Conficting Classes

  • Class Detail: Display conflicting classes.
    • There is a new table called Conflicting Classes, just below the Timetable section.
    • The table is only visible when the class is conflicting with some other class (or classes).
    • The same checking as on the Class Assignment page is used.
  • Instructional Offering Detail: Highlight conflicting classes with light red background.
    • Conflicting classes are listed in the tooltip (more details are provided on the Class Detail
      page, see above).
  • Conflict checking: avoid showing conflicts between classes that can overlap because of the Can
    Share Room or the Meet Together distribution.

Instructional Methods

  • Added instructional methods lookup table. Each method has a reference and a label.
  • Example instructional methods: Online, Hybrid, or Face-to-Face.
  • Instructional offering configuration can have an instructional method set.
  • If set, instructional method appear on various pages, including the Scheduling Assistant and
    Events.
  • It is usually included in the Type column, next to the instructional type, e.g., Lecture
    (Online).

Multiple-Major Curricula

  • A curriculum has a new property named multiple majors (boolean, default to false).
  • If a curriculum is marked as multiple-major: a student meets the curriculum only when he/she has
    all the selected majors (not one of the selected).
  • A multiple-major curriculum will inherit course projections from curricula that have no or one
    of the matching majors.
  • There can be multiple curricula that get combined together to form a multiple-major curriculum.
  • If a course is on several curricula, the highest percent share (of the particular
    classification) will be used.
  • These shares can be overridden on the multiple-major curriculum, but no courses can be deleted
    (course projection must be set to zero instead).
  • The parent (single or no major curricula) can have zero requested students, only acting as
    templates for the multiple-major curricula.
  • If there is no multiple-major curriculum, everything works like before.

Reservations

  • Remember last sort in the reservation cookie.
  • Added Previous / Next buttons (Edit Reservation).
  • Added confirmation message when deleting a reservation (Edit Reservation).

Rooms

Overview

  • The room pages have been completely rewritten using the Google Web Toolkit.
  • The new pages are localizable, they are using the same Room Filter as is used in the event
    management, and they are allowing a change to propagate over to the future academic sessions as
    well.
  • It is also possible for users that are not managers in UniTime (e.g., instructors) and/or that
    have no relation to a particular department (e.g., students) to be allowed to use the new rooms
    pages.
  • When accessed from the Events menu, the Rooms, Room Groups and Room Features pages contain the
    selection of an academic session, just like the Events page.
  • It is possible to use the old pages by setting the application property unitime.legacy.rooms to
    true (defaults to false).

Rooms

  • The Rooms page now contains a Room Filter and a table with many features.
  • The table of rooms can be sorted by a given column, can show pretty much any room property, and
    it can be exported to PDF or CSV.

Add/Edit Room

  • Add Room and Edit Room page now contains all the functionality of the various edit pages that
    were accessible from the Room Detail page.
  • Moreover, it is now possible to make the update the room in the (selected) future academic
    sessions as well.
  • Only selected groups of properties can be updated in a particular future session.

Edit Room Departments

  • The page can be used to assign multiple rooms to a particular department or examination
    problem).
  • The page is only accessible when a department or an examination problem is selected in the Room
    Filter.
  • The page is now using the same table of rooms as the Rooms page and it is populated by all the
    rooms matching the Room Filter (except of the selected department / examination problem).
  • Rooms not matching the Room Filter are left unchanged.

Room Groups / Features

  • The Room Groups and Room Features pages also use the Room Filter to list rooms (and matching
    room features and groups).
  • The Add and Edit pages are also using the same table as on the Rooms page with the list of rooms
    populated by all the rooms matching the Room Filter.
  • Rooms not matching the Room Filter are left unchanged.
  • When creating / updated a room group or feature, it is possible to select one or more future
    academic sessions that would be updated as well.
    • Besides of the properties of the group (or feature) like name, abbreviation department, etc.,
      only rooms with a change are updated.
    • This means that the future group (or feature) is NOT reset to the rooms that are currently
      selected on the group (or feature).

Examination Timetab...

Read more

UniTime 4.0 build 37

08 Oct 11:36

Choose a tag to compare

Bug Fixes

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).

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.

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/9nyu0U 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 3.5 build 244

08 Oct 11:29

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

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

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

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

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

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

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.