Attempts to reduce the task of manually grading over 190+ students C++ coding assignment submissions.
Students submit their programs via the handin command.
Each student has a folder containing the .tar file of all the related file to the assignment.
This script is for such an environment where the directory contains subdirectories named as StudentKerberosID@something.com.
Each of these subdirectories must have tar files containing all the required files and the Makefile.
Python3 is required for all the programs.
- Setup the config.json file as per requirement.
- All the test input/output files must be in the same directory as the student subdirectories.
- Unix Timestamp is in UTC Format.
The due date can be converted here.
If the due date is January 28, 2020, 11:59pm, enter January 29, 2020, 07:59am.\ - grade.py - Contains the core logic to grade students
foo@bar:~$ python3 grade.py
- mergeFileColumns.py - Merges the scores of two assignments in one final score file
- findMissingStudents.py - Compares final score file with the total number of students.
It also finds the students who have not submitted their homework and assigns 0 score.
- Check the file submission date against the due date
- Untar the file
- Make the files
- Execute with the given input and save the result
- Check the result with given output
- A clean comma separated txt file with kerberosID, score
- A verbose commas separated txt file with kerberosID, Logs
This script was tested on a folder containing over 190 students sub-directories all containing .tar files.
Overall time it took was just over 150 seconds, about 2.5 - 3 minutes
The manual task on the other hand could take over 20 hours or more. :P
Accuracy of this script is about 80%, I still had to manually review about 30 submissions.
But, this will improve with time.