Student Sectioning Data Format
Contents Input/output data format is XML, with the following structure:
<?xml version="1.0" encoding="UTF-8"?>
<!--Student Sectioning-->
<sectioning
version="1.0"
initiative="puWestLafayetteTrdtn"
term="Fal"
year="2007"
created="Wed Jun 06 09:55:42 EDT 2007"
nrDays="7"
slotsPerDay="288">
sectioning root element
versionfile version
initiativecampus designation
termsemester (e.g., 2007Spr or 2007Fal)
createdcreation time of the file
nrDaysnumber of days per week (default is 7 days, Monday through Sunday)
slotsPerDaynumber of slots per day (default is 288, 5 minute long time slots, going from midnight till midnight)
1. Definition of offerings (timetable):
<offerings>
<offering id="1">
<course id="1"/>
<config id="1">
<subpart id="1" itype="10"> <section id="1" limit="105">
<time days="1010100" start="150" length="12"
dates="00000000000000000000000000000000000000000000000000111111011111100111110111111011111101111110111111000111101111110111111011111101111110111111011000001111110111111"/> <room id="1" capacity="115" location="477,484"/>
</section>
</subpart>
</config>
</offering>
<offering id="18">
<course id="18"/>
<config id="18">
<subpart id="23" itype="10">
<section id="50" limit="20">
<time days="1000000" start="102" length="12"
dates="00000000000000000000000000000000000000000000000000111111011111100111110111111011111101111110111111000111101111110111111011111101111110111111011000001111110111111"/> <room id="7" capacity="10" location="345,335"/>
</section>
</subpart>
<subpart id="24" itype="30" parent="23"> <section id="51" limit="20" parent="50"> <time days="0010100" start="102" length="24"
dates="0000000000000000000000000000000000000000000000000011111101111110011111011111101111110111111011111100011110111111011111101111110111111011111101100000111111111111"/>
<room id="7" capacity="10" location="345,335"/>
</section>
<section id="52" limit="20" parent="50"> <time days="0010100" start="126" length="24"
dates="0000000000000000000000000000000000000000000000000011111101111110011111011111101111110111111011111100011110111111011111101111110111111011111101100000111111111111"/>
<room id="7" capacity="10" location="345,335"/>
</section>
</subpart>
</config>
</offering>
...
</offerings>

An offering consists of one or more courses under which it is offered (students are signing for courses) and one or more configurations. Each configuration has one or more subparts and each subpart has one or more sections (classes). Each student requesting given course has to be enrolled in a section of each subpart of a selected configuration. If a parent-child relation is defined between sections, if a student is enrolled in a section that has a parent section defined, he/she has to be enrolled in the parent section as well.

subpart: definition of a subpart (a collection of alternative sections of the same instructional type)
idsubpart unique id
itypeinstructional type
parentparent subpart (if defined) -- all sections of the subpart have a parent section defined from the parent subpart
section: definition of a section
idsection unique id
limitsection limit -- number of students that can be enrolled into the section, -1 means unlimited
parentparent section (if defined) -- a student enrolled in this section, must be enrolled in the parent section as well
hold amount of space of this section that is held for incoming students (default is zero)
This attribute is computed during the batch sectioning (it is the overall weight of dummy students enrolled in this section) and it is being updated with each incomming student during the online sectioning.
expected amount of space of this section that is expected to be taken by incoming students (default is zero)
This attribute is computed during the batch sectioning (for each dummy student that can attend this section (without any conflict with other enrollments of that student), 1 / x where x is the number of such sections of this subpart is added to this value). Also, this value is being updated with each incomming student during the online sectioning.
A section may or may not have defined a time (e.g., individual study sections do not need to have a time and room defined) and any number of rooms (including zero).
a. time placements:
Each time location encodes the selection (e.g., MWF 7:30 - 8:30) of
  • days (e.g., 1010100 means Monday + Wednesday + Friday),
  • start time (e.g., 90 means 7:30 am),
  • length of each meeting (e.g., 12 means 60 minutes)
