There are several applications that use the PASS library (written in Java) including:
- PASS GUI: this has a graphical user interface and is installed on the lab computers.
- PASS CLI: this is a command line program that can be used as an alternative to PASS GUI on devices that don’t support a graphical interface.
- Server PASS: this is a modified version of PASS CLI designed to run inside a Docker image on a server.
- Look up the assignment specifications provided by your lecturer in an XML file.
This data includes:
- the assignment title;
- a short tag identifying the assignment;
- the submission date;
- whether or not PASS should test your code by compiling (if appropriate) and running it;
- (optionally) any source code files that you are required to submit (identifying the main file, if appropriate) and the order in which those files should be listed in the PDF (“required files”);
- (optionally) the base name of any reports (PDF or Word) that should accompany your submission (“reports”);
- (optionally) content to be passed to STDIN for your code to read (“input”);
- (optionally) the URL of any accompanying files that your code needs to read (“resource files”);
- (optionally) the names of any files that your code needs to create (“result files”);
- (optionally) any flags that must be passed to the compiler;
- (optionally) the URL of a custom build script to be used to compile and run your source code in order to test it (instead of PASS's default compile and run methods).
- Copy all your supplied source code files to a temporary directory. (That is, the required files and any additional files you have provided.)
- Create a zip file containing all your source code.
- Fetch any accompanying resource files or build script from the URLs provided by your lecturer.
- (Optionally) compile and run your source code (or run the build script) and capture any messages written to STDERR and STDOUT.
- Create a PDF containing your Blackboard ID and registration number, your source code listings, and the results of the testing (compile and run stage). The zip file and any reports or result files are added as attachments. This should be all the information required for submitting your work.
When you upload your project files on this website, they are saved in an upload directory and the job details are queued. There is a backend script running on this server that pops the job details off the queue and starts up a Docker container that processes your files using the version of Server PASS installed in that Docker image. The script logs the exit code and sends you an email. You can then download the PDF (if one was successfully created) from the “My Uploads” page. You should then check the PDF and submit it, if it’s correct, or fix any problems and re-upload your project files.