ucbds-infra / otter-grader

A Python and R autograding solution
https://otter-grader.readthedocs.io
BSD 3-Clause "New" or "Revised" License
126 stars 66 forks source link

Can student manipulate the student version of the file to pass public test on student notebook? #838

Closed codingPie closed 1 month ago

codingPie commented 1 month ago

I am using autograder with gradescope without any problem until I got a submission which failed Question 3 on GradeScope but showing passed on student notebook. I download a copy of the notebook and found that all the public test cases passed but the code clearly has problems. How could this happen?

The student file is attached. The code is very simple and you can see that the student should have this line: numbers_str += str(power_of_2) + ""

as

numbers_str += str(power_of_2) + " "

So the test case when I call split() would get a list of numbers. I don't understand why the test cases would pass on the notebook.

Any suggestion is appreciated.

chrispyles commented 1 month ago

Hi @codingPie I don't see any attachments on your issue.

Based off the top of my head, are the test cases that the student failed on Gradescope public or hidden? If the latter, then this would be expected: the student submission passes public tests, so they see passing in their notebook, but fails hidden tests, which are only visible on Gradescope.

Other than that, I'll need the notebook and autograder zip file to debug. If you don't want to share these publicly, feel free to PM them to me in Slack (link in README).

codingPie commented 1 month ago

Hi @chrispyles, thanks so much for the quick response. There are both public and private test cases. The student's notebook shows that both the public test cases have passed. GradeScope shows that both public and hidden test cases failed. I read his code, it should fail. That's why I am confused on why the notebook shows the public test cases passed. I suspect that the student did something to the notebook. However, the problem is so simple that it would be much easier to get the problem correct than hack the notebook. The zipped notebook is attached. Thanks again. Coding_Exercise_3.ipynb.zip

chrispyles commented 1 month ago

I think the student probably changed their solution, perhaps accidentally, after running the check but before submitting. Running that notebook locally, I am seeing the test failing, which is as expected.

Screenshot 2024-09-16 at 4 34 33 PM
codingPie commented 1 month ago

How weird! I downloaded it and ran it on my PC in the office this afternoon and it passed all the test cases. I even openend the notebook in notepad to see if the student changed anything. But now I ran it after reading your message and you are right, it returned errors. I don't know what was wrong. Will try it again on my PC tomorrow. But I am relieved. I should tell students to watch the grading process on GradeScope instead of only on their local tests in the future.

Sorry for wasting your time for a silly thing like this ... The grader is life-saving for me. Just started to use it this semester. Thanks again!!

chrispyles commented 1 month ago

No worries!