Date: Tue, 14 Jan 1997 21:24:16 GMT Server: Apache/1.1.1 Content-type: text/html Content-length: 4875 Last-modified: Tue, 12 Nov 1996 16:40:53 GMT Hand In Program

Hand In Program - by Thomas Wallis


Handin is an experimental program that I wrote, working from an idea in some source code Dr. Gopalakrishnan gave me. Make sure you have your terminal type set to vt100 . You can use the vt100 command to do this when you log in or you can use this command:

setenv TERM 'vt100'

Handin has severe problems otherwise.

Handin works in the following manner. A special account is created on the system for your class. Your grader and you both have the password (the students don't). A program called handin is installed in the bin directory of that account. The student invokes the program like this:

~account/bin/handin class assign# file

Example:

~cs742/bin/handin cs742 1 myprog.c

Handin checks several things that you or your grader need to set up.

  1. In the home directory for the class account , there should be a file called students. This lists the student usernames for your class, one per line, no spaces, tabs, punctuation, etc... You or your GTA must enter this data into the file.

  2. A subdirectory, mode 700, must be created for each assignment number. Ie. 1, 2, 3, etc. Assignment numbers must be integers 0
  3. handin must be installed setuid to the grading account in the bin subdirectory (I do that).

  4. You may have an optional file called assignments.dat in the home directory of the class account. It has the following format:

    assignment#;due-date;comment

The assignment# must be an integer (see above). Due date MUST be in the format: DD-MMM-YYYY (ex. 25-FEB-1995). Comment can be free-form (up to 60 columns or so (no special characters please)). Semicolons are the delimiters in this file. One assignment per line. Syntax is important. the handin parser is very simple and will bomb on bad data in trusted files.

If this file exists, DUE DATES will be ENFORCED on ALL assignments.

Here is how the program works (briefly).

The student runs the handin program:

ex: ~cs540/bin/handin cs540 2 aaa.c

Note that the userid (~cs540) and the classID must match.

  1. handin looks in the subdirectory /usr/users/User3/classes/cs540 for the students file. If the student is not in that file, handin won't let the student hand in anything.
  2. handin looks for a subdirectory for the assignment number. If it doesn't exist, then handin won't let the student hand anything in.
  3. handin looks for the source files (sees if they are ordinary files that suit the syntax (filenames must consist of dots, [a-z], [0-9]). No dashes, underscores, etc. It also checks to see if the student owns the file they are handing in (a very simple check for attempted cheating). Some versions of handin limit the number of files handed in on one command line to five, other versions increase this limit to twenty files per command line (watch out for wildcards :-( ).
  4. If the assignments.dat file exists, then due dates are enforced. If the file lists a due date of 15-FEB-1995, when the 16th comes around, students will not be able to hand in that particular assignment anymore.
  5. handin creates a subdirectory for that student in the assignment subdirectory.

    example:

    The subdirectory and all the files in there are owned by the grader account (not jones (that is where the suid comes in)). jones cannot access this directory or the files (they are chmoded to 700). A file handin.log is created in /usr/users/User3/classes/cs540/1 (also owned by cs540) showing when a student handed in each file.

    If a student hands in a file twice for the same assignment, the handin program will detect that the file has already been handed in and will ask the student if they want to overwrite it.

    This program is EXPERIMENTAL. Some classes have used it already, with no trouble reports (I guess this is good news).

    The information accessible from this server is provided in good faith, but neither the Wichita State University, nor the Computer Science Department takes any lega l responsiblity whatsoever for the accuracy or content of data displayed on this server. Please notify us if any error is dectected. Thank You !