Student Course Request - time pattern

48 views
Skip to first unread message

nguyen phu

unread,
Oct 13, 2025, 5:03:10 AM10/13/25
to UniTime Discussion Group
Hi,

I run the solver of Timetable,

The classes require timePattern,

Then when I declare time tag , it required time start and time end to declare the timePattern 

How can I get the time start time end when the timetable is not yet produced

Thank you,

Tomáš Müller

unread,
Oct 13, 2025, 7:45:48 AM10/13/25
to unitime...@googlegroups.com
Hi Nguyen,

I am not sure I understand the question.

If you are using the Courses XML, the time pattern can be indicated with the time attribute. For example:

<time days="MF" startTime="1430" endTime="1520" timePattern="2 x 50"/>

If you need to assign the time pattern (time preferences) without actually assigning a particular time, you would need to use the Preferences XML instead (Courses XML cannot do that). For example:

<subpart subject="ALG" course="101" type="Lec">
  <timePref pattern="3 x 50" level="R"/>
</subpart>

Best regards,

Tomas

--
You received this message because you are subscribed to the Google Groups "UniTime Discussion Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to unitime-discu...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/unitime-discuss/9a17ac32-e89f-451e-ac91-8112d088845an%40googlegroups.com.
Message has been deleted

nguyen phu

unread,
Oct 14, 2025, 2:33:51 AM10/14/25
to UniTime Discussion Group
Dear Tomas,

I   figured out the problem with timePattern, some typo,

Thank you for your answer,

Vào lúc 18:45:48 UTC+7 ngày Thứ Hai, 13 tháng 10, 2025, Tomáš Müller đã viết:

nguyen phu

unread,
Oct 14, 2025, 11:29:44 PM10/14/25
to UniTime Discussion Group
Dear Tomas,

First,
I ran the solver and got the schedule from Student Course Request,

I need to check that no student conflict , so Is there any way that I can see a student with all the course that student can enroll

The current possible way I can think of is check one by one.

Second,
At my Uni, a class is assigned by 4 digits number like 1475 ,  the result come back just Lec1, Lec2, etc.. Which really confused for me to identify classes and identify with classes student has assigned during the student course request

So the XML format, which part can I inject the  4 digits number from my school for easy class recognize and not mess up xml

Thank you,

Vào lúc 13:33:51 UTC+7 ngày Thứ Ba, 14 tháng 10, 2025, nguyen phu đã viết:

Tomáš Müller

unread,
Oct 15, 2025, 5:22:20 AM10/15/25
to unitime...@googlegroups.com
Dear Nguyen,

1) If you are using the student scheduling solver (Students > Batch Solver), you can check the results on the Students > Solver Dashboard page. There should be no conflicts unless they are allowed (e.g., by enabling Student Overlaps on the Edit Scheduling Subpart page). You can also check the various solver reports using the Students > Solver Reports page. Please take a look at the Student Scheduling Manual for more details.

2) In the offerings XML import, you can use the suffix attribute of the class element for the 4-digit numbers. They can be made editable on the Multiple Class Setup page when tmtbl.class_setup.edit_external_ids property is set to true in the Application Configuration.

Regards,

Tomas

nguyen phu

unread,
Oct 15, 2025, 6:10:19 AM10/15/25
to UniTime Discussion Group
Dear Tomas,



Capture.JPG
Some how it just run 60 of the student request for the Student Batch solver

Thank for your help,
Vào lúc 16:22:20 UTC+7 ngày Thứ Tư, 15 tháng 10, 2025, Tomáš Müller đã viết:

Tomáš Müller

unread,
Oct 15, 2025, 7:57:53 AM10/15/25
to unitime...@googlegroups.com
I do not know, I would need to see the data.

Is there anything special about the BIT 101V course?

nguyen phu

unread,
Oct 15, 2025, 9:13:33 PM10/15/25
to UniTime Discussion Group
Dear Tomas,

Here is Course Offerings of BIT101V and some others courses

The way I see it is that other Course is just Lec or Lab, but BIT101V got both, and some Preference to make it back to back.

