Using chisubmit¶

Remember to run chisubmit commands from your local repository (which is set up to use chisubmit)

The examples in this page use pa1 as an example, but make sure you replace it with the correct assignment identifier!

Registering for an assignment¶

Before you can submit an assignment, you must register for it.

If you are going to work in a pair, your pair repository won’t be created until you register for the assignment.

Registering individually¶

A user who wants to register individually for pa1 would run the following command:

chisubmit student assignment register pa1


You should then see the following output:

Your registration for pa1 (Programming Assignment 1) is complete.


Registering as a pair¶

Users borja and amr want to register as a pair. borja runs this command:

chisubmit student assignment register pa1 --partner amr


And should see the following:

Your registration for pa1 (Programming Assignment 1) is complete.

The team is composed of the following students:

- Rogers, Anne (amr) UNCONFIRMED
- Sotomayor, Borja (borja)

Note: Some students have not yet confirmed that they are part of
this team. To confirm they are part of this team, they just
need to register as a team themselves (using this same
command, and listing the same team members).


amr also needs to register, to confirm that she wants to be on the team:

chisubmit student assignment register pa1 --partner borja


And she would see the following:

Your registration for pa1 (Programming Assignment 1) is complete.

The team is composed of the following students:

- Rogers, Anne (amr)
- Sotomayor, Borja (borja)


A user who wants to cancel a registration would run the following command:

chisubmit student assignment cancel-registration pa1


If this is an individual registration, you will see something like this:

You (Borja Sotomayor) currently have an INDIVIDUAL registration for pa1 (Programming Assignment 1).

Are you sure you want to cancel your registration for the assignment? (y/n):


If this is a team registration, you will see something like this:

You currently have a TEAM registration for pa1 (Programming Assignment 1).

Team amr-borja has the following students:
- Anne Rogers
- Borja Sotomayor

Are you sure you want to cancel this team's registration for the assignment? (y/n):

Your registration has been cancelled.


Note: You cannot cancel your registration if you have already made a submission. You will have to cancel the submission first (instructions below) and then cancel the registration.

Submitting an assignment¶

When you are ready to submit an assignment, make sure you have pushed all your commits to the git server (each assignment includes instruction on how to do this). If your code hasn’t been pushed, then chisubmit will not see it.

Submitting individually¶

To submit an assignment, simply run the following BEFORE THE DEADLINE:

chisubmit student assignment submit pa1


By default, chisubmit will create a submission using the latest commit in your repository. You should see something like this:

SUBMISSION FOR ASSIGNMENT pa1 (Programming Assignment 1)
--------------------------------------------------------

This is an INDIVIDUAL submission for Borja Sotomayor

The latest commit in your repository is the following:

Commit: c53b947521b3d741ee8c5562e4552e3bc06ddc6e
Date: 2017-09-17 18:05:04
Message: pa1 done!
Author: Borja Sotomayor <borja@cs.uchicago.edu>

PLEASE VERIFY THIS IS THE EXACT COMMIT YOU WANT TO SUBMIT

You are going to use 0 extensions on this submission.

You will have 2 extensions left after this submission.

Are you sure you want to continue? (y/n):


Before you type y, take a moment to ensure that this commit is the one you actually want to submit. In particular, if you follow the instructions in the assignment, but there is an error when committing or pushing (e.g., if you encounter a git merge conflict), you may be submitting an older commit (because the last one you tried to do actually failed). If the commit message and date shown by chisubmit don’t look right, then you should double-check whether you were able to successfully commit and push your code (a very common mistake is to simply forget to run git push)

If this is the commit you want to submit, enter y:

Your submission has been completed.


Submitting as a team¶

Only one member of the team needs to submit the assignment. The command is exactly the same:

chisubmit student assignment submit pa1


However, the output will be slightly different:

SUBMISSION FOR ASSIGNMENT pa1 (Programming Assignment 1)
--------------------------------------------------------

This is a TEAM submission for team amr-borja with the following students:
- Anne Rogers
- Borja Sotomayor

The latest commit in your repository is the following:

Commit: c53b947521b3d741ee8c5562e4552e3bc06ddc6e
Date: 2017-09-17 18:05:04
Message: pa1 done!
Author: Borja Sotomayor <borja@cs.uchicago.edu>

PLEASE VERIFY THIS IS THE EXACT COMMIT YOU WANT TO SUBMIT

Your team currently has 2 extensions

You are going to use 0 extensions on this submission.

You will have 2 extensions left after this submission.

Are you sure you want to continue? (y/n):  y



Submitting a different commit¶

A user or team that wishes to submit an earlier commit should use the --commit-sha option. For example:

chisubmit student assignment submit pa1 --commit-sha 2e5969ce281b88bcb3743dc81539623124e63f41


If you see Your submission has been completed, that means you are all set. If you want to be extra sure, the following command will show you the assignments you are registered for, and their submission status:

chisubmit student team show CNETID


If you are working as a pair on an assignment (and your CNETIDs are “A” and “B”) then you would run this:

chisubmit student team show A-B


If you have not submitted an assignment, you will see something like this:

ASSIGNMENTS
-----------
ID: pa1
Name: Programming Assignment 1
NOT SUBMITTED


If you have submitted the assignment correctly, you will see something like this:

ASSIGNMENTS
-----------
ID: pa1
Name: Programming Assignment 1
Last submitted at: 2015-10-07 00:07:20.017641+00:00
Commit SHA: 2e5969ce281b88bcb3743dc81539623124e63f41
Extensions used: 0


