csXXX
t. Its job is to build and execute the student's submission. Note that executing student code is an inherently unsafe, unsecure thing to do. This is why such execution is performed from a separate account which is configured specially to avoid security problems. Under no circumstances may student code be run directly by the course account.
It is also very important to use the Unix command 'timeout' for every command involving student code, including compilation. Compilation needs to be guarded because Makefiles can very easily infinitely recurse, and a student has even managed to make a generic command-line run of gcc version 3.4.2 time out. In general, this removes the risk of a student's program entering into an infinite loop and creating massively large output files (which can cause many problems). Even if you don't think there is any way for an infinite loop to occur you should play it safe, as you would surprised where infinite loops can show up.
As a rule, scripts should be as general as possible instead of specific to one assignment. This enables reuse for future assignments, and makes it easier for future course staff to see what was done and how it should be used.
submitdir
The student's submission directory.
tmpdir
The temporary scratch directory available for testing of this student's submission. This directory is also the "current directory" when runTests is started.
testdir
The directory containing runTests, computeMarks, and other files required by the test suite.
student
The userid of the student currently being tested.
assign
The name of the assignment, as passed to rst.
course
The name of the course that is running this test suite.