Automated Grading (within an Introduction to Computer Programming Course)
The Introduction to Programming course is designed to include automation of many mundane aspects of grading and administration in order to allow more focus on human elements of teaching and grading.
Quizes are issued to students as Google Forms. Submissions are automatically graded against an answer key entered into the form’s administrator interface.
The Google Forms admin interface contains a
Responses tab, where student submissions are visible. This page also shows an icon that can be clicked to generate a Google Sheet showing each student’s time of submission and score.
Translate all scores to integers between 0 and 100, if that is not already the case, and enter them into the main course gradebook.
Once an assignment is past due and late quiz submissions are no longer accepted, click the button to
Releasescores from within the Google Form
Responsespage - this sends students an email containing their score and a link to view the answer key of the Quiz.
Integration with Google Sheets Gradebook
If using a Google Sheets gradebook, a column in the gradebook can be set up to pull the score from the Google Sheet with the students Quiz scores, including automatic calculation of late penalties.
For example, given the following gradebook structure, which includes students’ email addresses (column
C), a link to the Google Form Quiz results spreadsheet (cell
AE2), and the due date and time of the Quiz (cell
The following formula, entered into cell
AE38, would pull the score from the Google Form Quiz results spreadsheet for the student with email address in that row:
And the following formula, entered into cell
AF38, would calculate a late penalty of
10 points per 24 hours late for the student in the same row, with a
0 given for submissions more than 72 hours late:
=IF(XLOOKUP($C38, importrange(AE$2,"B1:B1000"), importrange(AE$2,"A1:A1000"), "No submission")="No submission", 0, IF((XLOOKUP($C38, importrange(AE$2,"B1:B1000"), importrange(AE$2,"A1:A1000"), "No submission")-AE$1)<=0, 0, IF((XLOOKUP($C38, importrange(AE$2,"B1:B1000"), importrange(AE$2,"A1:A1000"), "No submission")-AE$1)<=1,-10, IF((XLOOKUP($C38, importrange(AE$2,"B1:B1000"), importrange(AE$2,"A1:A1000"), "No submission")-AE$1)<=2, -20, IF((XLOOKUP($C38, importrange(AE$2,"B1:B1000"), importrange(AE$2,"A1:A1000"), "No submission")-AE$1)<=3, -30, -AE38)))))
Assignments are issued to students as GitHub repositories using GitHub Classroom. Each student receives a copy of a code repository containing instructions and any relevant starter code.
tests directories in most assignments. These includes Python-based unit testing code that automatically analyzes students’ submissions to determine whether they satisfy the requirements of the assignment.
To use these automated tests, do the following:
Open a student’s repository in Visual Studio Code, open the integrated Terminal within VSCode, and run the command,
pytest. This should show you how many tests passed and how many failed.
Develop a rubric for each assignment that determines how many points each test should be worth, and subtract points for any tests that fail. All assignments are graded from 0 - 100 and all tests should be equally weighted. Take off points for any lateness, as per the course late work policy - the commit history of any repository on GitHub shows the date and time of each submission.
Once this automatic analysis of student submissions works on your machine, focus your human efforts on looking over students’ code and giving useful feedback and criticism. Take off some points for stylistic code problems like poor indentation of code, inconsistent capitalization, unnecessary type conversions, and other sloppy practices discussed in the course, even if the code works functionally.
Leave short but clear helpful comments for every assignment in the main course gradebook. Explain in human terms why each student lost any points. There is no need to refer the tests in these comments - explain concisely in human terms the problems identified in the code either by the automated tests or by yourself.
Batch assignment grading
A separate project contains tools for automatically calculating grades for all submissions to a particular assignment based on the number of automated tests that pass. That repository also contains a tool to check how much time each student took to complete the work, which can be useful for giving late penalties.
Each exam is structured as a combination of a quiz and an assignment, so grading exams combines the techniques for both types.
The main course gradebook is a Google Sheet. This spreadsheet contains a script that will send students an email containing all their grades when run.
Students should be sent their grades from the gradebook whenever grading has been completed for any work.
To do so, in the Google Sheet gradebook, click on the
Gradingmenu, and then click
Send all grades!!!.
The first time this menu is clicked, the Google Sheet will ask you to authorize it. Once authorized, you will have to click the option to
Send all grades now!!!again a second time to complete the task. In subsequent times, you only have to click the menu once.
If you need to send grades to just a single student, for example if a grade adjustment has been made just for that student, click the
Send one student their gradesoption. Enter the row number of the student in question into the dialog that then pops up, and click the button to send.