If you want to be super extra double sure, you can log into the GitLab server (https://mit.cs.uchicago.edu), then click on your repository (or your pair repository) on the right side of the page, then click on “Commits” on the left side of the page. You will see the list of commits that are on the server (this is what the graders will see). On the right side of the page, you will see the first eight characters of each commit’s SHA; find the one that was shown by chisubmit student team show command, and verify that it is, indeed the version of the code that you want the graders to grade. To do this, simply click on “Browse files” to see the state of the repository at that commit

Please note that, if you click on the commit itself (either the title or the identifier), you will see the changes that were included just in that commit. Don’t be alarmed if you don’t see all your files in your last commit! A Git commit only stores the information of what changed in your repository since the previous commit; to see the complete state of your repository (up to and including a given commit), just click on “Browse files” for that commit in the list of commits.

Re-submitting¶

Re-submitting is possible, but can sometimes be tricky because, in some cases, the graders may have already started grading your previous submission! So, if you think you may want to resubmit an assignment, you have to remember this important rule:

If the deadline for an assignment passes, and you have made a submission for that assignment before the deadline, the graders will be able to start grading it!

What happens internally is that, once the deadline passes, chisubmit looks at all the submissions that have been already made and flags them as “ready for grading”. So, when a grader checks whether there is any grading assigned to them, your submission will show up on their end.

Don’t worry: if you have extensions to use, there are ways of ensuring that you can re-submit even after the deadline passes, but it requires being careful about what steps you take to do so. If you find yourself in that situation, make sure you read the following sections very carefully.

For now, let’s assume the simplest (and most common) scenario: resubmitting when you have no intention of using any extensions. In this case, things become very simple: you can resubmit as many times as you want before the deadline. Then, once the deadline passes, your last submission before the deadline will be the one that the graders will see.

To re-submit before the deadline, just run the submission command like before (regardless of whether you’re submitting individually or in a pair):

chisubmit student assignment submit pa1


chisubmit will know that you already made a submission, and will ask you to confirm that you want to create a new submission:

SUBMISSION FOR ASSIGNMENT pa1 (Programming Assignment 1)
--------------------------------------------------------

This is a TEAM submission for team amr-borja with the following students:
- Anne Rogers
- Borja Sotomayor

You have already submitted assignment pa1

You submitted the following commit on 2017-09-18 23:06:15.918328+00:00:

Commit: c53b947521b3d741ee8c5562e4552e3bc06ddc6e
Date: 2017-09-17 18:05:04
Message: pa1 done!
Author: Borja Sotomayor <borja@cs.uchicago.edu>

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF YOU CONTINUE, THE ABOVE SUBMISSION FOR pa1 (Programming Assignment 1) WILL BE CANCELLED.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

If you continue, your submission will instead point to the following commit:

Date: 2017-09-18 23:06:15
Message: pa1 done! For real! This time!
Author: Borja Sotomayor <borja@cs.uchicago.edu>

PLEASE VERIFY THIS IS THE EXACT COMMIT YOU WANT TO SUBMIT

Your team currently has 2 extensions

You used 0 extensions in your previous submission of this assignment.
and you are going to use 0 additional extensions now.

You will have 2 extensions left after this submission.

Are you sure you want to continue? (y/n):  y



The safety submission strategy¶

Safety submissions are specially important if you have exhausted your extensions. If the deadline passes and you have not made any submissions, and you are out of extensions, that means an automatic zero on that assignment.

We also recommend that you plan to make your absolute final submission at least an hour before the deadline, in case there are any issues when you try to submit. If an issue does come up, and you alert an instructor or TA about it with an hour to go, it is very likely that someone will be able to assist you before the deadline. If you wait until three minutes before the deadline to submit, and run into issues, that limits how much assistance they can provide.

Using late chips¶

chisubmit refers to late chips as “extensions”.

You do not need to ask an instructor for permission to use a late chip, or notify us of you intention to do so. All you need to do is wait until after the deadline to make your submission, and chisubmit will automatically determine how many extensions you need to use.

If you made a submission before the deadline, and then realize you want to use an extension, make sure you read “Re-submitting after the deadline” below.

If you made no submissions before the deadline, and then submit less than 24 hours after the deadline (meaning you only need to use one extension), chisubmit will include something like this when you run the submission command:

Your team currently has 2 extensions

You are going to use 1 extensions on this submission.

You will have 1 extensions left after this submission.


Checking how many late chips you have¶

Just run the following command:

chisubmit student course show-extensions


In every assignment, there will be a very short grace period after the deadline where a submission will not consume a late chip. The intent of this grace period is to give some breathing room to students who run into last-minute issues when trying to submit their code (e.g., issues with git). However, you should always aim to submit your code before the deadline, for the following reasons:

• The length of the grace period is not disclosed, and it will be progressively shorter with each programming assignment.
• chisubmit informs the instructors of which students have submitted during the grace period. If we see a student or team that submits during the grace period for multiple programming assignments, we may begin applying point penalties to any future submissions you make during a grace period.

When you submit during the grace period, chisubmit will print the following before you confirm your submission:

NOTE: You are submitting after the deadline, but the instructor has
allowed some extra time after the deadline for students to submit
without having to consume an extension.


And the following once you confirm your submission:

Your submission has been completed.

In the future, you should not rely on the presence of this grace period!
Your instructor may choose not to use one in future assignments, or may
use a shorter grace period. Your instructor is also aware of which
submissions are made during the grace period; if you repeatedly submit


Re-submitting with a late chip¶

If you made a submission before the deadline and realize (before the deadline) that you want to use an extension after all, then you need to cancel your submission. That way, chisubmit will not flag it as ready for grading when the deadline passes. Simply run this command:

chisubmit student assignment cancel-submit pa1


You should see something like this:

This is your existing submission for assignment pa1:

Commit: c53b947521b3d741ee8c5562e4552e3bc06ddc6e
Date: 2017-09-17 18:05:04
Message: pa1 done!
Author: Borja Sotomayor <borja@cs.uchicago.edu>

Are you sure you want to cancel this submission? (y/n):  y