Moodle

Make it possible to add conditions (IF) to grade calculations in 1.9 gradebook - please

Details

  • Type: New Feature New Feature
  • Status: Open Open
  • Priority: Major Major
  • Resolution: Unresolved
  • Affects Version/s: 1.9
  • Fix Version/s: 2.0.8
  • Component/s: Gradebook
  • Labels:
    None
  • Environment:
    na
  • Affected Branches:
    MOODLE_19_STABLE
  • Fixed Branches:
    MOODLE_20_STABLE

Description

I understand that when calculating the grade for a category or total grade in moodle 1.9, it is possible to use various formulas:

http://moodle.org/help.php?module=grade&file=calculation.html

However, it does not appear to be possible to use an IF formula (condition) as can be done in Excel.

It would be very useful to be able to calculate the total of x number of graded activities, but not include the scores of those activities that are less than a certain %.

So for example, if there are three graded activities for which students must get 50% or more, the formula in Excel would be as follows:

=SUM((IF(A1>=50,A1,0))+IF(B1>=50,B1,0)+IF(C1>=50,C1,0))

where A1, B1, & C1 are the three graded activities. Here, A1, A2 & A3 are added together, but if the score of any one activity falls below 50%, it is treated as 0%.

For example:

student1
activityA1: 30
activityA2: 80
activityA3: 70
Total: 150 (Not 180)

the total for student1 is only 150 (not 180) because his score for quizA1 is less than 50, and so is treated as zero, so 0+80+70=150

I know it's possible to indicate a "Grade to pass" for any item or category, but this seems to only change the background colour of a score: green for pass, red for fail. It does not effect the category score to which that item belongs.

So, I can see three possible ways of achieving this goal:
1) make it possible to use the 'IF' function in the gradebook as in Excel
2) make it possible to remove from the total calculation any grade that falls below the designated 'Grade to pass": this should be an option, not automatic
3) make it possible for each activity module to return 0% to the gradebook if the score falls below a specified amount - probably the least practical solution

Why would this feature be useful?
Short answer = motivation
In activities that students can do (i.e. submit) more than once, they would be 'encouraged' to achieve more than a bare minimum. For example, in a course in which there were many quizzes, it would be possible for a student to pass by doing very well in just a few quizzes, and then doing lots of other quizzes badly. Yes, their average would be pulled down, but because they had done a few very well, their average may still be high enough to pass. Allowing the teacher to specify a grade below which certain activities must not fall will assist teachers to motivate their students.

Activity

Hide
Nicolas Connault added a comment -

I prefer solution 2, adding a "gradefail counts as 0" option for each grade item, because it's far easier to use than using calculations. However, we could also implement IF, but we won't look at this until 2.0.

Show
Nicolas Connault added a comment - I prefer solution 2, adding a "gradefail counts as 0" option for each grade item, because it's far easier to use than using calculations. However, we could also implement IF, but we won't look at this until 2.0.
Hide
Peter Ruthven-Stuart added a comment -

Nicolas,

Thanks for your comment on this issue.

Yes, I agree that solution 2 makes most sense. It allows teachers to convert low scoring assignments to 0%, so that students are penalized for performing badly. Also, it doesn't require teachers to learn the various IF equations associated with the Excel IF formulas.

That said, including IF calculations in version 2 would be welcome, since this would make the Gradebook even more useful, i.e. a teacher could use the conditional formula to do many more things, not just convert less that x% scores to 0%.

Note to other people coming to this "New Feature" suggestion: In the Moodle Gradebook it is already possible to remove low scoring activities from total scores so that students are NOT penalized for x number of lowest scores.

The original suggestion here is to make it possible to make conditional calculations (using IF formulas). Just one of the advantages of this is that it would be possible to penalize students that had underperformed. Or, put more positively, 'incentivize' students to perform well, by encouraging them to get at lest x%.

