Preparing Programming Assignments for Submission System (PASS)

This application is designed to provide a convenient way for students to prepare their assignment code for submission as a single PDF file with the code listings and a zip archive as a PDF attachment. This application does not submit your work. It's your responsibility to submit the PDF using the appropriate channel designated by your institution before the assignment deadline.

PDFLaTeX or LuaLaTeX is used to create the PDF file. A TeX distribution (TeX Live or MiKTeX) also needs to be installed (independently of PASS).

On start-up, if multiple courses are configured to work with PASS, you'll be asked to select the appropriate course. If only one course is configured for PASS, this step will be skipped.


It's important to remember that PASS is designed to assist you in preparing your assignment for submission, but it's your responsibility to ensure that the PDF created by PASS is an accurate representation of your work. If anything goes wrong with PASS and it doesn't produce the correct output, you must report it to your lecturer before submitting your work. The first panel reminds you of this and you must agree to manually verifying that the generated PDF is accurate (by reading through it before submitting it). You can't proceed to the next panel until you have selected the "I agree..." check box.

Select Assignment

On the next panel, you need to select the assignment you want to submit. The dropdown menu lists all the known assignments for the selected course and will default to the first assignment that hasn't past its due date.

There are also areas to supply your user name and student number (both are required). These will be remembered next time you use PASS. The settings are by default saved in a file called .progassignsys.prop in your home directory. If you want a different location, set the environment variable PASSPROP to the desired path.

If you are submitting a group project, select the "Group Project" checkbox, which will provide a table for you to enter the user name and student number for each member of the project. You can add new rows, delete rows or move rows up or down using the buttons next to the table.

If you need to include one or more reports with your submission, these can also be added if they have the file extensions .pdf or .doc or .docx. These will be added to the document generated by PASS as attachments. In the case of PDF files, they can optionally be included into the document using the pdfpages package. This option is enabled with the check box shown below the student number in PASS's initial panel. You can also modify the options that will be used with \includepdf. Be aware that there are limitations to this command. In particular, it doesn't work if there are any spaces in the PDF filename, so if any spaces are detected, PASS won't use \includepdf, regardless of the application settings. The default option list is:


Note that pages=- (indicating all pages) is always added to the start of the option list regardless of this setting.

PDFTeX doesn't natively support UTF-8 and this can cause a problem for the listings package if the code includes UTF-8 characters (even with the inputenc package), resulting in corrupted characters. LuaTeX natively supports UTF-8, so it will work fine with the listings package and will correctly rendered the UTF-8 characters contained in the source code. (XeTeX also natively supports UTF-8, but it doesn't work with the attachfile package.)

If your source code contains any non-ASCII UTF-8 characters (such as é or £) then select "UTF-8" in the file encoding drop-down menu. The document will be compiled using lualatex.

If your source code uses Latin-1, you need to select the "Latin-1" option and pdflatex will be used with the inputenc package.

If your source code only uses ASCII characters, then select the "ASCII" option and the document will be compiled using pdflatex.

When you're ready, click on the Next button to move to the next panel.

Select Code Directory

For convenience, you can select the directory containing your assignment source code (and optionally any reports). PASS will search through that directory and any subdirectories for the required files and resources. For example, if your assignment required you to create a file called and a file called, then those are the files that will be looked for.

If you leave the code directory field empty, you'll have to search for the individual files in the next panel.

By default, PASS will create a zip file containing a single directory, in which all the selected source code files will be added. If you have a complicated sub-directory structure that needs to be retained, then select the "Use relative paths" check box. This option is only enabled if a code directory has been supplied. The directory structure relative to the supplied directory will be used. If you use this option, the directory names within the relative paths should only consist of alphanumerics (A–Z, a–Z, 0–9) or any of the following characters: - (hyphen) + (plus) = (equals) @ (at). Any other characters (including spaces) will cause a problem.

When you're ready, click the Next button to move to the next panel.

Project Files

All the source code that forms the assignment needs to be listed in the Project Files panel. If you selected a directory on the previous panel, it should hopefully have populated the required list (where the assignment requires specific file names). If not, you will have to use the open buttons to select each file. Any associated resource files will also be listed. They will be fetched when the application is tested. Make sure that the file type drop-down list is correct.

Any additional files (including project reports in .pdf, .doc or .docx format) can be added in the Additional Files area.

You may include a Makefile in the Additional Files area. For C or C++ assignments, the Makefile will be used to compile the code. Restrictions: the Makefile must be in the same directory as the source code; the default directive (i.e. just make without a target) must create an executable called either a.out or a.exe; the Makefile won't be used if the assignment specification has switched off the compile option. This facility is currently not available for other languages. If you include a Makefile for another language, it won't be used although it will be included in the listings.

When you're ready, click the Next button to generate the PDF file.

Processing Panel

The processing panel displays a progress bar while it creates the PDF file. On completion, it will open a dialogue box for you to save the PDF file. Note that for Java, C and C++ projects, the process will also attempt to compile and run the code and include the results in the PDF.

The transcript window will automatically open while PASS is processing the files. If you close this window, you can re-open it using the "Show Transcript" menu item. You can select the text in the transcript window using your mouse or use Ctrl+A to select all the text. You can then use Ctrl+C to copy the selected text to the clipboard, if required.

Process Completed Panel

Once PASS has finished the previous step, the process panel will show a green check mark if successful or a red exclamation mark if unsuccessful. An orange exclamation mark is used if the application test (compile and run the project) returned a non-zero exit code. If the PDF was generated, a save dialog box will open.

If the save PDF dialogue box was cancelled, there will be a Save button if you change your mind. The Exit button will quit the application without further prompting to save the PDF.

If you saved the PDF, an Open PDF button will appear if your system supports Java's desktop management. If permitted by the desktop, this button will attempt to open the PDF using your system's preferred PDF viewer. Check the PDF for any errors before submission.