Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adjust late penalty calculation for students who resubmit late #470

Merged
merged 11 commits into from
Nov 22, 2024

Conversation

19mdavenport
Copy link
Collaborator

This adjusts the late penalty calculation logic such that:

  1. A student who submits Phase 3 at 11:57 PM the day its due, passing the StandardAPITests but getting less than 90% due to code quality and unit tests, can fix the quality and unit tests the next day and not be penalized on the parts they had 100% before the due date (and other related scenarios including submitting 4 vs. 5 days after, etc.)
    BUT
  2. A student who tries to fix their code quality output by removing their unit tests will have their score not improve (the code for not decreasing scores in canvas is still present elsewhere). This was a problem the first way I tried to solve this.

This is done by looking for the best previous submission and falling back to the score for an item in that submission only if both the score for item in the current rubric is lower than the score on the previous rubric item of the same type AND the raw score of the current item is as good or better than the raw score for the previous item of the same type (meaning they didn't do worse the current submission, they just got penalized more)

Screenshots:
image
image
image

resolves #449

@19mdavenport 19mdavenport self-assigned this Nov 8, 2024
@19mdavenport 19mdavenport linked an issue Nov 8, 2024 that may be closed by this pull request
Copy link
Contributor

@webecke webecke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

As far as I can tell it works great and its a good change. Great work!

@frozenfrank
Copy link
Contributor

frozenfrank commented Nov 12, 2024

This is done by looking for the best previous submission and falling back to the score for an item in that submission...

I'm still thinking through the logic of this approach.

I see and agree that it addresses the current corner case, but are there any other cases to which it wouldn't generalize well? For example, what if the student received a high score on different rubric items on separate submissions? Should they get the max score for each rubric item individually? It could be that we want to give them additional credit for the separate submissions, but maybe that would open the door to faking the system by submitting separate submissions that separately score high on each rubric item without scoring well overall?

It could be that this is the best approach because it requires students to be first of all performing well, and then it helps take away any late penalties.

Can you help me think through this? What is your reasoning? @19mdavenport

Reorganize math management of late score multiplier
Copy link
Contributor

@frozenfrank frozenfrank left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I pushed a commit that extracted some of the long logic into a separate method.

src/main/java/edu/byu/cs/autograder/score/Scorer.java Outdated Show resolved Hide resolved
src/main/java/edu/byu/cs/autograder/score/Scorer.java Outdated Show resolved Hide resolved
@19mdavenport
Copy link
Collaborator Author

what if the student received a high score on different rubric items on separate submissions?

This code would have run on their previous submissions as well, so if their score went down but the rawScore didn't, the high score would all be on the same submission anyway.

Do you think this should this be looping through all previous submissions? If we did that, wouldn't it break the second edge case?

@19mdavenport
Copy link
Collaborator Author

@webecke @frozenfrank (and @ThanGerlek) sorry for pinging you again after you approved this, I made significant edits that I want to make sure you guys think are reasonable.

Also, I reluctantly added test cases for it, hope they look good.

On the topic, the third test case is the scenario I first described on Slack:

A student submits Phase 3 on/before the due date with 100% Functionality, 0% Code Quality, 100% Unit Tests. Receives a grade as normal 100/0/100.
The student realizes most of the quality issues are in their unit tests and removes them and submits again (still on/before the due date) for 100% Functionality, 100% Code Quality, 0% Unit Tests. Since the raw score of unit test goes down, they receive a the 100/100/0 grade.
Some time after the due date, they have readded their unit tests and fixed the code quality problems with them. They resubmit and get 100% on the assignment (100/100/100).

Is that a problem? This could add an extra 12.5 (potentially undeserved) points to the scores of sneaky students for phases 3, 4, and 5, for a potential addition of 3.5% of their overall grade.

@19mdavenport 19mdavenport merged commit 16b3b67 into main Nov 22, 2024
2 checks passed
@19mdavenport 19mdavenport deleted the 449-backend-change-late-penalty-calculation-logic branch November 22, 2024 23:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Backend: Change Late Penalty Calculation Logic
3 participants