General developer forum

Calculations in Rubrics

 
 
Picture of Michael Grainger
Calculations in Rubrics
 

Hi,

Does anyone think it would be possible to use rubrics that only carry forward the lowest grade/points from the whole grid to the gradebook?

For example

Grading Criteria 1.

 

PASS

Provide Accurate descriptions

70 Points

MERIT

Provide Explanations

80 Points

DISTINCTION

Provide critical comment

90 points

Grading Criteria 2.

PASS

Good Presentation

70 Points

MERIT

Excellent Presentation with appropriate use of colour

80 Points

DISTINCTION

Professional standard of presentation

90 Points

(this is a random example of a rubric in case anyone thinks the criteria are a bit strange!)

So........

If a student Achieves a distinction for criteria 1 but only achieves a pass for criteria two then they would only score 70 points in the moodle gradebook. In other words; only 1 grid square will count towards the overall score and that square will be the one with the lowest score for the whole grid (unit).

The intention is to use a modified version of the standard rubric grading method. It will be used for BTEC grading. I am aware of other plugins under development for BTEC grading but this method would fit perfectly into a gradebook design I am already using which is working really well to add up unit scores and provide accurate end of year grades in much the same way that Edexcel (the exam board) calculate grades through their own systems. 

We currently use outcomes to achieve a similar result but the visual nature of the rubric along with more detailed feedback for each criteria would be really beneficial.

Would anybody be able to help with this or offer any ideas?

Any advice would be appreciated.

Thanks

 

 

 
Average of ratings: -
Picture of Andy Braden
Re: Calculations in Rubrics
 

Would it be reasonable/accurate to take from what you are describing and create a request to provide the ability to define the aggregation method within the Rubric rather than assume Sum as the aggregation. This would allow me to choose highest, lowest (as fits your example), sum or average much like I do in a "standard" grading method in the activity settings.

Maybe it would be useful to also have an option where I choose which criteria within the rubric is the one to be applied to the grade (when viewing/using) I would imagine in this mode the grader could evaluate all the critera provided but select the one that counts for the grade based on a more subjective model than highest/lowest/etc.

 

 
Average of ratings: -
Picture of Michael Grainger
Re: Calculations in Rubrics
 

Hi Andy. Very good suggestions. Yes it would be very useful to be able to choose the aggregation method from within the rubric and I guess this would make it more flexible and useful for a number of different purposes rather than just the BTEC grading which I am hoping to achieve.

The idea of the grading choosing which grade to put forward is also very good, although does increase the chance of user error where the grade put forward and the one highlighted in green may not necessarily match.

They only way i can think of to achieve something similar would be to use outcomes to provide graded scores against set criteria with rubrics set to zero points used to display a visual progress through the grid to students. However, it isn't actually possible to set rubrics to a zero score as it defaults instead to 1,2,3 etc for each consecutive level.

I do welcome the idea of aggregation methods from within the Rubric though. Thank you.

 
Average of ratings: -
ME
Re: Calculations in Rubrics
Group Particularly helpful Moodlers

I made  quick patch to Moodle 2.5 ( not the smartest approach) but here it is:

