There are three types of gradebook columns.
Individual: This is essentially a representation of an individual assignment. For e.g an assignment named Quiz 3 will take up one column as Quiz 3 in the Preview, CSV and LMS.
Summary: This type of column is based on its assignment type. So we have Attendance Summary, In Class Summary, Homework Summary, Quiz Summary and Practice Summary. This column is made up of an accumulation of the assignments matched for that type. For e.g the Quiz Summary will include only quiz assignments and thus the column’s possible points will be made up of a sum of the possible points for each of the included quiz assignments.
Single Score (aka Aktiv Score): This is a column that accumulates ALL assignments. This is pretty much identical to v1 single-column scoring.
Which of these column types end up in the output columns (for Preview, CSV or LMS) depends on the gradebook configuration that is defined in the Aktiv App for that course (this is defined by course.gradebook
in the DB, see also CourseGradebook
).
Now that we understand the three types of columns that may appear in the Preview, CSV and LMS, we can now think about filtering the assignments that should be included in the process of producing the above columns. For e.g do we want draft assignments, or only published assignments to show up in the CSV etc?
The gradebook configuration (course.gradebook
) also determines if certain assignment types should be completely excluded (course.gradebook.assignmentTypeSettings[].included != true
). This is considered a pre-filter to the additional filtering as defined below.
There are two types of “Inclusion” strategies.
The first being, a header inclusion strategy and the second being a grade inclusion strategy.
We define these strategies on a per course basis, and they are set on the course’s gradebook configuration.
The specific field that these relate to these strategies are course.gradebook.headerInclusions
and course.gradebook.gradeInclusions
. Each one is a map which can thus be defined for each gradebook process type (PREVIEW
, REPORT
or SYNC
). These can be changed in the Admin Site under the Edit Course.
assignment.archived != true
assignment.deleted != true
assignment.archived != true
assignment.deleted != true
assignment.states != DRAFT
assignment.archived != true
assignment.deleted != true
assignment.states != DRAFT
assignment.dateAssigned.isPast()
assignment.archived != true
assignment.deleted != true
assignment.states != DRAFT
assignment.dateAssigned.isPast()
assignment.dueDate.isPast()
The default is AVAILABLE_PUBLISHED.
So as you can see each header strategy is more restrictive than the previous.
If Individual Columns
are to be output, then only those assignments that are included in the strategy will end up being an indivudal column in the Preview, CSV or LMS.
For Summary Columns
such as say Quiz Summary then only the quiz assignments that are included in the strategy will form part of the quiz summary column. So for e.g if say there are two quizzes, one quiz with 10 points (but still draft), and one quiz with 50 points (published) and the AVAILABLE_PUBLISHED
is used as the strategy, then the Quiz Summary column will be out of 50 points only, since the first quiz is not included.
For Single Score
columns then the inclusion strategy defines which assignments will be in the accumulation for this single column. So a draft assignment will not be included if the AVAILABLE_PUBLISHED
is the strategy for e.g.
See also GradebookHeaderInclusion
for the model that represents this.
This is a second level inclusion strategy that is applied after the first.
COMPLETED_OR_DUE: All assignments in which the student has either completed the assignment (i.e answered all problems) or the assignment is due (i.e expired for the student and thus can’t answer any more problems).
DUE: Only assignments that are due (i.e expired for the student and thus can’t answer any more problems). Even if the student has completed the assignment but still has time, the assignment/grade will not be included/synced.
The default is COMPLETED_OR_DUE.
If Individual Columns
are to be output, then the header inclusion strategy basically defines which of those assignments will be created as columns. The grade inclusion strategy will define if the score for this assignment-column will appear as a -
(dash) or actual calculated value.
For Type Summary
or Single Score
columns, the header inclusion strategy acts as a level 1 filter, and the grade inclusion strategy as a level 2 filter. So for e.g. say the header inclusion strategy is AVAILABLE_PUBLISHED and the grade inclusion strategy is DUE, then only due assignments will be effectively included in the calculation of these columns.
Note that if for e.g you have set this grade inclusion strategy to be COMPLETED_OR_DUE but the header inclusion strategy is the most restrictive AVAILABLE_PUBLISHED_ASSIGNED_DUE, then the grade inclusion strategy essentially functions as DUE since ONLY due assignments are included columns, so the grades for excluded columns are never synced.
See also GradebookGradeInclusion
for the model that represents this.
When we sync (create/update) a column to the LMS we use the Willo Grade Sync API. They provide the following fields which we can provide for each column.
Individual Column
types this will be the ID of the assignment in Aktiv.Summary Column
the id will be in a specific format by type for e.g chem101quizsummary
.Single Score
the id will always be chem101score
.Individual Column
types this will be the name of the assignment in Aktiv. Except for Attendance which is in the format “Attendance (Dec 10 2020)”. Also if the name is too long for the LMS, the name is concatenated. Also if two assignments have the same name, then an additional suffix is added to distinguish between the two.Summary Column
the name will be in a specific format by type for e.g Quiz Summary
.Single Score
the name will always be Aktiv Score
.Individual Column
, the default for this is “Go to https://app.aktiv.com or open your Aktiv app to complete your assignment”, but configurable in course.gradebook.initDescriptions
for each course by column type.Summary Column
, the default for this is “Go to https://app.aktiv.com or open your Aktiv app to complete your assignment”, but configurable in course.gradebook.initDescriptions
for each course by column type.Single Score
, the default for this is “Go to https://app.aktiv.com or open your Aktiv app to complete your assignment”, but configurable in course.gradebook.initDescriptions
for each course by column type.assignment.grading.pointsPerProblem
and problem.points
, as well as the course gradebook settings for weights etc. For type summaries and single score columns then this will be a sum of all possible points of the scoped assignments.Individual Column
, this depends on the due date inclusion strategy that is set, see below.Summary Column
None.Single Score
None.By default we send the following for the three different column types:
Individual Column
Summary Column
Single Score
However, this is configurable (overridable) on a course by course basis.
To override this default text, change the course.gradebook.initDescriptions(type)
field on the course. This should also be configurable in the Admin Site.
Note that this description (whether default or overriden) is only ever sent to the LMS upon column creation (i.e first time round). It is never sent on updates (i.e when the column already exists). This is due to the fact that the instructor may have changed this manually after it was created and we don’t want to reset this.
The due date for Summary
and Single Score
columns are not set at all, i.e they will appear as empty/null in the LMS.
For Individual
type columns, a particular strategy is defined which is configurable.
You can define the strategy for each assignment type. For e.g a strategy defined for the Quiz type will mean all quiz assignments/columns will have the due date set under the same strategy.
The possible strategies are:
The default strategy for assignments/columns of the following types are:
NONE
NONE
DEFAULT_DUE_DATE
DEFAULT_DUE_DATE
NONE
The corresponding field is course.gradebook.assignmentTypeSettings[].dueDateInclusion
.
See GradebookDueDateInclusion
.
This should also be configurable in the Admin Site.
The gradebook columns (headers) will appear in a specific/predictable order.
Generally the columns are ordered by type:
So attendance assignments/columns always appear before In Class assignments/columns.
Similarly an Individual
assignment/column of type ATTENDANCE will appear before Type Summary
for IN_CLASS.
Now ordering within a specific type is done depending on the configurable GradebookWithinTypeOrder
(see course.gradebook.withinTypeOrder
).
At any moment in time, the gradebook settings for a course (course.gradebook
), determines the output columns that will appear in the Preview, CSV (Report) and LMS.
Thus changing these settings will potentially change the columns produced. It could very well be that a column that was previously being output, is no longer being output. For e.g let’s say that initally the Quiz Summary
was enabled in the settings, a sync was then performed and this Quiz Summary
column now appears in the LMS. However, let’s say the settings are then changed to include Homework Summary
only (i.e the quiz summary has been disabled), thus the LMS will be synced with this new column Homework Summary
, but the old column Quiz Summary
still shows up in the LMS.
Unfortunately Aktiv is limited by what the Willo Labs Grade Sync API can do. At this moment in time they do not provide a delete option, so we cannot delete any previously synced columns. The LMS instrcutor will have to delete these manually in the LMS (if posible, otherwise hide them).
As a workaround, there is a gradebook setting in Aktiv called Cleanup Enabled
(course.gradebook.cleanupEnabled
). This will essentially rename/append any old columns with a prefix of “(Deleted in Aktiv)”. So one can use this as an indication that Aktiv is no longer syncing those columns and thus have been “deleted” from the output columns.