I organized them in the excel data file with the same format. So the way its xml created almost the same as other courses.

  </offering>
  <offering offered="true">
    <course subject="EFL" courseNbr="008V" controlling="true" title="EFL008V1"/>
    <config name="1" limit="66">
      <subpart type="Lec" suffix="" minPerWeek="405"/>
      <subpart type="Lab" suffix="" minPerWeek="405"/>
      <class id="EFL 008" type="Lec" suffix="45" limit="34" studentScheduling="true" displayInScheduleBook="true" cancelled="false"/>
      <class id="EFL 008" type="Lec" suffix="47" limit="32" studentScheduling="true" displayInScheduleBook="true" cancelled="false"/>
    </config>
  </offering>
  <offering offered="true">
    <course subject="EFL" courseNbr="007V" controlling="true" title="EFL007V1"/>
    <config name="1" limit="66">
      <subpart type="Lec" suffix="" minPerWeek="405"/>
      <subpart type="Lab" suffix="" minPerWeek="405"/>
      <class id="EFL 007" type="Lec" suffix="46" limit="34" studentScheduling="true" displayInScheduleBook="true" cancelled="false"/>
      <class id="EFL 007" type="Lec" suffix="48" limit="32" studentScheduling="true" displayInScheduleBook="true" cancelled="false"/>
    </config>
  </offering>
  <offering offered="true">
    <course subject="BIT" courseNbr="101V" controlling="true" title="BIT101V1"/>
    <config name="1" limit="129">
      <subpart type="Lec" suffix="" minPerWeek="135"/>
      <subpart type="Lab" suffix="" minPerWeek="135"/>
      <class id="BIT 101" type="Lec" suffix="49" limit="63" studentScheduling="true" displayInScheduleBook="true" cancelled="false"/>
      <class id="BIT 101" type="Lab" suffix="49" limit="33" studentScheduling="true" displayInScheduleBook="true" cancelled="false"/>
      <class id="BIT 101" type="Lab" suffix="49" limit="33" studentScheduling="true" displayInScheduleBook="true" cancelled="false"/>
    </config>
  </offering>
</offerings>

And some Preferences and request 

<class subject="EFL" course="007V" type="Lec" suffix="1"/>
  <subpart subject="EFL" course="007V" type="Lab">
    <timePref pattern="1 x 100" level="R">
      <pref level="P" days="M" time="0730"/>
      <pref level="P" days="M" time="0930"/>
      <pref level="P" days="M" time="1130"/>
      <pref level="P" days="M" time="1330"/>
      <pref level="P" days="T" time="0730"/>
      <pref level="P" days="T" time="0930"/>
      <pref level="P" days="T" time="1130"/>
      <pref level="P" days="T" time="1330"/>
      <pref level="P" days="W" time="0730"/>
      <pref level="P" days="W" time="0930"/>
      <pref level="P" days="W" time="1130"/>
      <pref level="P" days="W" time="1330"/>
      <pref level="P" days="Th" time="0730"/>
      <pref level="P" days="Th" time="0930"/>
      <pref level="P" days="Th" time="1130"/>
      <pref level="P" days="Th" time="1330"/>
      <pref level="P" days="F" time="0730"/>
      <pref level="P" days="F" time="0930"/>
      <pref level="P" days="F" time="1130"/>
      <pref level="P" days="F" time="1330"/>
    </timePref>
    <timePref pattern="AA_45_3_3_PN" level="N"/>
    <!--Lab count: 0-->
  </subpart>
  <!--EFL007V1: Lec=1, Lab=0-->
  <subpart subject="BIT" course="101V" type="Lec">
    <timePref pattern="1 x 100" level="R">
      <pref level="P" days="M" time="0730"/>
      <pref level="P" days="M" time="0930"/>
      <pref level="P" days="M" time="1130"/>
      <pref level="P" days="M" time="1330"/>
      <pref level="P" days="T" time="0730"/>
      <pref level="P" days="T" time="0930"/>
      <pref level="P" days="T" time="1130"/>
      <pref level="P" days="T" time="1330"/>
      <pref level="P" days="W" time="0730"/>
      <pref level="P" days="W" time="0930"/>
      <pref level="P" days="W" time="1130"/>
      <pref level="P" days="W" time="1330"/>
      <pref level="P" days="Th" time="0730"/>
      <pref level="P" days="Th" time="0930"/>
      <pref level="P" days="Th" time="1130"/>
      <pref level="P" days="Th" time="1330"/>
      <pref level="P" days="F" time="0730"/>
      <pref level="P" days="F" time="0930"/>
      <pref level="P" days="F" time="1130"/>
      <pref level="P" days="F" time="1330"/>
    </timePref>
    <timePref pattern="AA_15_1_3_PN" level="N"/>
    <!--Lec count: 1-->
  </subpart>
  <class subject="BIT" course="101V" type="Lec" suffix="1"/>
  <subpart subject="BIT" course="101V" type="Lab">
    <timePref pattern="1 x 100" level="R">
      <pref level="P" days="M" time="0730"/>
      <pref level="P" days="M" time="0930"/>
      <pref level="P" days="M" time="1130"/>
      <pref level="P" days="M" time="1330"/>
      <pref level="P" days="T" time="0730"/>
      <pref level="P" days="T" time="0930"/>
      <pref level="P" days="T" time="1130"/>
      <pref level="P" days="T" time="1330"/>
      <pref level="P" days="W" time="0730"/>
      <pref level="P" days="W" time="0930"/>
      <pref level="P" days="W" time="1130"/>
      <pref level="P" days="W" time="1330"/>
      <pref level="P" days="Th" time="0730"/>
      <pref level="P" days="Th" time="0930"/>
      <pref level="P" days="Th" time="1130"/>
      <pref level="P" days="Th" time="1330"/>
      <pref level="P" days="F" time="0730"/>
      <pref level="P" days="F" time="0930"/>
      <pref level="P" days="F" time="1130"/>
      <pref level="P" days="F" time="1330"/>
    </timePref>
    <timePref pattern="AA_15_1_3_PN" level="N"/>
    <!--Lab count: 2-->
  </subpart>
  <class subject="BIT" course="101V" type="Lab" suffix="1"/>
  <class subject="BIT" course="101V" type="Lab" suffix="2"/>
  <!--BIT101V1: Lec=1, Lab=2-->
  <!--Total classes: 18-->
