I’m using GIthub Classroom in a Computer Science class and having my students push their assignments to their classroom repo.
For my first simple assignment (Hello, World), I was able to set up an autograding test to check that their program does, in fact print “Hello, World!”.
For future assignments I am having the students write programs that read input files and print appropriate output. I can put a sample file into their repository, but for grading I want to use different input files that the students haven’t seen before.
Is there a way to set up autograding to pull input files from some other place that the students can’t see, and the run them against the students’ code?
Thanks for any help you can give!
Some other place that students can’t see
Might be a bridge too far. However, you could host your input file someplace and pull it in when the tests are run by using wget, for example the following would pipe the contents of a Gist into the program student_program.exe.
wget -q -O - https://gist.github.com/dergachev/4627207 | student_program.exe
More clever students might dig into the autograder.json file and figure out where to see the file, but this should get you at least part way there.
Another approach could be writing a small script to copy the file into each student repo and create a new commit that gets pushed for grading. That would be completely hidden from students but requires that you make the final commit to submissions…and write the script (should just be a simple
for loop though).