How do I get Canvas to keep the top x scores in a category, rather than dropping the bottom x scores?

Jump to solution
ChrisGrant
Community Member

I think the title says it all. I want to keep the top 6 scores in a category of assignments, but that option isn't available. The only option I'm given is to drop a certain number of the lowest scores.

 

Basically, in this category of assignments, I set a number of different assignments to work on of which the students choose six to complete. I set the gradebook to assign missing assignments a zero, but this of course doesn't apply until the assignment due date is passed. So to keep the score accurate for the student, I have to go in constantly and reset the rule so that a different number of low scores are dropped each time a due date passes. 

I saw a post where someone asked about this about 8 years ago and I'm surprised no one at Canvas has made this very simple change yet - it would be so much more user-friendly. If anyone knows of a way to make this work, I'd be grateful if you'd let me know - and if you don't, please reply or upvote here so that the Canvas people see it's a change that should be made. I can't imagine it's difficult for the coders to do!

Labels (2)
0 Likes
1 Solution
James
Community Champion

@ChrisGrant 

What you suggest is one way to handle the problem. It is a pain to update and has issues when not all students have the same number of submissions though.

Another possible solution is to do nothing until students have six grades. Then set the number to drop to the total number of assignments in the assignment group minus the number to keep and give students a 0 for all of the not-yet-turned-in assignments.

For example, if you have 10 assignments in an assignment group and want to keep 6, you could wait until the students have turned in 6. Then go into Canvas and tell it to drop 4. For the other four assignments in the assignment group, put in 0 using the "set default grade" functionality of the gradebook.

Canvas will drop the four lowest grades -- which are all 0.

When a student completes those assignments, their 0 gets replaced with their new score. At that point, Canvas is going to drop 3 zeros and one of their other scores, leaving them with six assignments.

You will need to explain to the students what you're doing. Anytime you do something out of the normal or unlike other teachers, students have the potential to get confused. Many of the "hacks" I've given people in the Community over the year stress the importance of telling the students why you're doing something, what the end result will be, and that they can still submit the assignment, even though the grade is zero.

Do you have to wait until six grades are in before putting the rule in? Yes. Canvas won't drop grades until there is at least one grade left. So, if you tell it to drop four grades, it won't do that until there are at least five. If you put zeros in too early, then it will be keeping those zeros as part of the grade. You want to make sure that there are no real scores that get dropped, so wait until you're down to just four assignments left before you implement the rule and put in the zeros.

While there's still a hack involved, you only have to set the number to drop once, rather than continually updating it with each new assignment.

 

I'm always reticent to say something is simple. I've written a lot of code that people can use with Canvas and things often turn out to be more complicated than they seem. Since I'm not taking the time to fully flush out a solution here, I don't want to say it's simple for it to turn out not to be.

The code that they use for optimization uses a process in a mathematical paper called "Dropping Lowest Grades". As for the ease of modifying the code, the Canvas code has a comment that says "I am not going to pretend that this code is understandable." This is followed by "The naive approach to dropping the lowest grades (calculate the grades for each combination of assignments and choose the set which results in the best overall score) is obviously too slow." 

In other words, the software engineer that wrote the code didn't understand what was going on, [s]he just implemented the code from the paper. But hey, it's fast. That likely means that they would want to keep the same code for keeping the highest grades.

On its face, keeping highest grades is very similar problem. You're still trying to maximize the score.

You could probably still use the existing code that the engineers don't understand by doing some checks before calling the optimization routine. Let's say that you want to keep the top six grades. The programming logic would first check to see that there were at least six assignments with grades and skip the process if this isn't true. If the are more assignments than the required minimum, then you could find the difference and tell Canvas to drop that many assignments. It sounds straight forward, but it's a little more complicated. Some assignments cannot be dropped, so you would have to factor that in. This is done on a per-student, per-assignment group basis, but that's already part of the code.

When you look at the code, they're already passing in the number of assignments to keep and the number of assignments to drop. That suggests that the optimization code could be reused.

The fact that it hasn't been implemented probably means that Canvas doesn't want to implement it. It's possible that they've never thought of it, but the product managers think about a lot of things. They only end up implementing a tiny fraction of ideas.

Even if there is a good or simple idea, it sometimes doesn't fit in with their grand scheme. They like to keep the interface simple and having both drop lowest and drop highest makes it more complicated. Why? Because they already have a "drop highest" and having a "keep highest" might confuse people. Another reason is because there's not enough return on investment for them to develop it. They have to pay the engineers to write the code and why pay them to fix something, even if it's short and simple, that a relatively small number of people will benefit from? If that were the case, then math and science teachers would have gotten a lot more love out of Canvas than we do. Every now and then, they let their programmers take on pet projects, so this might be something that would come out of that. But it still has to fit with their grand scheme, which goes back to having a simple, clear, non-confusing interface without checkboxes for every little option.

At the end of the semester, dropping four lowest or keeping six highest amounts to the same thing when there are ten assignments in the group. That may be part of why Canvas doesn't want to implement it. I don't work for them and do not know what they have considered here. They don't make their internal meeting notes available publicly.

Until the end of the semester, they mean different things. But until near the end, student grades may not be realistic anyway. For example, I had a student freaking out today because missing one quiz dropped them from an A to a C. The entire assignment group is only worth 2.5% of the grade for the class, but because many of the assignment groups have no grades yet (including exams worth 60% of the grade), that 2.5% actually accounts for 14.3% of the class grade. As an indicator of how important it is to communicate, even what you think are simple things, that student was a calculus student who was getting confused about how to calculate his grade.

View solution in original post