Auto-Generate Grading Scripts

Vocareum's platform provides the ability to auto-generate simple scripts to facilitate the automatic grading of student assignments based on output comparison or exit status.  Grades are reported through the use of a CSV grading file.

Here are the necessary steps to set this up - 

1)  Under the Part Setup, turn on the "Autogenerate scripts" option - 

2)  Optionally, enter in an initialization script which can help setup the grading environment.  This script will run before the grading code.  In following example, we will use the initialization script to compile Factorial.cpp into factorial.exe.

3)  Select the "Autograde" checkbox to enable automatic running of the grading script, then click the "Autograde" link.

4) The following screen appears when the Autograde link is clicked.  Decide on the Grading Approach - 

  • Compare Output - run the command with a given set of standard inputs, then compare with the expected output
  • Check Command Exit Status - run the Command.  Success, if the exit status is "0"; otherwise Failure.

5)  Enter the "Command" to be run based on the given Grading Approach.

6)  If using output comparison, fill in the "Standard Input" and "Expected Output" text boxes.

7)  Click "Close", then "Save" to commit your Grading setup changes and to generate the scripts. 

8)  In the above example, the following files are automatically generated:

../resource/scripts/grade.sh

g++ -o factorial.exe Factorial.cpp
echo VOC_NO_REPORT_OUTPUT > $vocareumReportFile 


factorial.exe < $ASNLIB/input1.txt > output1.txt
diff output1.txt $ASNLIB/output1.txt
status=$?
echo ================================================== >> $vocareumReportFile
if [ "$status" == "0" ]; then
  echo "Test1", 5 >>  $vocareumGradeFile
  echo Test1 passed >> $vocareumReportFile
else
  echo "Test1", 0 >> $vocareumGradeFile
  echo Test1 failed >> $vocareumReportFile
fi
echo ================================================== >> $vocareumReportFile


factorial.exe < $ASNLIB/input2.txt > output2.txt
diff output2.txt $ASNLIB/output2.txt
status=$?
echo ================================================== >> $vocareumReportFile
if [ "$status" == "0" ]; then
  echo "Test2", 5 >>  $vocareumGradeFile
  echo Test2 passed >> $vocareumReportFile
else
  echo "Test2", 0 >> $vocareumGradeFile
  echo Test2 failed >> $vocareumReportFile
fi
echo ================================================== >> $vocareumReportFile

../resource/asnlib/input1.txt

5

../resource/asnlib/output1.txt

120

Still need help? Contact Us Contact Us