Show
Peter Ruthven-Stuart added a comment - Nicolas, Thanks for your comment on this issue. Yes, I agree that solution 2 makes most sense. It allows teachers to convert low scoring assignments to 0%, so that students are penalized for performing badly. Also, it doesn't require teachers to learn the various IF equations associated with the Excel IF formulas. That said, including IF calculations in version 2 would be welcome, since this would make the Gradebook even more useful, i.e. a teacher could use the conditional formula to do many more things, not just convert less that x% scores to 0%. Note to other people coming to this "New Feature" suggestion: In the Moodle Gradebook it is already possible to remove low scoring activities from total scores so that students are NOT penalized for x number of lowest scores. The original suggestion here is to make it possible to make conditional calculations (using IF formulas). Just one of the advantages of this is that it would be possible to penalize students that had underperformed. Or, put more positively, 'incentivize' students to perform well, by encouraging them to get at lest x%.
Hide
Otakar Šprdlík added a comment -

Most of IF formulas can be substituded by other formulas using ROUND, but that are not so straightforward to read.

For example, at one of our courses homeworks have two parts graded separately, but if the student performs well in both, he/she gets a bonus (grade is 0-1 for each part and the bonus is 1 if both grades are >=0.7 (In fact, I would prefer some smooth nonlinear function in that case but the teachers wanted this threshold :

=[[part1]]+[[part2]]+round([[part1]]/0,7/2)*round([[part2]]/0,7/2)

Similar approach can be used to the problem above:
=A1*ROUND(A1/100)+B1*ROUND(B1/100)+C1*ROUND(C1/100)

The formula will come more complicated if the threshold is less than 50%.

We use such "rounding" formulas in several cases. Some of them are very unreadable. Possibility to use IF would improve the situation much.

Show
Otakar Šprdlík added a comment - Most of IF formulas can be substituded by other formulas using ROUND, but that are not so straightforward to read. For example, at one of our courses homeworks have two parts graded separately, but if the student performs well in both, he/she gets a bonus (grade is 0-1 for each part and the bonus is 1 if both grades are >=0.7 (In fact, I would prefer some smooth nonlinear function in that case but the teachers wanted this threshold : =[[part1]]+[[part2]]+round([[part1]]/0,7/2)*round([[part2]]/0,7/2) Similar approach can be used to the problem above: =A1*ROUND(A1/100)+B1*ROUND(B1/100)+C1*ROUND(C1/100) The formula will come more complicated if the threshold is less than 50%. We use such "rounding" formulas in several cases. Some of them are very unreadable. Possibility to use IF would improve the situation much.
Hide
Otakar Šprdlík added a comment -

Fix of my previous comment:

The formula will come more complicated if the threshold is equall or less than 1/3 of the maximum
(33%, not 50%) due to need of some nonlinear transformation before rounding to ensure the result of rounding is 0 or 1, no more.

Show
Otakar Šprdlík added a comment - Fix of my previous comment: The formula will come more complicated if the threshold is equall or less than 1/3 of the maximum (33%, not 50%) due to need of some nonlinear transformation before rounding to ensure the result of rounding is 0 or 1, no more.
Hide
Ivan Periz added a comment -

I think an IF sentence is necessary anyway since it lets you solve things you cannot solve otherwise.

Specially when some students must take specific exams which other students in the same group must not.

For instance, let's say students who failed TEST1 must take TEST2, which will be the only score to take in account.

I would say =IF( TEST2>0; TEST2; TEST1).

That means that students who took TEST2 can forget about TEST1.

Maybe there is another "cleaner" to solve those exceptions. I would be grateful to know about them.

Show
Ivan Periz added a comment - I think an IF sentence is necessary anyway since it lets you solve things you cannot solve otherwise. Specially when some students must take specific exams which other students in the same group must not. For instance, let's say students who failed TEST1 must take TEST2, which will be the only score to take in account. I would say =IF( TEST2>0; TEST2; TEST1). That means that students who took TEST2 can forget about TEST1. Maybe there is another "cleaner" to solve those exceptions. I would be grateful to know about them.

People

Dates

  • Created:
    Updated: