This page contains information about electronic submission for programming assignments
For this class, we will be using a submission software called bsubmit
It behaves differently from the old submit
program that you may be used to.
The bsubmit program is a commandline program and it's
only available on an ITS Unix machines (such as nunki.usc.edu or aludra.usc.edu).
Everyone has a shell account (i.e., an account that you can run a Unix "shell", meaning
that it has a commandline user interface) on nunki.usc.edu. In order to run the bsubmit
program, you must ssh into your account on nunki.usc.edu and run the program there.
nunki.usc.edu runs the Solaris operating system which is a type of Unix system,
so you need to be familiar with some basic Unix commands.
The current time at the submission server at merlot.usc.edu is 29Nov2022-04:23:29
(refresh this page to see the current time).
Platform for Programming Assignments
Since grading of all programming assignments must be done on either nunki.usc.edu
in the grading account (which you do not have access to)
or on a 32-bit Ubuntu 16.04 machine running inside VirtualBox/VagrantBox,
you should first decide which system you want your program to run on and do all your development
on that platform. I would strongly discourage
you to do development work in a Windows environment
(such as using CMake or Microsoft Development Studio) or in a Mac OS X environment
(such as using Xcode).
You should use your USC accounts and preferably work on the
Solaris machines via ssh for testing. The
final (submitted) program must run on nunki.usc.edu because
we are going to test it in that environment.
(Please note that since Lecture 1, I have announced that there are other options.)
But you should not do there the whole program development, as nunki.usc.edu is a
general purpose server - under heavy use from many students.
Languages for Programming Assignments
You must use C or C++ for your programming assignments. Files should be named as follows ...
You must not
submit any binary files
(since we cannot verify if you wrote it or not).
If your submission included binary files, they will be discarded. In additional, points may be
deducted (please see grading guidelines for details).
Compilation for Programming Assignments
have a Makefile
for your program even in the case of single file submission.
(If you don't, we will write one for you and deduct 10 points from the assignment.)
Please read the information on Makefile
very carefully because it may have great affect your programming assignment scores.
So, make sure you
verify your submission
before you submit!
README File for Programming Assignments
include a README
file to comment on anything pertinent
to someone trying to run/grade your programming assignment.
Please read the requirements about the
On Time Submission
Due to clock skews,
electronic submissions of programming and homeworks assignments will
be accepted within 15 minutes after the specified deadlines without
penalties. If you submit with the next 24 hours,
you will receive 90% of your grade.
Although in the first 50 minutes of this period,
you will only lose 1% of your grade every 5 minutes.
24 hours after the submission deadline, you will starting
losing 1% of your grade every 5 minutes. By 7:30am the next
morning, there's no need to make a submission because you
would have lost 100% of your grade.
When you are ready to submit it for grading, you must
- 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 as much as 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
% tar cvf pa1.tar Makefile *README* *.c* *.h*
% gzip pa1.tar
Please note that the 2nd commandline argument of the tar
command above is the output filename of the tar command.
So, if you omit pa1.tar above, you may accidentally replace
one of your files with the output of the tar command.
So, please make sure that the first commandline argument is
cvf and the 2nd commandline argument is
If for some reason
you cannot run the commands above and decide to use another method, you
must inform the instructor through e-mail as soon
as you submit your assignment.
Also, you will be doing this at your own risk!
If you submit through e-mail, please note that it can take a lot
of time for the e-mail to get delivered to the instructor's mailbox.
Depending on your e-mail client and your service provider, an
e-mail can take anywhere from seconds to hours before it is delivered.
Unless you know your e-mail server well, it's probably a good idea
to submit early this way.
Also, since the header of e-mail messages can be spoofed easily,
the only timestamp the instructor can use (in order to be fair
to all) in an e-mail submission is the time the e-mail arrived into
the instructor's mailbox.
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.
- Submit the .tar.gz file you created, use the
executable in the ~csci551b/bin directory on
nunki.usc.edu (or any Solaris machine which you can find
The syntax is:
~csci551b/bin/bsubmit upload -email YOURLOGIN@usc.edu -event event_id -file submission_file
where YOURLOGIN is your login ID at nunki.usc.edu, event_id is the event ID assigned to
the corresponding assignment (see the Submission section in the specification of each
assignment to see what event_id you must use), and submission_file is pa#.tar.gz (where
"#" is the corresponding programming assignment number).
- Check the output of the bsubmit program carefully.
It should tell you:
- where a copy of your submission is stored (with a ".dat" file name extension)
- where the upload ticket is store (with a ".bti" file name extension)
- at what time did the server received your submission
We will use the timestamp of the submission which we grade to determine
if you get extra credit for early submission or get penalty for late submission.
By default, these files are stored in:
where $evid is the event_id for the corresponding event.
It's a good idea to open the upload ticket file with a text editor
and look it over. One obvious thing to look for is the "file_size"
of your submission. If the file size is too small (e.g., less than 100 bytes),
the submission file (i.e., pa#.tar.gz) probably does not contain the right files.
Please also check the output and make sure that you have submitted
to the correct event.
The bsubmit program can be used multiple times for a given
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 instructor within 12 hours after deadline.
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
% [ follow the steps in the grading guidelines to build the executable ]
% [ follow the grading guidelines and re-run all your tests to make sure that they all work ]
% [ make sure your README file is perfect and contains no "?" in required sections ]
% [ check against the "minus points" section of the grading guidelines to make sure that you won't get any deduction ]
% 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:
- If the gunzip command failed, the pa1.tar.gz
file your've submitted is not properly gzipped.
- If the tar command failed, the pa1.tar.gz
file your've submitted is not properly created.
- If the make command failed, you probably forgot to include
something in your submission. Please remember that if this does not
work, you may lose quite a few points.
- If any of the above failure occurs, you must recreate your submission
and submit again and verify again.