Course Builder 1.10
- Meet Course Builder
- Set Up Course Builder
- Create a Course
- Customize Course Style
- Debug Course
- Prepare for Students
- Publish a Course
- Analyze Data
- Administer Site
- Upgrade Course Builder
- For Course Builder Developers
- Feature List
- Release Notes
- Visual Presentation
- Representing the State of Composite Objects
- Storing the Data
- Privacy Considerations
Course Builder’s student progress tracking feature provides visual indicators that make it easy for students to see which parts of a course they have attempted. Since not all questions have answers that are clearly right or wrong, this feature explicitly does not attempt to track correctness of the students’ answers.
A course object is a part of a course that can be completed by the student; examples include units, lessons, question groups and questions. Next to each course object, we will show a small circle. This circle will have one of three states: empty, half-full, and full.
The states that each of these circles represent are depicted in the following table:
|Empty circle||Not started|
|Half-full circle||In progress|
The visual indicators are language neutral. In order to satisfy accessibility requirements, they will have internationalized alt text that describes the state. This text is visible when a user’s mouse hovers over one of the images; it is also read by screen readers.
Note: There was consideration about having a progress bar with one of five different states: 0% complete, 25% complete, 50% complete, 75% complete and 100% complete. This was rejected for two reasons: user testing suggested that it was too complex, and the additional bucketing did not seem to provide a lot of added value to the student (since a student would mostly care about whether they had finished the activity or not, rather than the precise degree of completion).
Representing the State of Composite Objects
The completion status of a composite object depends directly on the completion status of its children, and is represented as either Not Started (0), In Progress (1) or Completed (2). The composite object is considered to be in state 0 if all its children are in state 0, and it is considered to be in state 2 if all its children are in state 2. In all other cases it is considered to be in state 1 (In Progress). Note that the only state transitions that can occur are from 0 to 1, and from 1 to 2.
When the state of a composite course object changes from 0 to 1, the update process calls the update method for the parent course object, which changes the parent’s state to 1 if it isn’t 1 already.
When the state of a composite course object changes from 1 to 2, the update process calls the update method for the parent course object, which checks whether all its children are completed, and, if so, changes the parent’s state to 2.
Storing the Data
The data will be stored in a generic
StudentPropertyEntity object that is
persisted in the Google App Engine datastore. The object will be keyed by the student
id and the name of the student property. For this feature, the corresponding property
will be ‘linear-course-completion’. Someone may customize different completion models
for nonlinear courses, and she may also want to associate other data with individual
The primary logic for this is implemented as a standalone model class in
models/progress.py. It will be referred to by the controller code in
modules/courses/lessons.py and will refer to the
StudentPropertyEntity model in
Courses will implement a
get_progress_tracker() method that returns an
instance of the progress tracking class. This means that the only access to the
progress tracker is from the Course class, which ensures that the progress tracker
always remains within the bounded context of a Course and is not accessible outside
The owner of the Course Builder app can turn student progress tracking on or off, in accordance with the terms under which the app owner offers his/her course. The progress tracking functionality collects and stores data on a per-student basis. This is set in the Course Data Settings under Enable Student Analytics.
Note that the Course Builder open-source package can be downloaded and run by third parties; it is up to each of these third parties to decide on the data collection and privacy policies for their courses, and they may do whatever they choose with the student data they collect using this project.