Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Grades: Difference between revisions

From MoodleDocs
No edit summary
Line 10: Line 10:


Modules can store grades internally as well if they want to (for efficiency and reports etc).  All storing of grades centrally should take place via the API function: modules must not manipulate the grades table directly.
Modules can store grades internally as well if they want to (for efficiency and reports etc).  All storing of grades centrally should take place via the API function: modules must not manipulate the grades table directly.
The API should allow for locking grade items. This should allow modules to lock the grade from being edited via the gradebook, and allow the gradebook to lock modules from changing grades. This will be useful so that the instructor can set the gradebook to "locked" for an item and then say the quiz module cannot change the grade for a student if they take the quiz again.


An option in the gradebook should allow grades to be retained even if the activity that generated it has been deleted.  If this is turned off, then when displaying the columns, a clean-up function should check the course format, and remove columns belonging to obsolete activities.
An option in the gradebook should allow grades to be retained even if the activity that generated it has been deleted.  If this is turned off, then when displaying the columns, a clean-up function should check the course format, and remove columns belonging to obsolete activities.
Line 15: Line 17:
For backward compatibility, a Moodle cron trigger should cause the gradebook to periodically look in activity modules for an old-style xxxx_grades() function, then call that function to extract and cache grades locally.
For backward compatibility, a Moodle cron trigger should cause the gradebook to periodically look in activity modules for an old-style xxxx_grades() function, then call that function to extract and cache grades locally.


==Additional columns==
Grade status should be easily discernable at a glance in the gradebook possible grade item status include: incomplete, excluded, complete (not graded), graded. This will help with creating conditional activities, and the features required by conditional activities should be considered.
 
There should be a history of grades and how they were changed. There should be a clear history of how a grade was changed information should include: when it was changed, who (or what) changed it, comments.
 
==Import/Export API==


With a centralised table, it should be easier to add support for manual or ad-hoc calculation columns that are not connected to any activity table.
A great need is to connect grades to external systems, such as Student Information Systems.


For example, a final course grade column could be created that is a mathematical calculation based on other columns.   Syntax could be provided to make the column empty unless all the other columns contain a value of some kind (for that user).
A modular plugin system will be added that can export and import grades to and from external systems. The plugin system should allow for grades to be imported or exported at the users request or via cron. The plugins will have access to necessary data and will be responsible for choosing the correct data and proper location of information. ''Consider if XML with XSLT is a viable solution.''


==Export API==
To facilitate this as well as other aspects of grading there will be "gradebook only" grades. That is, there will be grades that appear only in the gradebook, they will not show up through other aspects of the course eg. in sections, or as assignments.


A great need is to connect grades to external systems, such as Student Information Systems.
==Display API==


A plugin system should be added that can export grades to external systems, either at the time grades are added or via cron.  The plugins take care of which data is chosen and where it goes.
Modular display plug-in sytem. Will allow alternate viewing methods of grade information. eg. Alternate display methods, statistics, or Graphing plug-ins.


==Other ideas==
==Other ideas==
There are multiple contributed addons that allow for grading of activities that do not take place within moodle. This is necessary to allow teachers to only use moodle's gradebook for grade entry. A modular grade import system would naturally follow. This export/import system should support major gradebook programs such as "Easy Grade Pro" and "Making the Grade."


Graphing plug-in?
Grades should be calculated as an ongoing grade and an overall grade. That is, the ongoing grade should calculate a grade for only those grade items that have been attempted or completed, and the overall grade should calculate a grade for everything in the gradebook. This is really for informational purposes, but gives a student a sense of "where they are now" in a course.
 
Existing functionality of the gradebook will remain; weighting, categories, curving/scaling, extra credit, drop the 'X' lowest.


So that data from the gradebook can create graphs/charts but also so people could easily extend the type of graph/charts available by writing extensions for the plug-in.
Existing category functionality will be extended to allow nesting and active/inactive status. This will allow for greater flexibility of calculations.


Grading scheme plug-in interface?
Grading scheme or plug-in interface
This will allow for greater flexibility in calculating a final grade for a student. Things to consider will be statistics based grade scales eg. "+/- X Standard deviations", must pass with X or better in category Y or no grade. This will also allow for alternatives to the USA High School/College format so that the gradebook scheme is appropriate for other countries and grading methodologies. Consider how this may overlap with support for manual or ad-hoc calculation columns that are not connected to any activity table "calculated columns".


So that the dominant USA High School/College format can be changed to grading for other countries  and year groups. Schemes could be created by either programmers or maybe even a forms interface for teachers to create schemes and save them off for sharing between teachers and across courses. Probably incorporating the scales used within it.
Better implementation of scales
This may require work to the scales engine. But there should be better gradebook support for scales. There are three scenarios for the gradebook with scales. 1. Entirely points (numeric grades) 2. Mixed Scales and Points 3. Entirely Scales. These three scenarios should be appropriately handled.