</preferences>


<request campus="ABC" year="2024" term="ABC">
    <student key="2504700492">
        <updateDemographics>
            <name first="Trương Phúc" last="Minh"/>
        </updateDemographics>
        <updateCourseRequests commit="true">
            <courseOffering subjectArea="PED" courseNumber="001V" critical="normal" requested="2025-10-13T08:01:40.835409+00:00"/>
            <courseOffering subjectArea="BIT" courseNumber="101V" critical="normal" requested="2025-10-13T08:01:40.835409+00:00"/>
            <courseOffering subjectArea="LAE" courseNumber="106V" critical="normal" requested="2025-10-13T08:01:40.835409+00:00"/>
            <courseOffering subjectArea="LAE" courseNumber="103V" critical="normal" requested="2025-10-13T08:01:40.835409+00:00"/>
        </updateCourseRequests>
        <updateAdvisorRecommendations/>
    </student>

So far I only apply these field, no instructors yet.

The Batch Solver seem to run in endless loop with only those 60 requests,

Thank you Tomas,
Vào lúc 18:57:53 UTC+7 ngày Thứ Tư, 15 tháng 10, 2025, Tomáš Müller đã viết:

Tomáš Müller

unread,
Oct 16, 2025, 3:30:09 AM10/16/25
to unitime...@googlegroups.com
The problem is that there are two subparts (Lec and Lab), but only classes of the Lec subpart. A valid student enrollment in a course must include one class of each subpart within a single configuration, following the parent-child relations when defined. For example, EFL 008V has a Lec and Lab subparts (each student needs a lecture and a lab), but no Lab classes. Therefore, a student cannot obtain a valid enrollment because no labs are offered. While it is possible to do this using the XML interface, the user interface, such as the Instructional Offering Configuration page, does not allow this (each subpart must have enough classes offered to cover the configuration limit).

nguyen phu

unread,
Oct 16, 2025, 3:55:49 AM10/16/25
to UniTime Discussion Group
Dear Tomas,

Your explanation really value to me,

I thought subpart was just the template for Lec / Lab to base on.

Thank you so much,

Vào lúc 14:30:09 UTC+7 ngày Thứ Năm, 16 tháng 10, 2025, Tomáš Müller đã viết:

nguyen phu

unread,
Oct 16, 2025, 5:45:22 AM10/16/25
to UniTime Discussion Group
Dear Tomas,

The Student Batch Solver did work

First, the timeGrid of each student showing nothing

Then , what steps should I take to complete the whole process ?

Vào lúc 14:55:49 UTC+7 ngày Thứ Năm, 16 tháng 10, 2025, nguyen phu đã viết:

Tomáš Müller

unread,
Oct 16, 2025, 7:07:15 AM10/16/25
to unitime...@googlegroups.com
Do you have a course timetable saved and committed?

Please see the student scheduling manual at https://help.unitime.org/manuals/student-scheduling

Message has been deleted

Tomáš Müller

unread,
Oct 17, 2025, 12:58:47 AM10/17/25
to unitime...@googlegroups.com
You need to change the academic session status to one that does not have online student scheduling enabled, e.g., Timetabling. See Administration > Academic Sessions page.

Also, please note that each UniTime page has a documentation that can be accessed using the question mark icon next to the page name.

pá 17. 10. 2025 v 4:46 odesílatel nguyen phu <phunguy...@gmail.com> napsal:
Dear Tomas,

The example have but I dont,

The button is not there

Capture.JPG

Vào lúc 18:07:15 UTC+7 ngày Thứ Năm, 16 tháng 10, 2025, Tomáš Müller đã viết:
Reply all
Reply to author
Forward
0 new messages