The Instructure Community will enter a read-only state on November 22, 2025 as we prepare to migrate to our new Community platform in early December. Read our blog post for more info about this change.
Found this content helpful? Log in or sign up to leave a like!
I just updated outcome scores as students submitted missing work. I am using mastery based learning gradebook to keep student grades based upon mastery of course outcomes. The final score on an each outcome is set to be calculated by a 65% decaying average. Based upon the settings and other questions/posts, it appears my outcome scores are not calculating based upon the due dates of assignments which are aligned to each outcome.
Below is an image of some student scores and the issue I am seeing. In the student data for this outcome, the last item - based upon due date - is DW1 - Wk 05 Skill Check Common Elements Quiz #2 & Data Collection & Calculations. [2nd item in list in image] If due date is used , the summative outcome score should be (.65*4.5)+(.35*5) = 4.68 as 4.5 is last score and average on all other scores is a 5
Here is what appears to be happening (.65*5)+(.35*4.88) = 4.96 as 5 is last score entered and average on all other scores is a 4.88 The scores for ICW1 - LAB - Data Collection & Calculations Day 02 - Al & Zn Calculations [the first line in the image above] were the most recent to be entered [due to students making up work].
I thought scores were to be 'ordered' for decaying average based upon due date and not date entered. Has anyone else encountered this issue?
I actually chatted with one of the canvas help people today, and a colleague tested and verified, that Canvas uses the date it is graded as it calculates the decaying average. Something to do with it ordering the "artifacts" which are created only when an outcome is scored not when a the assignment that assessed that outcome was due.
I was disappointed to find this out as well.
Abstract:
Canvas does not use the due date (at all) when calculating the decaying average. It uses the submission date and if that's not available, then it uses the date graded. If late work is allowed, then that becomes the most recent submission, even if you had previously entered a 0 for the assignment. If you are manually entering outcomes, you can probably trick Canvas into doing it the way you want.
Details:
Do you know where you got your idea that the due date determined things? Was it here: Decaying Average Outcome Question
Due dates are soft in Canvas and students can turn in things after the due date. The available until date is what determines when submissions are no longer allowed. Due dates aren't even used in some courses or for certain assignments. And due dates can be changed so that what was originally the first assignment by due date is now the third assignment by due date.
I have never seen anything to indicate it is based on due date until I searched for it when answering this question, which is why I asked. Everything I've ever seen, or would expect based on what I wrote above, is that it most-recent means the most recently submitted assessment rather than due date.
The documentation is in the Canvas Guides What are Outcomes? In there, there is a potentially ambiguous statement:
The Decaying Average calculation factors the average of all assessment items while weighing the most recent (current) item at a higher percentage
They say "most recent" and "current" item, but don't define whether that is based off of the assignment due date or the submission date.
A few paragraphs later, it gives an example with
(scores listed chronologically from oldest to most recent)
But it doesn't define chronologically as by due date or completion date. Arguably, they probably don't need to as most people would read it as the submission date.
I did a little bit of research into the source code. This may not be the definitive place, but it is a place where it's defined and Canvas is pretty good about either reusing code or defining something consistently. It's from the rollup_score_aggregator_helper.rb file. There's more to the file, but the relevant lines here are:
def result_time(result)
(result.submitted_at || result.assessed_at).to_i
end
Basically, what that says is the time to use for the result is when the assessment was submitted. If that is not available, then use the time when it was assessed (graded). There is nothing there about when the assignment is due.
I'm wondering if the answer provided in the original link I gave is practically correct without being technically correct. There, janiesolinski-ruddy wrote:
The most recent would be based on the due date but if the student did NOT turn it in and it was NOT set as a zero for a missing assignment, then the assignment linked to the outcome prior to that one would be worth the 65%.
If a student does not turn in an assignment, there is no submitted_at (submission) date for it. The act of you going through and assigning a 0 for the grade would provide an assessed_at (graded) date for it. Then it would count the first attempt as a 0. If neither of those happens (student submitting or you putting in a 0), then there is no outcome for it to be used, so what Janie writes at the end is true, but it might be misinterpreted by some. She says that the second assignment that is turned in gets counted as the latest, not the one that was never turned in or graded. If students submit assignments when they are due and you put in 0's for the non-submitted assignments, then it appears that they are sorted by due date and in practical terms, they are. But in technical terms, it's not really, it's by the submission date and then the assessment date.
However, that's not the same thing as what you're talking about and she didn't address your situation (late work), which is why I want to distinguish what's really happening. Since you haven't met the conditions of things being turned in by the due date, what she says doesn't fully apply. If the student goes through and completes the work late, then there would now be a submitted_at date and it would still be the most recent one, even though it was due earlier and another assignment had been completed in the meantime.
For example, here is one of my submissions from by sandbox.
Just now, I went through and resubmitted the assignment and now the information looks like this. Note that the submitted_at date has changed (as well as the number of seconds it was late and the fact that it isn't graded yet).
If I go through and grade it, I now get this. Notice that now the graded_at date has changed (as well as the grade_matches_current_submission).
The Ruby code that I posted earlier uses a short-circuit assignment. It takes the submitted_at date if it is available and the assessed at (graded_at) date if the submitted_at date is not available. Note that it is not a case of "take whichever came first", it is take the submitted at first and the graded at only if the submitted at isn't there.
The implications of that are that if you have graded an assignment, including putting a 0 down for a missing assignment, and the student comes along later and turns in the assignment because it's still available for them to complete, then the date when they submitted it overrides the date when you graded it and it becomes the most recent submission.
This is consistent with the definition from the guide of "most recent" meaning the last one that happened chronologically.
Let's say a student completes assignment 2 on time but turns in assignment 1 two weeks late and after assignment 2 has already been turned in. You have the same outcome on both. Canvas will consider the assignment 1 to be the most recent one. This is the way that it should be done because the latest attempt reflects their most recent level of understanding. It doesn't matter if they complete something 2 weeks late because in that 2 weeks they may have learned more and so now their understanding and mastery is greater with assignment 1 (late) than it was with assignment 2 (on time)
I understand that some people may not want that. I can envision a teacher making the first attempt easier, the second attempt at an outcome harder, and the third attempt even more difficult. Then they assess it three times and they want the last one to count the most. Canvas does not know this is what you're doing, nor is there a way within the outcome itself to indicate that. To Canvas, the outcome is the outcome and there aren't levels of the outcome, there's only levels of mastery of the outcome. If you're doing this system, then you might consider saying that you cannot get anything higher than a 3 out of 5 on the first attempt.
However, that doesn't fix your issue. Not allowing late work is the fail-safe way to do that, but you probably don't have that ability in K-12.
Another option is to make all assessments that incorporate the same outcome operate at the same level of difficulty. Then it really doesn't matter whether they complete assignment 1 after assignment 2 and Canvas will weight the latest completed the most heavily. This is the most aligned with what
There are other ways to grade the outcomes, but since they don't transfer over to the gradebook directly, Canvas is approaching it from the perspective that it's a measurement of mastery not a measurement of grade in the course.
If you are manually entering scores and outcomes for no-submission or on-paper assignments, then you can trick Canvas. Always enter values in the correct due-date order. In the example I gave, always enter assignment 1 before assignment 2. Then, if someone turns it in late, you can grade assignment 1, then go back and grade assignment 2 by changing something, saving it, changing it back, and saving it again (unverified but it should work).
Disclaimer:
I'm not a Ruby programmer, so there may be some things I'm missing when I look at the code. My comments are not based off of looking at the code and understanding how Canvas works. I did not actually go into a Learning Mastery gradebook and look at the options to see what happened. I would want the last submission, even if it were late, to be the most recent one.
Thanks for the thorough follow up and ideas to try to see if I could make this work for how I keep grades in a K-12 environment. Since I was mid-way through our 1st quarter, I needed a solution to this issue ASAP that did not create a bunch of extra steps such as re-entering grades on a series of assignments to get them in the order I wanted for the weighted decaying average. Due to my time crunch, I have completely abandoned keeping grades in Canvas and set up a Google sheets system that calculates weighted averages based on order of scores [regardless of when I enter them] and pushes this data out securely to my students. Since we are in a trial period, we are required to still manually to enter my grades into district's SIS.
Our district is planning on moving onto the paid Canvas platform for the start of next school year; when that occurs, I will be contacting our Canvas manager about this concern as numerous teachers in my building are moving towards standards based and mastery learning. Until that time, this issue is resolved for me.
Hi John! Were you able to get any more information on how this could work for your standards based grading buildings? We too are struggling with getting the Learning Master Gradebook to work for our teachers. We have explored other Mastery gradebooks (Mastery Connect is one), but since we use Canvas as our LMS we are hoping it is our answer!!
Hi Catherine Unfortunately, I'm still in the same situation I've been in with this issue. I've reached out CSM, we are now on the paid platform. 1st attempt was directed to post in the forum and see where it went from there. I'm not optimistic this will get enough up votes to merit action as this is a very specific need of mastery-based teachers. I just engaged our CSM on this topic again this week. As more of the teachers in my building move to mastery grades, this is going to be more of a pressing issue. Like you, I/we were hoping that Canvas would be our one stop shop. As of right now, I'm still using my Google spreadsheet system as it is the least additional work for me and puts mastery data back in the hands of my students/parents in the calculated format I want for my courses. I'll post again if anything changes.
Hello @jgerber2 ...
I was looking through older questions posted to the Canvas Community, and I noticed that we haven't heard from you since you first posted this question on September 26 and then received replies from hkaplan and @James later that day. Have you had an opportunity to review their responses? If so, did either of their replies help to answer your question? Do you have any other questions as it relates to your initial posting? If you feel that either answer above has helped to answer your question, please go ahead and mark it as "Correct". However, if you are still looking for some help from members of the Community, please post a message below so that we can help you out. For now, I'm going to mark your question as "Assumed Answered" because we've not heard from you in over two months and because there hasn't been any new activity in this thread for the same amount of time. I hope that's alright with you, John. Looking forward to hearing back from you soon!
Hi @Chris_Hofer ,
We are noticing this in our district as well and it seems as though it is calculating based on most recently graded, not due date. This is frustrating because it means that different assessments hold different weights for different students and a student could go back to something assessed at the beginning when basic learning was happening and it could count for more than something in which a complex level of learning was happening.
The only thing that could solve this would be to not offer students the ability to reassess but that goes against current best practices for grading and also goes against our district grading practices framework. Clarification is necessary here.
Glad to see that others are still raising this issue. After being told I should place in the requested features to be upvoted for possible action by Canvas, I honestly abandoned all hope of this getting resolved nearly two years ago. We have raised this issue several times with our CSM.
As has been mentioned again, how Canvas has this set up is against best practice.
Issue is still unresolved. Currently deploying my curriculum in Canvas but using a system of Google sheets to keep my grades as the current method Canvas has deployed for decaying average is not workable for my approach to grades.
Thank you, jgerber2, for raising this question and James, for your clear responses.
To all interested in this topic, please consider adding comments to this related feature idea (I believe this is how ideas currently gain traction in the new system).
While I agree a huge component of equitable grading practices centers around the need to recognize and reward growth, instructors should be able to choose how they address this with their grading system. Many instructors save late submissions to grade after the more pressing current work. If they do this and enter these grades after something that quite possibly has been completed later, they are now counting the late (and often more careless) work more heavily. What would be most effective would be to allow individual instructors to determine what is best for their courses. To this end, adding a toggle for instructors to choose whether they define "most recent" as the most recently graded or the most recent due date would be the best of both worlds. The ambiguity of the current setup is leading to inaccuracies in grading and also adding additional work for teachers.
Please consider viewing and adding comments to the feature idea linked at the top of this post.
Community helpTo interact with Panda Bot, our automated chatbot, you need to sign up or log in:
Sign inTo interact with Panda Bot, our automated chatbot, you need to sign up or log in:
Sign in