For Graders

This page contains instructions on how to use chisubmit specifically for graders.

Initial setup

Before you perform any of the instructions discussed in this page, create an empty directory to do your grading in (we will refer to this directory as your grading directory). Inside that directory, run the following command:

chisubmit init

Pulling repositories to grade

Once an assignment is ready to grade, you need to create local grading repos to do your grading on. These grading repos will have a branch called ASSIGNMENT_ID-grading (where ASSIGNMENT_ID is the assignment being graded; e.g., assignment p1 would have a branch called p1-grading). All your grading must be done on this branch. Do not modify any other branch on the repository

To pull the repositories assigned to you, run the following:

chisubmit grader pull-grading ASSIGNMENT_ID

Where ASSIGNMENT_ID is the assignment identifier.

The repositories will now be in repositories/COURSE_ID/ASSIGNMENT_ID/ inside your grading directory.

If your course uses extensions, you should repeat this step after each extended deadline. Your instructor may also notify you that you’ve been assigned additional repositories; you will need to repeat these steps to pull the repositories that have been newly assigned to you.

Grading the code

Add comments directly on the code. Use the following format:

/*** GRADER COMMENT: You forgot to initialize variable 'foo' */

### GRADER COMMENT: You forgot to initialize variable 'foo'

Or:

/*** GRADER COMMENT
 * The following code is wrong for a variety of reasons. Let me tell you why:
 *  - It hurts my eyes
 *  - It offends the order of created things
 *  - It is an aberration unto the Lord
 */

### GRADER COMMENT
# The following code is wrong for a variety of reasons. Let me tell you why:
#  - It hurts my eyes
#  - It offends the order of created things
#  - It is an aberration unto the Lord

Any time a penalty is assessed, make sure to include it in the comment:

/*** GRADER COMMENT
 *** PENALTY: -10 points
 *
 * ...
 *
 */

### GRADER COMMENT
### PENALTY: -10 points
#
# ...
#

If the assignment has a rubric file, there will be a file called ASSIGNMENT_ID.rubric.txt at the root of the repository. It will look something like this:

Points:
    - Tests:
        Points Possible: 50
        Points Obtained:

    - Implementing foo():
        Points Possible: 20
        Points Obtained:

    - Implementing bar():
        Points Possible: 20
        Points Obtained:

    - Code Style:
        Points Possible: 10
        Points Obtained:

Total Points: 0 / 100

Comments: >
    None

You must fill out the points, and update Total Points accordingly. To provide comments on the grading, do so under Comments: >. Please note that students will see these comments.

If you need to apply global deductions (i.e., deductions that do not apply to a single section of the rubric), you can add the following to the rubric:

Penalties:
    DEDUCTION_1_DESCRIPTION: DEDUCTION_1_AMOUNT
    DEDUCTION_2_DESCRIPTION: DEDUCTION_2_AMOUNT
    ...
    DEDUCTION_N_DESCRIPTION: DEDUCTION_N_AMOUNT

For example:

Penalties:
    Submitted code in Word document: -30
    Uses library we specifically asked you not to use: -5

If you need to apply global bonuses (typically an adjustment to the final grade to account for something; e.g., if the student worked alone), you can add the following to the rubric:

Bonuses:
    BONUS_1_DESCRIPTION: BONUS_1_AMOUNT
    BONUS_2_DESCRIPTION: BONUS_2_AMOUNT
    ...
    BONUS_N_DESCRIPTION: BONUS_N_AMOUNT

For example:

Bonuses:
    Worked alone: 10

Note: the above is just an example. In general, you should only apply the penalties and bonuses specified by the course instructor(s).

This is an example of a completed rubric:

Points:
    - Tests:
        Points Possible: 50
        Points Obtained: 45

    - Implementing foo():
        Points Possible: 20
        Points Obtained: 10

    - Implementing bar():
        Points Possible: 20
        Points Obtained: 20

    - Code Style:
        Points Possible: 10
        Points Obtained: 7.5

Penalties:
    Code comments are written in Old English: -5

Bonuses:
    Worked alone: 10

Total Points: 87.5 / 100

Comments: >
    Well done!

Pushing your graded work

Before pushing your graded work to the staging server, make sure that you have committed your work. Just commit as you usually would in Git:

git commit -m "Graded"

Take into account that chisubmit will already set up the repository so a generic author appears on the commit.

If your course is using rubrics, validate the rubrics with this command:

chisubmit grader validate-rubrics ASSIGNMENT_ID

Use the --only TEAM_ID option to validate a single rubric.

Note: The rubric file will not be added to Git by default. You will have to git add it to make sure it is included.

Finally, push your work to the staging server:

chisubmit grader push-grading ASSIGNMENT_ID

Take into account that you do not need to wait until all your repositories are graded before running these commands. If you have not yet graded a repository, running the above command will have no effect on that repository.

You can also use the --only TEAM_ID option to only push a single repository.