Multiple quizzes in one course, complex completion requirement

Multiple quizzes in one course, complex completion requirement

by Hal MacLean -
Number of replies: 4

Hi - not had to deal with this sort of thing before, and hoped someone has had experience to help.

In a course with 5 quizzes (each has 20 questions, pass grade set to 75), the user must get a required total in the course - simple enough.

  • The quizzes are weighted to provide different percentages towards the course total - also ok.
  • The user must pass at least 4 of these, and in the 5th one (whichever of the five that is) they must get at least 60 to be considered as completing the course.
Any of the five can be scored at 60... 

So how do we set this up? Gradebook categories for the weighting... but how to detect a single quiz out of five has a grade of at least 60, and all the rest are at least 75?

  • Quiz 1 - weighting 25%
  • Quiz 2 - weighting 25%
  • Quiz 3 - weighting 30%
  • Quiz 4 - weighting 10%
  • Quiz 5 - weighting 10%

We can use any standard moodle functions built into v3.8+, but we cannot add any commercial plugins to help us.

Answers warmly welcomed!
Average of ratings: -
In reply to Hal MacLean

Re: Multiple quizzes in one course, complex completion requirement

by Dominique Bauer -
Picture of Documentation writers Picture of Particularly helpful Moodlers Picture of Plugin developers

Hello Hal,

You can use Grade calculations.

By the way, if it takes a score of 75% to pass a quiz and 60% to pass the quiz with the lowest score, "Max grades" should be considered rather than "Weights".

In the following example, let's assume that the "Quiz ID numbers" are q1, q2, q3, q4, and q5. Suppose also that the "Max grades" are 10, 50, 20, 100, 30 for quizzes q1, q2, q3, q4 and q5, respectively.

The idea is simple. Use Boolean values ​​to check the different conditions. For example, (q1/10*100)>=75 is equal to 1 if the student's mark is equal to or greater than 75% for quiz 1, or equal to 0 otherwise, (q2/50*100)>=75 is equal to 1 if the student's mark is equal to or greater than 75% for quiz 2 or equal to 0 otherwise, and so on.

The following formula

0.5*((min((q1/10*100), (q2/50*100), (q3/20*100), (q4/100*100), (q5/30*100)))>=60

is equal to 0.5 if the lowest score among the five quizzes is equal to or greater than 60%, or equal to 0 otherwise.

A sum of the Boolean values equal to or greater than 4.5 indicates that the student has passed at least 4 quizzes with a mark of 75% or more , and that he has obtained a mark of 60% or more on the other quiz, in other words that he has completed the course. Otherwise, the student has not fulfilled the conditions.

Now, in the Gradebook setup, add a grade item. Set its name to anything, its ID number to "sumquizzes" and its calculation to:

= ((q1/10*100)>=75) + ((q2/50*100)>=75) + ((q3/20*100)>=75) + ((q4/100*100)>=75) + ((q5/30*100)>=75) + 0.5*((min((q1/10*100),(q2/50*100),(q3/20*100),(q4/100*100),(q5/30*100)))>=60)

Add another grade item. Set its name to "Completion" and set its calculation to:

=if(sumquizzes>=4.5,1,0)

To make sure there won't be any error because of the precision of computer numbers, it might be better to use

=if(sumquizzes>=4.4,1,0)

So, the student has completed the course if the value of the Completion item is equal to 1, and he has not completed the course if the value of the Completion item is equal to 0.

When writing the above two formulas, pay attention to the syntax, especially the number of parentheses.

In summary, just add two grade items with simple calculations.

Average of ratings: Useful (4)
In reply to Dominique Bauer

Re: Multiple quizzes in one course, complex completion requirement

by Hal MacLean -
That's quite brilliant!

I had explored doing similar, but my attempt was not so elegant.

I have used weightings on grade categories, with each quiz inside it's own category, which then calculates the course total accordingly. I get the raw score for the quiz inside the category, but the calculated score for the course total. I then added a calculation to each grade category to check if the raw score was above 60, and if so to use that score, but if not, to drop it to zero.

=if([q1]>=60,[q1]+0,0)

(single square brackets are supposed to be double square brackets in my example here. Interestingly, I had to have a calculation for the 'if true' section, and could not simply refer to the [q1] item. I think that's a 'feature' of how the grade calculations work).

I have used your excellent suggestion for a new gradebook item to summarize the quizzes. The only alteration I made from your equations was that I removed the calculation for the weighting within each parenthesis, as it isn't needed with the categories handling the weighting. I would not have thought to use Boolean - it was never a strong point in my math ;)

The last step, very simple! Add a new grade item (Completion Check), and check that the quiz summary is above 4.4... perfect!

In the Course I can add a simple certificate to be awarded if the 'Completion Check' grade item is a value of 1.

The result is the gradebook shows the actual score per quiz, the weighted score per category, the course total percentage plus a visual check on the summary... meaning the certificate can be issued.

I'd not have got this far without your input, and for that I am very grateful smile
In reply to Hal MacLean

Re: Multiple quizzes in one course, complex completion requirement

by Dominique Bauer -
Picture of Documentation writers Picture of Particularly helpful Moodlers Picture of Plugin developers

Thank you for your reply. I trust you for the weightins.
Cheers.

In reply to Dominique Bauer

Re: Multiple quizzes in one course, complex completion requirement

by Hal MacLean -
Thanks - yes, the grade categories seem to calculate the course total just fine:

Image of part of a grade book that a teacher might see

Your calculation for the 'Exam Summary' becomes this (once again, only single brackets used for display purposes):

= (([001])>=75) + (([002])>=75) + (([003])>=75) + (([004])>=75) + (([005])>=75) + 0.5*((min(([001]),([002]),([003]),([004]),([005])))>=60)

Then the completion check is a very simple thing:

=if([sumquizzes]>4.4,1,0)

Exactly as you suggested.

Hiding the two manual grade items keeps that from the users... plus we changed the completion settings for the quizzes so that whilst there is a passing grade, the activity completion is to simply 'require' a grade, but not the passing grade. They then see this sort of thing on their course page:

Image of course completion checkboxes

If only one is red, the certificate (which is now looking for a '1' in the completion check) is available, else it is locked.

Boolean was the answer smile
Average of ratings: Useful (2)