CSCI 356 - Fall 2018 Introduction to Computer Systems

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:

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:

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:

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:

SHA of latest commit

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