How to use the handin command to submit your work.

The handin command it a tool installed on the CSL servers that allows you have submit electronic copies of your work to a grading account. There are a few important preconditions that must be met for you to use handin, they are:
  1. You must be logged in your account on one of the CSL servers.
  2. The files you wish to submit must be on the CSL servers.
  3. You must know the name of the account you are submitting to.
  4. You must know the name of the assignment you are submitting to.
The handin command, itself, is fairly straight forward.  If you forget how to use it simply enter the command at the prompt and some basic instructions will appear that should help you to remember how to use it.  If you do so, you should see something very similar to this (the prompt may vary depending on your account settings):

    12:01pm unix1 ~$ handin
    Usage: handin touser [subdirectory [file...]]
    12:01pm unix1 ~$

Lets examine the Usage: instructions, above, in detail.  The touser is the name of the user-account you are handing in to. Your instructor will provide this account name to you. For Mammen's classes use kmammen-grader as the touser account name.  The use of the sqaure-braces, '[' and ']' typically, and in this case, indicate optional parts of a command. This means you may or may not provide a subdirectory name and/or files. The subdirectory is also known as the assignment name. The file... indicates you may specify from zero-to-N files to be handed in. That's all there is to it. Now let's look at each form of the command and examine its behavior in more detail.

If you type in the handin command with a valid touser (a user-account name) you'll see a list of available subdirectories (assignments).  Take a look at the following handing command.  Notice that there is a single subdirectory/assignment called 102Lab01 available. During the quarter you'll see the various lab, lab quiz, and program assignment names appear as they become due.

    12:01pm unix1 ~$ handin kmammen-grader
    Existing subdirectories (comments in parentheses):
    102Lab01
    12:01pm unix1 ~$


Use this form of the command (above) to see what assignments, if any, may be available for handing in to.  This is handy if you can't remember an assignments name or are having trouble with handin - you may just be specifying an assignment name incorrectly.  Note that assignment names are case-sensitive and that just because you see an assignment name listed does not mean it is available for handin since it may be after the assignment's due date.

Next, lets see how handin behaves when you specify both a touser (user-account) and a subdirectory (assignment name).  Here's what you'll see if you haven't handed anything in yet:

    10:25am unix1 ~$ handin kmammen-grader 102Lab01
    The following input files have been received:
    10:25am unix1 ~$


Now lets see how handin behaves when you specify a touser (user-account name), subdirectory (assignment name), and one or more files for submission. Note that you must first change directory to the directory containing the file(s) you wish to handin. See the Unix Tutorial if you don't know how to do this. Here's what you'll see:

    10:41am unix1 ~$ handin kmammen-grader 102PLab01 Driver.java Lab01.java
    Submitting Driver.java... ok
    Submitting Lab01.java... ok
    10:41am unix1 ~$

Notice what happens when you specify a file that does nto exist in the current directory.  If you misspell a file name or specify a file that does not exist you'll see something like the following:

    10:46am unix1 ~$ handin kmammen-grader 102Lab01 SomeNonExistantFile.java
    Skipping SomeNonExistantFile.java: file non-existant or irregular
    10:46am unix1 ~$


You can verify what you have handed in using the following command. Notice that you can see the size of each file and the time/date stamp for when it was handed in. This can help you verify that you have handed in the correct versions of all of the necessary files for an assignment.

    10:42am unix1 ~$ handin kmammen-grader 102Lab01
    The following input files have been received:
    Sun Sep 21 10:41:50 2008        523 bytes       Driver.java
    Sun Sep 21 10:41:50 2008        6488 bytes      Lab01.java
    10:42am unix1 ~$


It is important to note that as long as it is before an assignment's due date you can handin in the same file(s) as many times as necessary.  For example, suppose you've handed in a program and you discover a bug afterwards.  You may fix the bug and resubmit the corrected version anytime prior to the due date.  The version of the file you handed in earlier will be replaced by the more recent submission.  Note that if you want to keep a copy of your earlier submission(s) you must make your own backups - handin simply overwrites the previous submission.

That's all there is to it!  Be sure you are comfortable with handin as soon as possible to avoid late submissions of your work.  Ask your instructor, peers, and/or tutors for assistance as necessary!