[WIP] Learner Group Requirements
Overview
This feature is switched off by default for this initial release, but can be turned on.
Scope
For this release (and likely the first few releases), we must to support the creation of learner groups and interventions for learners at the course-level, but in the future we will need to support making groups at the:
Instance-level
Organization-level
Section, Subsection, Unit, and Component-levels?
Learner Groups
Open Questions
Where does this live?
In the LMS, on the Instructor tab, between Open Response and Reports tab, on a tab called Learner Groups
Question: Will we be able to easily move this (Learner Group) page to an Admin Space if and when that space exists?
Note: Is this Instructor Dashboard MFEed? (No)
Are these groups to be manually refreshed? Automatically refreshed on a certain cadence? (A question for the delivery team to figure out if there is a reasonable cadence for a chron to refresh groups).
How do we roll this functionality out while also considering the existing learner grouping mechanisms on the platform (see Considering learner groups alongside existing grouping mechanisms section of this page for more)
Learner Group Functionality
A Superuser, Admin, or Course Delivery Team member (for the courses they are course staff on) can…
Define
A group of learners that meet shared criteria (characteristics and/or events)
A list of learner(s)
Exclude a list of learners
Exclude learners that share criteria (characteristics and/or events)
Edit learner groups by adding/removing learner(s) and/or refresh manual groups
Examples:
Add a list of learners
Add learners that share criteria (characteristics and/or events)
Exclude a list of learners
Exclude learners that share criteria (characteristics and/or events)
Name a learner group
Save a learner group
Disable learner group (not delete at least for MVP)
Disabling a learner group:
Stops automatic refreshing
Stops any interventions associated with the group
View list of learner groups that have been made for my course
List includes Learner Group Name and metadata (criteria used to create learner group, number of learners in group, when it was created and last modified (if applicable))
View data for learner group
For those using Aspects, we can start by allowing users to view learner group data via the Learner Group Dashboard (Learner Group is a filter on all of the Coursewide Aspects Dashboards)
For those not using Aspects, user can pull learner groups from MySQL or from tracking events that are created or from Open edX events.
Import a list of learners to create/edit a learner group
What is the data we’re importing here?
Username and/or email address
Context:
Here are the rows in the enrolled learner data from data downloads tab:
ID, username, name, email, language, location, location, gender, level_of_education, mailing_address, goals, enrollment_mode, last_login, date_joined, external_user_key, city, country
The information course delivery teams use to bulk enroll learners:
Username and/or email address
Export the list of learners in a group (for those with and without Aspects)
What is the data we’re exporting here? (same as data downloads, but shouldn’t we omit mailing address? If not, we can keep it the exact same as data downloads format)
ID, username, name, email, language, location, location, gender, level_of_education, mailing_address, goals, enrollment_mode, last_login, date_joined, external_user_key, city, country (same as data downloads list)
Out-of-the-box Leaner Group
One default learner group that exists out-of-the box for courses (manually created by a button push):
Pre-defined at-risk learner group: Learner enrolled in this course, has not yet passed the course, has done something in the course, has not engaged with the course in N or more days
N = 7, but can we make it easy for users to update N?
Automatically refreshed group (See Open Questions?)
Note: there are ways to see if a learner has engaged with a course in N or more days without using Aspects; however, after speaking with Dave Ormsbee, this may not be the most performant query…
Defining a Learner Group
Course delivery teams can define their own learner groups by specifying learner criteria. User can combine up to two criteria to create a group (including anti-criteria):
Default criteria for inclusion/exclusion available out-of-the-box (Manual/static groups eligible for refreshed?)
Enrollment Status
Current Enrollment Track
By Enrollment Date (first enrollment date)
Learner’s Current Grade
Learner’s Last Sign In Date (we want last engagement date, but this might be our best bet outside of analytics)
Learner Email Domain Name
Aspects plugin for learner group creation
Learner engaged with any course content (pages - aside from course homepage) in N or more days
Learner has engaged with any course content (pages - aside from course homepage) ever
Learner has engaged with…?:: -
Multi-select problem in the course
Multi-select ORA problem in the course (?)
Multi-select video in the course
Multi-select course section
Multi-select course subsection
Multi-select course unit
Learner got… correct (select) (on first attempt, any attempt ← select):
Multi-select problem in the course
Learner has created a post in discussion forums
Learner earned X grade or greater/lower (select) on…
Select assignment
The criteria for defining your own learner group must be pluggable, so that users can add the criteria for creating learner groups that are important for their use case.
Considering learner groups alongside existing grouping mechanisms
We recognize that there are already a few other ways to group learners on the platform for different purposes, which I’ve outlined below:
Cohorts
Purpose: To A/B test course content, present different course content (content groups) to different learners, customize grading based on visible content, including custom forums
How to create:
Define group randomly or provide a list of users either hand entering (username or email address) OR by uploading a CSV file with username/email (assign a content group to a cohort to control what content the learners in that cohort receive)
Rules/Group-specific idiosyncrasies:
Learner can only be in one cohort per course
Cohorts only exist at the course level
Cohorts are static unless manually updated by course staff
Defined by a course delivery team member and never by the learner
Teams
Purpose: Allows course teams to facilitate group discussion and/or group assignments
How to create:
In Studio, enable teams application
Course delivery team can create “team-sets” (groups of teams based around a specific topic or assignment)
Instructor-managed team-sets allow the instructor to create and control membership of teams within a team set
To create a team-set, instructor can upload a CSV file that dictates which team in a team-set each learner is assigned to
For team sets that are not instructor-managed, learners can join a team in a team set
Rules/Group-specific idiosyncrasies:
Learner can only be in one team per team-set, but there can be multiple team-sets per course
Team-sets are linked to a project or discussion forum in a course
Teams are static unless team membership is modified by the instructor (for instructor-managed teams) or the learner
Can be defined by a course delivery team member (for instructor-managed team-sets) or by the learner
Teams can have a language and/or country associated with them to help people self-group
Course Groups
Purpose: To control what course content an enrollment track has access to by assigning a content group (created in Studio) to a course group (defined by enrollment track)
How to create:
Assign a content group (created in Studio) to a course group (defined by enrollment track)
The only variable by which a course group is currently created is the enrollment track
Rules/Group-specific idiosyncracies:
Each user can belong to one course group at a time
Course groups only exist at the course level
Teams are likely dynamic - I would guess if a learner updates their enrollment track, their course group is automatically updated
Defined by the learner’s enrollment track
Learner Groups
Learner groups have some overlapping properties to the existing grouping mechanisms on the platform; however, learner groups also allow course delivery teams to segment learners by the things that they do on the platform. Learner groups can be either static or dynamic depending on how the group is defined. This mechanism’s primary purpose will be to facilitate targeted intervention and communication with learners on the platform.
Purpose:
Primary purpose: To allow course delivery teams to notify or email a subset of learners (in their course, in an org, on an instance)
To allow course delivery teams to look at data for a subset of learners (in their course and eventually across an org or instance)
Customizable: It must be possible for instances to be able to do other things with the learner groups they create.
For example, a common request I heard during user interviews: I want to automatically reset the number of attempts for learners who did not get problem X correct.
How to create:
Pre-set learner groups exist
Custom learner groups can be created by an authorized user (such as a course admin or other course delivery team member) by either:
Including/excluding a list of learners uploaded via CSV
Identifying inclusion or exclusion criteria for membership in a group:
Example: Learners enrolled in my course who have not engaged with the platform in 7 or more days.
Example: Learners enrolled in my course with a grade of N or lower.
Example: Learners enrolled in my course who have not yet attempted a problem in X subsection.
Rules/Group-specific idiosyncrasies:
Can be used to segment learners in a course, across an organization, or an instance (for MVP, the scope will be segmenting learners in a course)
A learner can belong to multiple learner groups
Can be static (if created as a list of specific learner IDs, for example) OR dynamic (a group that identifies learners who haven’t engaged with the course in 7 or more days)
Not learner-defined (a course delivery team member defines the learner group)
Can be used to view data for a subset of learners
Can be used to email/notify a subset of learners
Can be used to email/notify a subset of learners and/or course staff
Can we expand the way we group learners (and how we use those groups) without creating madness?
We must be thoughtful about introducing a new grouping mechanism (like Learner Groups) to the platform so as not to create confusion for those managing courses and the platform where it isn’t needed. We’ll want to consider a careful rollout of this feature that potentially even condenses user grouping to one central place. Learner groups that are created could then be used for different purposes.
For example: Over time, learner groups could potentially serve other functions such as Cohort, Course Group, and Team assignment.
Cohorts and Course Groups: A cohort is a learner group made up of a list of learners, and a course group is a learner group made up of learners based on their enrollment track. This would necessitate making it so that Learner Groups can be linked to a content group.
We’d want to be thoughtful about this functionality though (since dynamic groups would likely not serve as the best cohort and currently, learners can belong to more than one learner group).
However, the benefit of being able to link a learner group to a content group would be that you could potentially provide additional content to a learner who did not perform well on a particular assignment and even re-test that learner on that concept later on in the course. (This is an idea that came up a few times when talking to course delivery teams about learner grouping).
Teams are a little more complicated since they can be learner defined, they are organized around projects and forums, and involve team-sets. Folding teams within the Learner Grouping umbrella would require some additional thought.