time: a section can have none or one time placement defined
daysselection of days (binary string encoding days Monday, Tuesday, Wednesday, .. Sunday)
startstart time slot
lengthnumber of time slots each meeting takes
datesbinary string defining on what days during the term the class can be taught
Two time placements overlap when
  • dates are overlapping (binary operation XOR of dates attributes returns a non-zero value) and
  • days are overlapping (binary operation XOR of days attributes returns a non-zero value) and
  • times are overlapping ((t1.start + t1.length > t2.start) AND (t2.start + t2.length > t1.start))
b. room placements:
room: a section can be placed in zero, one, or more rooms
idroom id
capacityroom capacity (number of seats in the room)
locationroom location coordinates x,y
- distance between rooms in meters: 10 * ((x2-x1)^2 + (y2-y1)^2)^1/2
- location attribute might not be present (e.g., for non-campus locations), distance between such a room and any other room are considered as infinite in such a case
ignoreTooFar - true if the distances between this room ant any other room should not be considered (no distance conflicts for this room)
- false if the distances should be considered (this is the default, when ignoreTooFar attribute is not present)
2. Definition of students:
<students> <student id="1" dummy="true"> <classification area="GR" code="D"/>
<major area="GR" code="E24"/>
<minor area="GR" code="390"/>
<course id="1" priority="0" weight="0.0000" course="2884"> <alternative course="2313"/>
<best> <section id="1233"/> </best>
</course>
<course id="2" priority="3" weight="1.1250" course="4394" alternative="true"/>
</student>
<student id="2" dummy="true"> <classification area="LA" code="07"/>
<major area="LA" code="436"/>
<course id="3" priority="0" weight="1.1429" course="982"/>
<best> <section id="1832"/>
<section id="1841"/>
</best>
<course id="4" priority="1" weight="1.1429" course="992" waitlist="true" />
<course id="5" priority="2" weight="1.1250" course="1000"/>
<course id="6" priority="3" weight="1.1250" course="4394"/>
<course id="7" priority="4" weight="1.3333" course="999"/>
<freeTime id="8" priority="5" days="0010100" start="102" length="24"
dates="0000000000000000000000000000000000000000000000000011111101111110011111011111101111110111111011111100011110111111011111101111110111111011111101100000111111111111">
<best/>
</freeTime>
</student>
...
</students>

student: definition of a student
idstudent unique id
dummytrue for last-like students (false by default)
classificationstudent academic area classification(s) -- contains academic area and classification code
majorstudent major(s) -- contains academic area code and major code
minorstudent minor(s) -- contains academic area code and minor code
Academic area classification, major, and minor information is optional.

Each student contains a list of course / free time requests. Each request has a priority. Course requests can have one or more alternative courses defined. Also, the whole request can be defined as alternative or it defines whether the student should be put on a waitlits for the course if he/she cannot be enrolled in the course.

For each student, all non-alternative requests should be satisfied (an enrollment is assigned to a request). If not, an alternative request can be assigned instead of a non-alternative course request. In the case when only one of two requests can be assigned, the one with the lowest priority is preferred.

a. course requests:
course : definition of a course request
idrequest unique id
priorityrequest priority
weightrequest weight, by default 1.0, defines the amount of space which will be taken in the section by this request
courserequested course id
alternativetrue, when alternative request (false by default)
waitlisttrue (false by default), when the student should be put on waitlist when he/she cannot be enrolled in the course (e.g., an alternative request cannot be assigned instead)
alternative : definition of an alternative course of the requested course (one or more alternative courses can be defined for each course request)
courserequested course id
b. free time request:
freeTime : definition of a free time request
idrequest unique id
priorityrequest priority
waitlisttrue, when an alternative request cannot be assigned instead (false by default)
daysselection of days (binary string encoding days Monday, Tuesday, Wednesday, .. Sunday)
startstart time slot
lengthnumber of time slots each meeting takes
datesbinary string defining on what days during the term the class can be taught

Initial, current and best solutions can be defined using initial, current and best elements inside a course or free time request. For free times, a presence of such element means that the student has assigned (can attend) this free time in his/her schedule. For course requests, the appropriate selection of sections is present. A section of each subpart of a configuration of the course (or one of the alternative courses) needs to be selected. No two sections that a student is enrolled into can overlap in time and any assigned section can not overlap with any assigned free time requests.
initial, current, best : initial, current and best assigment of a request
sectionenrollment of the student into particular section (section with the same id)
</sectioning>