Showing results for 
Show  only  | Search instead for 
Did you mean: 
New Member

How to set a lowest possible grade for quiz


 Is there a way to set the quiz results so that 50% is the lowest a student can achieve?  My district has a 50% policy so that the lowest a student can get on an assignment is 50%, as long as they attempt an assignment.  This is to prevent a disproportionate affect on students' grades based on a few outliers.  
I generally give lots of smaller quizzes with multiple attempts to help my students improve.  But, that often leads to lots of manual, repetitive searching for quiz grades that fall below 50%.  Is there an add-on or a script for this?
Labels (1)
0 Kudos
2 Replies
Community Member

You can utilize the API to traverse the quiz grades. Try

Not sure if this works on New Quizzes. They're an external tool so I don't think the API can get into New Quizzes.

Community Champion


There is not a built-in way to limit scores. Melody ( @melodyc_lam  ) gave half of the solution.

A full solution would require you to first List submissions for multiple assignments to get the current scores. Use the student_ids[]=all parameter to get all of the students. I would also use the submitted_since parameter and keep track of the times when you make the call so that you don't have to keep checking results. That minimizes the number of scores to download so that it doesn't very long each time the script runs. Also be sure to specify per_page=100 and be prepared to handle pagination.

Then, for students who need their grade updated, you can use the Grade or comment on a submission endpoint that Melody listed, although I would use the Grade or comment on multiple submissions endpoint instead. As the name suggests, you can update multiple students with one API call as opposed to having to make an API call for each student.

New Quizzes are external tools and the submissions API will list scores for external tools. One issue to watch out for with external tools is making sure that the external tool doesn't override the existing grade at some point. I haven't tested it (I'm avoiding New Quizzes for as long as I can), but a quiz regrade could trigger that and change the graded_at date without changing the submitted_at date. That means that you might need to repeat the original API call to get the grades and use the graded_since query parameter. In my use of that API call, I use two queries, one with submitted_since and one with graded_since, but that might have been related to my use case. I cannot remember for sure.

This could also be done using the GraphQL interface. It is typically faster than the REST API endpoints we've been giving because it only delivers the information that you ask for rather than a bunch of information that you do not need. It also allows you to get more than 100 records at a time.


A less technical way would be to download the data as an Excel spreadsheet, manipulate the values to disallow anything less than 50%, and then re-upload the data. If you (or someone you know) can write a script, then scripting is definitely going to be faster and it can be automated.


There are other ways to accomplish this for those without programming skills. For example, one could put all of the original quizzes into an assignment group worth 0% of the grade. Then you create a companion assignment in an assignment group that does count. The companion assignment has no submission to keep students from trying to turn things in. Then you have to manually transfer grades, replacing any sub-50% scores with 50%.


My school doesn't enforce it, but I do something similar with much of my grading (I bottom out at 45% instead of 50%) and there are lots of little assignments. For quizzes, though, I let the students get what the students get. Then I make the quizzes worth a the highest percentage of any of the categories. I also keep the average grade on quizzes rather than the highest.

I just analyzed my Statistics course on Wednesday (we turned it into a group project during class). I gave them lots of data about things they did in the course that come from Canvas and asked them to find something interesting. One of the encouraging things was that all but 1 student really was taking advantage of the multiple attempts on the quizzes. In the past, that hasn't been the case. In talking with the students, I discovered that many of them weren't watching the videos until they took the quiz and saw what they missed; then they watched the videos that covered the part they missed -- that wasn't as encouraging. In my class, out of the 25 variables we looked at, the best model for predicting overall grade in the class had a single predictor variable -- the number of participations. How many hours of videos they watched didn't seem to matter, how much time they put into the course wasn't significant, how many times they visited the resource page was irrelevant, but participation (actively doing something) mattered. That may be a result of the minimum 45% if you turn in anything that is on the right path. When I looked at just the quiz scores, the best predictor was the average number of quiz attempts that were made.