diff --git a/grade/grading/form/rubric/lang/en/gradingform_rubric.php b/grade/grading/form/rubric/lang/en/gradingform_rubric.php
index 3f53fff..efb91d2 100644
--- a/grade/grading/form/rubric/lang/en/gradingform_rubric.php
+++ b/grade/grading/form/rubric/lang/en/gradingform_rubric.php
@@ -76,4 +76,5 @@ $string['showscorestudent'] = 'Display points for each level to those being grad
$string['showscoreteacher'] = 'Display points for each level during evaluation';
$string['sortlevelsasc'] = 'Sort order for levels:';
$string['sortlevelsasc0'] = 'Descending by number of points';
-$string['sortlevelsasc1'] = 'Ascending by number of points';
\ No newline at end of file
+$string['sortlevelsasc1'] = 'Ascending by number of points';
+$string['takelowest'] = 'Take the lowest criteria grade as the grade';
\ No newline at end of file
diff --git a/grade/grading/form/rubric/lib.php b/grade/grading/form/rubric/lib.php
index 59058f8..422ea88 100644
--- a/grade/grading/form/rubric/lib.php
+++ b/grade/grading/form/rubric/lib.php
@@ -397,7 +397,8 @@ class gradingform_rubric_controller extends gradingform_controller {
'showscoreteacher' => 1,
'showscorestudent' => 1,
'enableremarks' => 1,
- 'showremarksstudent' => 1
+ 'showremarksstudent' => 1,
+ 'takelowest' => 1
);
return $options;
}
@@ -896,6 +897,7 @@ class gradingform_rubric_instance extends gradingform_instance {
*/
public function get_grade() {
$grade = $this->get_rubric_filling();
+ $options = $this->get_controller()->get_options();

if (!($scores = $this->get_controller()->get_min_max_score()) || $scores['maxscore'] <= $scores['minscore']) {
return -1;
@@ -909,9 +911,23 @@ class gradingform_rubric_instance extends gradingform_instance {
$mingrade = $graderange[0];
$maxgrade = $graderange[sizeof($graderange) - 1];

- $curscore = 0;
+ if(!empty($options['takelowest'])){
+ $curscore = $maxgrade;
+ } else {
+ $curscore = 0;
+ }
foreach ($grade['criteria'] as $id => $record) {
- $curscore += $this->get_controller()->get_definition()->rubric_criteria[$id]['levels'][$record['levelid']]['score'];
+ $score = $this->get_controller()->get_definition()->rubric_criteria[$id]['levels'][$record['levelid']]['score'];
+ if(!empty($options['takelowest'])){
+ if($score < $curscore){
+ $curscore = $score;
+ }
+ } else {
+ $curscore += $score;
+ }
+ }
+ if(!empty($options['takelowest'])){
+ return $curscore;
}
$gradeoffset = ($curscore-$scores['minscore'])/($scores['maxscore']-$scores['minscore'])*($maxgrade-$mingrade);
if ($this->get_controller()->get_allow_grade_decimals()) {

Smartest approach would be to create a tracker ticket with an actual patch like this that Moodle HQ could look over. The issue with my approach is that this is a single option and I could see the opposite of your request, meaning wanting to use the highest value not the lowest. In which case this code would need to be updated again with more if statements, which is not ideal.

So I would say this is a dirty hack to show that it is possible. Aka proof of concept I think.

 
Average of ratings: -
Picture of Michael Grainger
Re: Calculations in Rubrics
 

Thanks Jason, that was a really speedy response!

Where exactly should I place this code to test it? I'm running a test version of moodle 2.5.1 on my local machine using mamp.

Once I've had look I will be happy to create a tracker ticket (even though I'm not sure how to do this - I'll figure it out though I'm sure).

 

Thanks again.

 
Average of ratings: -
Picture of Marcus Green
Re: Calculations in Rubrics
 
Average of ratings: -
Picture of Michael Grainger
Re: Calculations in Rubrics
 

Hi Marcus,

 

Yes I have seen that thread. I have actually been using your BTEC plugin and I really like what it does. However it doesn't quite fit with the way that I want to assess. I can cetainly see why so many people love the way it works though.

For my own particular grading method I would like something which would work like a crossover between  a grading form and a rubic. I want the students to see a grid like the one in my original post because that's how Edexcel present them in the spec and it's the way they should ideally be presented in paper based assignment briefs. Its also the style of grid we use to assess. The way that the BTEC qualification works to score each unit based on lowest column score from multiple rows is the driving force behind wanting to use the rubric. In addition (as you alreay know), you must first of all achieve pass critera before achieving merit etc.

I'm trying to keep the interface that students see as simple as possible. I really like the way that Rubric uses the hightlighted green block to show progress. I also like the way that your plugin uses the functionality of quick comment buttons like an advanced grading form and the way that it already does the grading aggregation as the lowest grade. However because of the way that your plugin carries forward a numeric value based on PASS, MERIT, DISTINCTION it does't quite carry forward the correct numeric value for my purposes.

Once in the grade book I have a category set up for each unit, with the calculation for each unit carrying forward the lowest grade towards the course total. With a few other calulations thrown in along the way it adds up course totals very accurately and provides an end of year grade for the student in the grade book. For this to work each grade is assigned a numeric value P=70, M=80, D=90. This is the way that Edexcel calulates the end of course grade based on those final scores for each unit (along with a final weighted multiplication based on the the value of each unit - as some units are double scoring). It sounds fairly long-winded on paper but in reality it actually works really well. I have also had to set up some very strange grading scales for this to work in a way that displays text/word based grades rather than just numbers.  I'll try to put together a video demo and some screen shots as soon as I get time.

I would welcome you thoughts as you have been developing your own plug-in very successfully. I know that my ideas would need to some tweaking for other BTEC courses (rather than just music) as I know that many units use partial grids where certain criteria have a highest possible score of PASS. With this in mind the idea of just a simple lowest score aggregaion would obviously not work for everyone.

I gather that you are based in the UK - I'd be really happy to have a more detailed chat if you are interested - perhaps over skype. I'm sure I have a solution that many people who teach BTEC would welcome even if it may only be limited to Music Courses and I'd be happy to share all of the resources I have with others.

I know that Bedford College are developing a system for BTEC and I'm really looking forward to seeing how this works (I believe it will be due for public release fairly soonish).

Thanks for you interest so far Marcus. It was your own work on the BTEC plugin which has inspired me to create this post in the first place.

 
Average of ratings: -
Picture of Michael Grainger
Re: Calculations in Rubrics
 

I realise now that Jason has provided a patch. 

Can anyone offer any advice please on the best way to run this patch on a test install of 2.5 running on mamp on mac osX 10.8.4?

 

Thanks

 
Average of ratings: -
ME
Re: Calculations in Rubrics
Group Particularly helpful Moodlers

Technically what i provided was a diff file. I couldn't get the patch export for git working on Moodlerooms private repo the way i wanted.

The diff is of 2 files. 

  1. grade/grading/form/rubric/lang/en/gradingform_rubric.php
  2. grade/grading/form/rubric/lib.php

The simplest process would be to edit each of those files and read through the diff file and add the lines of code that say add. I didn't actually remove anything from the code (even if the diff says I did).

My concern with this is that it would be a direct hack of core. I would instead recommend copying the grade/gaming/form/rubric directory and renaming rubric to something else. Then apply the changes to that. This way you could upgrade the Moodle rubric without fear of these changes impacting you. I think the posts above give a clear indication that were Moodle HQ to consider this feature they would probably do it in a more involved way to provide more flexibility to the rubric than just this simple request. This to me means that what I did would most likely not get in to Moodle HQ directly, it would be modified.

 

Attached is a copy of my rubric directory redone on stock Moodle 2.5.1

 

 
Average of ratings: -
Picture of Michael Grainger
Re: Calculations in Rubrics
 

Thanks very much Jason,

It works.....to an extent. Like you said though, it's proof of concept.

Your contribution works perfectly but moodle still wants to divide all of the available grades between the number of grid squares with a value of 1 or above. This means that if there are two rows of criteria, each with a possible score of 1, 2 or 3 and the maximum grade for the assignment is 3, each square would actually be worth 0.5 points (the zero points squares are not counted but are required by the rubric)

That aside..... the lowest aggregation works brilliantly, thanks for your help.

If you have any ideas on the above problem your input would be appreciated.

I will be raising a ticket to see if the rubric method can be made more flexible. If I can get it working just a little bit more smoothly I'd like to create a video walkthrough to demonstrate how this mod would work with the gradebook for simple BTEC grading.

 
Average of ratings: -
Picture of Michael Grainger
Re: Calculations in Rubrics
 

I have created a tracker ticket for this idea if anyone is interested? MDL-41686

 
Average of ratings: -
ME
Re: Calculations in Rubrics
Group Particularly helpful Moodlers

I am going to cross pollinate, but seems like Rick wants support for lowest rubric value selected https://moodle.org/mod/forum/discuss.php?d=234197#p1032138. So maybe you have some support there for the ticket as well. Different use case but a similar need imo.

 
Average of ratings: -
Picture of Michael Grainger
Re: Calculations in Rubrics
 

Thanks Jason.

I raised a ticket but was pretty much told it was a no go within minutes. Moodle HQ are not interested so it now seems that I need to find a developer to help me develop a plugin which will suit my needs. What do you think would be the best way to go about this. My own skills are fairly limited - I'm ok with HTML and a bit of Javascript but that's as far as it goes. I'm very confident that a plugin of this nature would fill a gap (even with the BTEC modules that have already been developed - this would do something a bit different).

Thanks

 

Mike

 
Average of ratings: -