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 subareas and define different grading methods in it. The teacher defines subareas by himself.
While AGM design allows us to have only one active grading method, we can create more areas (fake areas actually) for the same context. We call it 'subareas'. It's safe because any other modules uses MODULENAME_grading_areas_list() to list the areas, not DB query.
How it works
TODO: sequence diagram
DB schema
gradeform_metaagm_areas
Each subarea additionally listed in this table. There are weight and name fields are important. Teacher can define a human-readable name for each subarea and a weight of grade for this subarea.
Field | Type | Default | Description |
---|---|---|---|
id | bigint | Auto-numbered | |
areaid | bigint | The gradeable subarea. | |
weight | float | 1.0 | Weight for grade in this subarea. |
name | varchar(255) | Human-readable name of this subarea. |
Backup/Restore
TODO