How to Turn in the Programming Assignments

Assignments are due 11:59 PM CDT on the date listed. To submit your assignments, follow this guide, which has been derived from a previous semester guide written by Phillip Verheyden and adapted by Yulin Li, Andrew Dreher, Wei Dong, Yunsik Choi, and Gordon Novak.

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 cs375 and a subdirectory for each assignment.

mkdir cs375                 make a directory called cs375
cd cs375                    connect (move into) that directory
mkdir asg1                  make a directory called asg1
cd asg1                     connect (move into) that directory
...                         now work on assignment 1

Transferring Files

If you do the assignments at home, you will need to transfer your files over to one of the Linux machines.

Always keep a backup of your files on the CS Linux machines! All files on the CS machines are automatically backed up every 4 hours. Remember, the dog will eat your homework. The backed-up files are available in the directory .snapshot/ .

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 your are trying to connect to the machine called moro, you would use as the host name.

There are many programs, which you may use to connect to the CS machines using SSH; a brief list 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. If you do not want to use a GUI, come to office hours and I will show you how to use scp.

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.

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 following command:

turnin --submit yunsik CS375-hw1 <filenames>

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

As an example, the following could be used to turn in lexanc.c and the README (containing answers to questions asked in the assignment) for assignment 1:

turnin --submit yunsik CS375-hw1 lexanc.c README

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 (depends on who is your TA):

turnin --verify yunsik <assignment_name>

For example, using assignment 1, you would type:

turnin --verify yunsik CS375-hw1

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. 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.

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.


Bad things can and do happen to source code; this is just an unfortunate fact of life in CS. We do not expect you to use a source code management scheme, but you should be aware that things could happen if you are coding on your laptop, etc. In order to prevent these unfortunate circumstances from impacting you too much, consider using turnin to keep a current copy of your work. Turnin will overwrite the files every time you submit them, so this is one way to always keep a version available for grading.