@jgerber2 ,
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.