Submit : A Course Project Submission Utility

Version 1.0.1


  1. Overview
  2. Copyright
  3. Submit Client
  4. Submit Server
  5. Installation
  6. Known Bugs
  7. History
  8. Missing Features

1. Overview

Submit is course project submission utility. This document covers version 1.0.1 of the Submit utility. The latest version of this document may be found at the URL http://www.cs.columbia.edu/~akonstan/submit

Submit is written as a client/server application. Students execute the submission client program that archives their submission directory (recursively) and sends it to the submission server. The submission server authenticates the student submission and saves the archive.

Submit is written as a Java application and is available on all platforms supporting Java JDK 1.1.

2. Copyright

Copyright (C) 1998 Alexander V. Konstantinou (akonstan@acm.org)

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

3. Submit Client

The Submit Client expects two parameters, the name of the project submitted and the name of the directory containing the project submission. After archiving the directory contents (recursively), the client program will interact with the user, obtaining a login name and password for server authentication. The server may refuse the submission if the login is incorrect, or the project deadline has expired and no late submissions are accepted. If a previous submission for the same project has been made, the client will interact with the user and verify that the previous submission should be overwritten.

The following optional parameters may also be supplied :

The submission may fail for various reasons :

Here is a sample user interaction (bold indicates user entry). The submit client may be started by executing the supplied shell script (UNIX), or invoking the java interpreter :
./submit iras test

*** Archiving target directory contents recursively ...
  adding: test/plan
  adding: test/subtest
  adding: test/subtest/bashrc
  adding: test/subtest/subtest2
  adding: test/subtest/subtest2/subtest3
  adding: test/subtest/subtest2/plan
  adding: test/subtest/subtest2/subtest3/plan

Please authenticate using your class login and password

login: user1
password: test

*** Connecting to the submission server ...

Overwrite previous submission (yes/no) ? yes

*** Sending submission archive ...

SUBMISSION ACCEPTED !

You may resubmit at any time prior to the project deadline.  New
submissions overwrite previous ones (no backups of previous ones are kept).

4. Submit Server

The Submit Server expects one parameter, the name of the spool directory where submissions will be stored. Initially, the server will read the user password file and the project deadlines file (using the filenames specified in SubmitConfig.java).

The following optional parameters may also be supplied :

4.1 Server Configuration

The password file (default name passwd) contains lines with pairs of usernames and passwords (in clear text). For example :
user1 test
user2 debug
user3 hi!@#
The project file contains lines in the format PROJECT "DATE" DEADLINE_TYPE where : A sample projects file (default name projects) may look like :
vtn "3/9/98 11:59 pm" loose
iras "4/6/98 11:59 pm" strict

4.2 Server Operation

After reading the password and project configuration files, the server will listen for incoming connections, starting a thread for each new one.

Submissions are stored in the spool directory in the form login.project-name.zip (e.g. user1.iras.zip).

Here is a sample server interaction (bold shows a sample submission). The submit server may be started by executing the supplied shell script (UNIX), or invoking the java interpreter :

$ ./server -port 4444 spool
SubmitServer Version 1.0.1 $Revision: 1.6 $ started at Mon Mar 30 22:52:06 EST 1998
Password file contains 3 user(s)
Project file contains 2 project(s)
SubmitServer listening on port 4444

Connect from sutton.cs.columbia.edu/128.59.22.38 to port 4444 on 30-Mar-98 7:52:14 PM
User akonstan (ident 5762) authenticated as user1
Submission completed for project `iras' by UNI=user1 size 4540 bytes on Mon Mar 30 22:52:22 EST 1998

5. Installation

The Submit Server and Client are written in Java and require the use of a Java Virtual Machine (JVM) supporting JDK 1.1 and above.

5.1 Download

The latest version (source code + Java bytecode) may be obtained at the URL :

5.2 Configuration

5.3 Execution

6. Known Bugs

7. History

7. Missing Features


Author : Alexander V. Konstantinou (akonstan@acm.org)