Formula interpreter?
Security Issues
There need to be sitewide security options. These will include at least the following; grades must be delivered over SSL (https), turn off grade download features so that grades cannot be downloaded, and maybe encryption of downloaded grades?


The grading system could include a simple interpreter of mathematical formulas(as the one in quizzes). This could allow the teacher to specify how to compute the final grade from activities.
Roles
Implement proper roles for the gradebook, maybe create a new role "Grader" that will only see and create individual assignments at a time and not aggregate grade data, and will not be able to change any other information.


(also maybe into activities themselves) This formula needs only a few operators: sum, product, root/power, conversion (from letter to numbers) , if (with some simple Booleans), and parenthesis. One of the aspects to work carefully is to assign clear variable names to all activities  or maybe groups of them.


==See also==
==See also==

Revision as of 17:14, 12 October 2006

This page is to create a specification for the next generation of Moodle gradebook. If you edit it, please try and keep modifications under the correct headings.

Centralising data

Currently (in all versions up to 1.6) Moodle uses a "pull" model for grade collection. That is, at the time a user requests a view of the gradebook, each activity module is polled for grades and either returns grades or it doesn't. These are then massaged into the gradebook view.

Problems with this are bad performance and less flexibility.

In the next version, the modules must "push" their grades to the central gradebook at the time grades are changed. For example, if a student completes a quiz, the quiz module should call a central function such as grade_store() with courseid, userid, moduleid, column name, grade type and grade. This data gets stored in a central table (like grades).

Modules can store grades internally as well if they want to (for efficiency and reports etc). All storing of grades centrally should take place via the API function: modules must not manipulate the grades table directly.

The API should allow for locking grade items. This should allow modules to lock the grade from being edited via the gradebook, and allow the gradebook to lock modules from changing grades. This will be useful so that the instructor can set the gradebook to "locked" for an item and then say the quiz module cannot change the grade for a student if they take the quiz again.

An option in the gradebook should allow grades to be retained even if the activity that generated it has been deleted. If this is turned off, then when displaying the columns, a clean-up function should check the course format, and remove columns belonging to obsolete activities.

For backward compatibility, a Moodle cron trigger should cause the gradebook to periodically look in activity modules for an old-style xxxx_grades() function, then call that function to extract and cache grades locally.

Grade status should be easily discernable at a glance in the gradebook possible grade item status include: incomplete, excluded, complete (not graded), graded. This will help with creating conditional activities, and the features required by conditional activities should be considered.

There should be a history of grades and how they were changed. There should be a clear history of how a grade was changed information should include: when it was changed, who (or what) changed it, comments.

Import/Export API

A great need is to connect grades to external systems, such as Student Information Systems.

A modular plugin system will be added that can export and import grades to and from external systems. The plugin system should allow for grades to be imported or exported at the users request or via cron. The plugins will have access to necessary data and will be responsible for choosing the correct data and proper location of information. Consider if XML with XSLT is a viable solution.

To facilitate this as well as other aspects of grading there will be "gradebook only" grades. That is, there will be grades that appear only in the gradebook, they will not show up through other aspects of the course eg. in sections, or as assignments.

Display API

Modular display plug-in sytem. Will allow alternate viewing methods of grade information. eg. Alternate display methods, statistics, or Graphing plug-ins.

Other ideas

Grades should be calculated as an ongoing grade and an overall grade. That is, the ongoing grade should calculate a grade for only those grade items that have been attempted or completed, and the overall grade should calculate a grade for everything in the gradebook. This is really for informational purposes, but gives a student a sense of "where they are now" in a course.

Existing functionality of the gradebook will remain; weighting, categories, curving/scaling, extra credit, drop the 'X' lowest.

Existing category functionality will be extended to allow nesting and active/inactive status. This will allow for greater flexibility of calculations.

Grading scheme or plug-in interface This will allow for greater flexibility in calculating a final grade for a student. Things to consider will be statistics based grade scales eg. "+/- X Standard deviations", must pass with X or better in category Y or no grade. This will also allow for alternatives to the USA High School/College format so that the gradebook scheme is appropriate for other countries and grading methodologies. Consider how this may overlap with support for manual or ad-hoc calculation columns that are not connected to any activity table "calculated columns".

Better implementation of scales This may require work to the scales engine. But there should be better gradebook support for scales. There are three scenarios for the gradebook with scales. 1. Entirely points (numeric grades) 2. Mixed Scales and Points 3. Entirely Scales. These three scenarios should be appropriately handled.

Security Issues There need to be sitewide security options. These will include at least the following; grades must be delivered over SSL (https), turn off grade download features so that grades cannot be downloaded, and maybe encryption of downloaded grades?

Roles Implement proper roles for the gradebook, maybe create a new role "Grader" that will only see and create individual assignments at a time and not aggregate grade data, and will not be able to change any other information.


See also