Interaction sessions
Last updated
Last updated
Unizin Homepage
unizin.orgHosted Services
My Learning AnalyticsCopyright © 2023, Unizin, Ltd.
The purpose of this mart is to approximate an answer to a basic question: how much time do students spend in using the LMS and learning tools for their learning-related activities in a course?
The concept of a bounded “interaction session” is central to measure at the heart of the data mart. There is no canonical way to measure an “interaction session” in the learning analytics literature. We propose to use one of the least-controversial algorithms. In the end, we should prepare for a future in which different algorithms are used in parallel marts.
Nevertheless, the purpose of this mart is to capture the “interaction sessions” of a person in a course, where a “session” represents a duration of time defined by rules that govern when a session begins and ends.
There are two interaction sessions marts: mart_course_offering.interaction_sessions and mart_course_section.interaction_sessions. The former mart captures the interaction sessions of a person in a course offering, while the latter part captures the interaction sessions of a person in a course section.
mart_course_offering
mart_course_section
The following visualization shows the construction of this data mart defined in the UDP marts repository. More information on the repository and diagram can be found on this marts page.
udp_course_offering_id
INTEGER
The UDP ID of the course offering.
lms_course_offering_id
STRING
The LMS ID of the course offering.
udp_person_id
INTEGER
The UDP ID of the person.
lms_person_id
STRING
The LMS ID of the person.
academic_organization_display
STRING
The name of the academic organization(s) associated with the course offering as a string with comma separation.
academic_organization_array
ARRAY<STRING>
Array of academic organization(s) associated with the course offering.
academic_term_name
STRING
The name of the academic term, i.e. Fall 2020.
academic_term_start_date
DATE
The start date for the academic term.
course_offering_title
STRING
The title of the Course offering, i.e. Linear Algebra.
course_offering_start_date
DATE
The start date of the Course offering.
course_offering_subject
STRING
The subject of the Course offering, i.e. MATH.
course_offering_number
STRING
The number of the Course offering, i.e. 310.
course_offering_code
STRING
The code of the Course offering, i.e. MATH 310.
instructor_display
STRING
An array of all the instructor’s names for the Course offering written as a string.
instructor_name_array
ARRAY<STRING>
An array of all the instructor’s names for the Course offering.
instructor_email_address_display
STRING
An array of all the instructor email addresses for the Course offering written as a comma-separated string.
instructor_email_address_array
ARRAY<STRING>
An array of all the instructor email addresses for the Course offering.
person_name
STRING
The name of the person.
role
STRING
The role of the person in the Course offering, i.e. Student, Teacher.
week_in_term
INTEGER
The week of the academic term.
week_start_date
DATE
The start date of the week of the academic term.
week_end_date
DATE
The end date of the week of the academic term.
session_date
DATE
The date of the session.
num_sessions_10min
INTEGER
Based on a 10 minute cutoff for interaction sessions, the number of interaction sessions for the person in the Course offering for the given session date.
total_time_seconds_10min
INTEGER
Based on a 10 minute cutoff for interaction sessions, the total time spent in seconds in interaction sessions for the person in the course offering for the given session date.
total_actions_10min
INTEGER
Based on a 10 minute cutoff for interaction sessions, the total number of actions in interaction sessions for the person in the course offering for the given session date.
avg_time_seconds_10min
FLOAT
Based on a 10 minute cutoff for interaction sessions, the average time spent in seconds in interaction sessions for the person in the course offering for the given session date.
avg_actions_10min
FLOAT
Based on a 10 minute cutoff for interaction sessions, the average number of actions in interaction sessions for the person in the course offering for the given session date.
num_sessions_20min
INTEGER
Based on a 20 minute cutoff for interaction sessions, the number of interaction sessions for the person in the Course offering for the given session date.
total_time_seconds_20min
INTEGER
Based on a 20 minute cutoff for interaction sessions, the total time spent in seconds in interaction sessions for the person in the course offering for the given session date.
total_actions_20min
INTEGER
Based on a 20 minute cutoff for interaction sessions, the total number of actions in interaction sessions for the person in the course offering for the given session date.
avg_time_seconds_20min
FLOAT
Based on a 20 minute cutoff for interaction sessions, the average time spent in seconds in interaction sessions for the person in the course offering for the given session date.
avg_actions_20min
FLOAT
Based on a 20 minute cutoff for interaction sessions, the average number of actions in interaction sessions for the person in the course offering for the given session date.
num_sessions_30min
INTEGER
Based on a 30 minute cutoff for interaction sessions, the number of interaction sessions for the person in the Course offering for the given session date.
total_time_seconds_30min
INTEGER
Based on a 30 minute cutoff for interaction sessions, the total time spent in seconds in interaction sessions for the person in the course offering for the given session date.
total_actions_30min
INTEGER
Based on a 30 minute cutoff for interaction sessions, the total number of actions in interaction sessions for the person in the course offering for the given session date.
avg_time_seconds_30min
FLOAT
Based on a 30 minute cutoff for interaction sessions, the average time spent in seconds in interaction sessions for the person in the course offering for the given session date.
avg_actions_30min
FLOAT
Based on a 30 minute cutoff for interaction sessions, the average number of actions in interaction sessions for the person in the course offering for the given session date.
The course section mart includes all the fields found in the course offering mart, as well as five more fields, which are presented in the table below.
udp_course_section_id
INTEGER
The UDP ID of the Course section.
lms_course_section_id
STRING
The LMS ID of the Course section.
sis_course_section_id
STRING
The SIS ID of the Course section
academic_organization_id
INTEGER
The UDP ID of the academic organization.
organization_name
STRING
The name of the academic organization associated with the course section. Replaces academic_organization_display and academic_organization_array in the course offering mart.
For this data mart, all events by a person in a course offering qualify as relevant to include in the generation and maintenance of the mart. Any event, associated with a specific activity (in this case the course_offering_id as relates to the student, and a specific action, as fed through the event stream) should trigger the recording to this table.
In order to compute an interaction session, it is necessary to compute the start and end times of a discrete interaction session. Or to put it differently, it’s necessary to compute when a new interaction session opens and when an open interaction session closes.
By Inactivity threshold is meant the minimum time duration that must elapse before an open interaction session is closed.
If there is no current interaction session open for course X AND the user has an activity in course X, then an interaction session begins for course X
If there is a current interaction session open in course X AND the user has an activity in course X AND the elapsed time between the last course X activity and the current X activity is greater than the Inactivity threshold, then close the previous course X interaction session and start a new course X interaction session
If there is an activity in course X and the elapsed time between the last user activity and the current user activity is greater than the Inactivity threshold, then close the interaction session
Note: another approach is to periodically see if the “last event” for all students with open interaction sessions was longer than the Inactivity threshold and, if so, close the interaction session.
Understanding which events qualify or are disqualified from interaction sessions based on the 10, 20, and 30-minute cutoffs can be confusing. The following example aims to show the logic described above in action. The exact schema of the mart(s) above is not replicated one-for-one in this example; instead, the focus is on a timeline of clicks we can see in the UDP and how those events might or might not be grouped together for interaction sessions.
Assume we have a student with the following timeline of clicks in one of their courses:
During this three-hour window (6:00 pm to 9:00 pm), we see 13 total clicks (labeled A through M). The first step is to determine the amount of time between each of these clicks. In this example, we'll keep the granularity at the minute level, but the marts we show in the UDP are at the second level.
In tabular form, the sequence of clicks looks like the following:
A
6:00 PM
N/A
–
B
6:03 PM
6:00PM
3
C
6:11PM
6:03PM
8
D
6:23PM
6:11PM
12
E
6:25PM
6:23PM
2
F
6:47PM
6:25PM
22
G
7:20PM
6:47PM
33
H
7:31PM
7:20PM
11
I
7:35PM
7:31PM
4
J
7:54PM
7:35PM
19
K
7:56PM
7:54PM
2
L
8:56PM
7:56PM
60
M
9:00PM
8:56PM
4
The first functional cutoff we can consider is 10 minutes. The timeline above will now be color-coded according to which events qualify based on a 10-minute functional cut off:
This yields the following from a 10-minute cut-off point of view:
1
A,B,C
3
11
2
D,E
2
2
3
H,I
2
4
4
J,K
2
2
5
L,M
2
4
13
5
23
Similarly, let's take the same timeline of events and introduce a 20-minute cut-off instead of a 10-minute cut-off:
This yields the following from a 20-minute cut-off point of view:
1
A,B,C,D,E
5
25
2
G,H,I,J,K
5
26
3
L,M
2
4
13
3
55
Finally, let's see how this timeline looks with a 30-minute cut-off:
This yields the following from a 30-minute cut-off point of view:
1
A,B,C,D,E,F
6
47
2
G,H,I,J,K
5
26
3
L,M
2
4
13
3
77
Regardless of the cut-off used, the number of clicks is unchanged! There is only one stream of events, and that will never change. What does change is what time we count towards learning and interacting. The 10-minute cut-off is the most conservative in that it counts the lowest total time interacting, but you will often see a greater number of total sessions with this cut-off. The inverse is true for the 30-minute cut-off; this will be an upper bound of sorts for counting total time for a student/course; however, the number of sessions may be lower since it accepts more events into its definition of session more widely than the other cut-offs.
The cut-off time is a heuristic that can be tweaked and is not a one-size-fits-all approach. Unizin has developed these marts first with three, static cut-off windows; however, we are open to considering more dynamic approaches, and individual projects may need to define interaction sessions accordingly.