Submission Instructions
In all programming assignments, a script will automatically clone the master branch of all the private assignment repositories (e.g. repos named hw-usc-username
) by the deadline and use the state of the repository's master branch at that moment as your official submission for that programming assignment.
In other words, for on-time submissions you do not need to actively upload or send your code to any service like Blackboard. You do, however, need to make sure you push
your code to the GitHub server by the assignment's specified deadline(s) and the code you intend to be graded is in the master branch of your repo.
Step 1. Preparing Your Code for Submission
After concluding work on your assignment, you are to take a moment and make sure that your repository is in a good state for submission. This is a three step process and you are to follow all these steps unless otherwise noted in the assignment write-up, corresponding rubric or explicitly instructed by the professors:
Make your code is grading friendly:
- Create a
README.md
in the directory for each assignment - Suppressed all debug messages (remove any
cout
statements or other debug output) - All assignment files are in the correct directory with the proper names, as specified in the assignment page
- Make sure your code compiles with no errors and runs on the Virtual Machine
Acceptable Document Formats
If an assignment requires you to submit documentation and/or textual answers. Your documentation should be in the base directory of the assignment.
The following document formats are accepted:
- Plain text
- Markdown
No other formats are accepted unless explicitly stated. These include but not limited to Microsoft Word documents (e.g. .doc
, .docx
), PDF, and Ritch Text Format (RTF) files.
Step 2. Push your commits to GitHub
After you've verified that your assignment is ready to be submitted, push your code. Run a git status
on your repository and make sure that there are no files listed as:
- Changes to be committed,
- Changes not staged for commit, or
- Untracked files
A git status on your master branch must return:
# On branch master
nothing to commit, working directory clean
Step 3. Verifying Your Commit Before the Deadline
Before the deadline and after pushing your submission to GitHub, you must ( MUST ) clone your code in a separate directory (i.e. new location), e.g.
cd
git clone git@github.com:usc-csci356-fall2018/hw-ttrojan.git test_assignment
cd test_assignment
Then, compile, run and test your code.
Step 4. Fill out the Homework Submission Form
The submission form is available at the end of each homework. The link will be different for each assignment, so make sure you are using the proper link. To complete the form, you will need to get the SHA from your commit. You can get the SHA from your repository's commit page as shown in the following screenshot:
When submitting your assignments, we will specificy required files and perform a few quick checks to make sure your submission is valid. If there are missing files, you will receive a message detailing what needs to be done. Multiple submissions are OK -- we will grade the most recent SHA submission.
Late Submissions
Any submission after the deadline will count as a late submission. Doing so will automatically use a late day (unless you have already made previous arrangements with your professor). If you don't have any late days remaining you will receive a 0 for the assignment. Emails to Professors, TAs or CPs are not considered as a notice for late submissions. Failure to follow these instructions will result in grading your repository as it was by the official deadline.
Submission FAQs
Q1. How do I Checkout A Specific Commit
In the case you want to checkout a specific version of your code, such as the commit used in grading your first assignment, You first need to locate the SHA of that commit. To checkout commit d8da410b19cf0a9f5a3003120204a114b8496942
from ttrojan's restaurant repository:
cd
git clone git@github.com:usc-csci356-fall2018/hw-ttrojan.git test_assignment
cd test_assignment
git checkout d8da410b19cf0a9f5a3003120204a114b8496942
Notice that by checking out a specific commit, you "detach" yourself from the master branch. When you're done verifying the commit, you should point HEAD back to master. You should never work in a 'detached HEAD' state.
# reset the changes we've made during the 'detached HEAD' state
git stash
# point HEAD back to master
git checkout master