How to Turn in the Programming Assignments

Assignments are due 11:59 PM CDT on the date listed (except for project 1). To submit your assignments, follow this guide.

The basic order of things is:

  1. Transfer the files from your machine over to the Linux machines
  2. Test your code on the Linux machine
  3. Use turnin to submit your files
  4. Verify that your files were correctly submitted

It is a good idea to make a directory/folder for cs314 and a subdirectory for each assignment. There will be many files named, and having separate directories will keep the files from older assignments from being overwritten and lost.

mkdir cs314                       make a directory called cs314
cd cs314                          connect (move into) that directory
mkdir hw2                         make a directory called hw2
cd hw2                            connect (move into) that directory
cp /projects/cs314/ .    copy the starter file to your directory
                                    (don't forget that last period!)
...                               now work on assignment 2

Transferring Files

If you do the assignments on the CS Linux computers, you may skip this step; however, if you do the assignments on your laptop, you will need to transfer your files over to one of the Linux machines.

In order to connect to a CS linux machine, you first need the machine name. You may find a list of machine names at Find a machine that is up and, preferably, has a low number of users. Once you select a machine, you must concatenate "" onto the end of the listed machine name. For instance, if you are trying to connect to the machine called pez, you would use as the host name.

There are several programs which you may use to send files to the CS machines; a brief list with download links is available at under Unix, click on the first question, "What happened to FTP access?". You can also use the scp command on OS X / Linux / Cygwin.

To connect, you will need both the host name and your user name. As previously mentioned, the hostname will be <computer_name>; your user name is your CS account username; it is not your UT EID. If you were connecting to the Linux machines using the Mac OSX terminal, it would look something like this:

ssh <cs_username>@<computer_name>

Alternatively, you can use the -l (that is a lowercase L) flag to provide your user name. As a result, the following command is equivalent to the one above:

ssh <computer_name> -l <cs_username>

On some SSH applications you will be asked for a port number. Port 22 is the standard port, so use this value.

After you successfully connect to the linux machine, it will say something about saving a public key to the database. You want to do this so it doesn't have to keep re-authenticating your key every time you try to log in.

Now that you are logged in, if you have a GUI you can transfer files over that way. By default, the default folder that you transfer the files into will be the folder that you start in when you log in at the command line interface.

Please note that when you SSH into a machine, you are remotely using that machine; you will not have access to your locally stored files. If you want, you can avoid transferring files between your machine and the CS Linux machines simply by working on them remotely using SSH.

Compiling Java on the Command Line

If you are using Java, your program must be able to be compiled and run from the command line. While you are free to develop using any IDE you like, such as Eclipse, realize that for testing purposes, no particular IDE configuration will be used or even available. Before submitting your files, be sure that they can be compiled using javac <your_files> and run using java <your_program>. If you are using Eclipse, generally this means that you will need to remove the package statement from your Java files.

For example, in project 2, your files should be compiled using the following command:


Your program must execute the sample main() using the following command:

java Cons

Turning In Your Files

Now that you have successfully transferred your files and (presumably) tested them to make sure that (1) they work as expected on Linux and (2) they are the correct version, you are ready to turn them in. Make sure the working directory is where your source files are and type the appropriate command, depending on your class section and the first letter of your last name:

  • A-K turnin --submit jaime cs314-hw2 <filenames>
  • L-Z turnin --submit rezwana cs314-hw2 <filenames>

Note that the assignment names should be cs314-hw2, cs314-hw3, etc.

As an example, one of the following could be used to turn in and the README (containing answers to questions asked in the assignment) for assignment 2, Recursion and Lists:

turnin --submit jaime cs314-hw2 README

turnin --submit rezwana cs314-hw2 README

The easy way to do it is to keep all the files for a given assignment in a single directory; then you can simply use the * notation to include all files (substitute the correct name of your TA):
cd cs314/asg2/
turnin --submit myta cs314-hw2 *

Verifying Your Submission

It is important to check to make sure that your files were correctly submitted. Turnin makes it very easy for you to check, so there are no excuses for not performing this step.

To get a copy of the directory and all of the files you submitted, use the --verify option. You use it like this (substitute the correct name of your TA):

turnin --verify myta <assignment_name>

For example, using assignment 2, you would type:

turnin --verify myta cs314-hw2

Once you have the folder containing a copy of your submitted files, double check that they are the right versions and still compile / execute. In previous classes, many students have mistakenly not submitted a file or submitted an outdated version; don't let that happen to you.

Turnin also provides you with a listing of the files submitted. It is not quite as good as retesting the files, but it can be used to check that all of the files you thought you submitted actually were submitted. To get a list of submitted files, use the --list option. The syntax is just like --verify.

If you want more information on the turnin program itself, from within the Linux shell type:

man turnin

This will bring up the manual for the turnin command. To exit the manual, press the "q" button.

Additional Requirements

You are expected to include some additional information for every assignment: your name (important for a class of this size, so don't omit it), any parts of the assignment you were unable to complete, and anything else you would like to say about your work. Put this information in a separate README file, which should be just a plain text file (no Word files, etc.). To facilitate grading, please do not change the names of the files or signatures of the functions given to you. Normally, you should not have to modify anything existing; your job is to add new stuff. The one exception is with the * files. For example, you need to change to in order to compile. In these cases, submit the files under the new names.

Please make sure you turn in all files necessary to run your program as an independent unit. This means that you should even include files you have not modified from the class directory in your submission. If you choose to program in Lisp, you should also duplicate the test code section, which is provided to you in Java, and include it as part of your code submission.


Bad things can and do happen to source code; this is just an unfortunate fact of life in CS. You should be aware that things could happen if you are coding on your laptop. An easy way to prevent losing your files is to regularly copy your files to the CS Linux system. Linux files are automatically backed up every 4 hours, under the directory .snapshot . You can get back old files for about a month in case you mess up the most current version.

Turnin will overwrite the files every time you submit them, so this is one way to always keep a version available for grading.