Meta AGM
General information
Project goal: to be able to use multiple Advanced grading methods at one grading area.
Project scope. This project does not change the AGM internals and its API. Meta AGM is a grading method, the form of which is a number of another AGMs.
Use cases
In examples below 'rubric' and 'criterial' grading methods were used. Criterial is a work-in-progress method which allows teacher to define a form with a number of numerical fields, checkboxes, etc.
1. Assessment of student's program on the course of high-level programming basics
There are lot of aspects of checking the quality of program which is developed by student: efficiency, code style compliance, lab activity protocol... So we need a various grading method types to develop a set of criterions allowing us to assess all the aspects described in one assignment module.
TODO: defined AGM example
Implementation
This module allows a teacher to define several metacriterions and define different grading methods in it. The teacher defines metacriterions by himself.
While AGM design allows us to have only one active grading method in one gradeable area, we can create more areas (fake areas actually) for the same context. We call it 'metacriterions'. It's safe because any other modules uses MODULENAME_grading_areas_list() to list the areas, not DB query.
How it works
1.1 Get the metacriterions list: list of areas for current contextid and module will be returned (except the area which Meta AGM is defined in). 3.2.1.1: A new record with fake area for current contextid and module will be inserted to grading_areas table and a record to gradeform_metaagm_areas (see below).
DB schema
gradeform_metaagm_areas
Each metacriterion additionally listed in this table. There are weight and name fields are important. Teacher can define a human-readable name for each metacriterion and a weight of grade for this metacriterion.
Field | Type | Default | Description |
---|---|---|---|
id | bigint | Auto-numbered | |
areaid | bigint | The gradeable area for metacriterion. | |
weight | float | 1.0 | Weight for grade of this metacriterion. |
name | varchar(255) | Human-readable name of this metacriterion. |
Backup/Restore
TODO