Electronic Submission Guidelines - EE/CSCI 450, Spring 2016, Section 30560R

This page contains information about electronic submission for programming assignments. Starting this semester, we will be using a new submission software called bsubmit. It behaves very differently from the old submit program that you are used to.

Check the server time at the submission server.

Platform for Programming Assignments
You should use your USC accounts and preferably work on the Solaris machines via ssh for testing. The final (submitted) program must run on because we are going to test it in that environment. But you should not do there the whole program development, as nunki is a general purpose server - under heavyuse from many students.
Languages for Programming Assignments
You can use either C or C++ for your programming assignments. Files must be named as follows ...
LanguageTypeAllowed Extensions
C or C++Headers.h
Compiling Programming Assignments
You must have a Makefile for your program even in the case of single file submission. Please read the information on Makefile very carefully because it may greatly affect your programming assignment scores. So, make sure you verify your submission before you submit!
README File for Programming Assignments
You must include a README file to comment on anything pertinent to someone trying to run/grade your programming assignment. If you have nothing to say in your README file, please state that the file is left blank intentionally.
When you are ready to submit it for grading, you must:
  1. Create a gzip compressed .tar file containing all the source files needed to compile your programming assignment. Do not add .o files, executables, or core files to the .tar file. Please note that including .o files, executables, or core files will result in an automatic deduction of 10% of the points allocated to the corresponding programming assignment. For example, if your programming assignment (with Makefile, README, some .c and some .h files) resides in a directory named, for example, pa1 in your home directory, this must be done by (if your source code filename extensions are not .c and .h, you should replace .c and .h by what you want to submit):
        % cd ~/pa1
        % /usr/usc/bin/gtar cvzf pa1.tar.gz Makefile README *.c *.h

    Please note that the 2nd commandline argument of the gtar command above is the output filename of the gtar command. So, if you omit pa1.tar.gz above, you may accidentally replace one of your files with the output of the gtar command. So, please make sure that the first commandline argument is cvzf and the 2nd commandline argument is pa1.tar.gz.

    If for some reason you cannot run the commands above and decide to use another method, you must inform the TA and the instructor through e-mail as soon as you submit your assignment. Also, you will be doing this at your own risk!

    It is recommended that you extract the .tar.gz file you created to a temporary directory somewhere else, and try compiling and running your code there. This will provide some assurance that your programming assignment submission will work at grading time. Please see the verify your submission section below.

  2. Submit the .tar.gz file you created, use the bsubmit executable in the ~csci551b/bin directory on (or any Solaris machine which you can find ~csci551b/bin/bsubmit). The syntax is:
        ~csci551b/bin/bsubmit upload -email YOUR_EMAIL -event event_id -file submission_file
    Please note that this bsubmit submission software is new and behaves very differently from the old submit program you are used to.

    The first line above is to configure the submission software for the e-mail address where you will receive notifications from the sever.

    The event_id for each assignment is different:

    Assignment event_id
    Programming Assignment #1 merlot.usc.edu_80_1372906710_125
    Programming Assignment #2 merlot.usc.edu_80_1372906710_126

    Therefore, you should submit the programming assignments by doing:

        % ~csci551b/bin/bsubmit upload \
              -email `whoami` \
              -event merlot.usc.edu_80_1372906710_125 \
              -file pa1.tar.gz
        % ~csci551b/bin/bsubmit upload \
              -email `whoami` \
              -event merlot.usc.edu_80_1372906710_126 \
              -file pa2.tar.gz
    respectively. Please note that `whoami` will be replaced by your nunki login ID, and therefore, `whoami` is your USC e-mail address.

  3. Check the output of the bsubmit program carefully. It should tell you:

    • which event did you make a submission for (make sure it's the right one),

    • where a copy of your submission is stored,
    • where the upload ticket is stored,
    • where the receipt is stored,
    • and at what time did the server received your submission.

    By default, these files are stored in:

    where $evid is the event_id for the corresponding event.

    The bsubmit program can be used multiple times for a given assignment. By default, we will grade your last submission. Therefore, a later submission is considered to supersede previous submissions. If you would like us to grade an earlier submission instead of the last on time submission, you need to send e-mail to the grader, the TA, and the instructor within 12 hours after submission deadline. We will use the timestamp of the submission which we ultimately grade to determine if you get penalty for late submission.

  4. In case something is wrong with your account and the above procedure failed and you don't have time to fix things, you can e-mail the TA (and cc the instructor) and include your submission (i.e., pa1.tar.gz/pa2.tar.gz) as an attachment to the e-mail.

    Please understand that that it can take a long time for e-mail to get delivered to the recipients' mailboxes. Depending on your e-mail client and your service provider, an e-mail can take anywhere from seconds to hours before it is delivered. Sometimes, an e-mail is never delivered. Therefore, e-mail submission can be very risky. We will not be responsible for your late or lost submission if you submit this way and we will not provide you with a confirmation that we have received your e-mail submission. If you want confirmation, you have to run bsubmit and read its output. To avoid having to submit via e-mail, it is highly recommended that you practice the bsubmit procedure above, and if you run into any trouble, ask the TA or the instructor for help right away.

    The bottomline is that it's really not recommended to submit this way and this procedure should only be used in case of an emergency. Also, since the header of e-mail messages can be spoofed easily, the only timestamp the TA can use (in order to be fair to all) in an e-mail submission is the time the e-mail arrived into the TA's mailbox.

Verify Your Submission
After you submitted, for example, pa1.tar.gz, you should verify what you've submitted can be compiled as is. Let's say your pa1.tar.gz is in your ~/pa1 directory. Do the following on
    % cd ~/pa1
    % mkdir xyzzy
    % cd xyzzy
    % gunzip -c ../pa1.tar.gz > pa1.tar
    % tar xvf pa1.tar
    % make
    % [ re-run all your tests to make sure that they all work as expected ]
    % cd ..
    % rm -rf xyzzy
Also, before you run the mkdir command, make sure you don't have the xyzzy directory. If you do, delete it. A few things to note:
  1. If the gunzip command failed, the pa1.tar.gz file your've submitted is not properly gzipped.
  2. If the tar command failed, the pa1.tar.gz file your've submitted is not properly created.
  3. If the make command failed, you probably forgot to include something in your submission.
  4. If any of the above failure occurs, you must recreate your submission and submit again and verify again.

[Last updated Sat Sep 19 2020]    [Please see copyright regarding copying.]