Returning Work to Students

Once marking is done (or very nearly done) it is time to reassemble the papers, build a spreadsheet and return results to students.

Is everything done?

Once we are mopping up the last few questions, and it becomes important to know what is tasks are left to do. You can get a quick overview on the command line:

$ plom-finish status
Please enter the 'manager' password:
*********************
** Completion data **
Produced papers: 20
Scanned papers: 20 (currently)
Completed papers: 1–20
Identified papers: 1–20
Totalled papers: 1–20
Number of papers with 0 questions marked = 0. Tests numbers =
Number of papers with 1 questions marked = 0. Tests numbers =
Number of papers with 2 questions marked = 0. Tests numbers =
Number of papers with 3 questions marked = 20. Tests numbers = 1–20
20 of 20 complete

This shows that everything is actually done.

Spreadsheet

Plom can build a CSV spreadsheet for us:

$ plom-finish csv
Please enter the 'manager' password:
>>> Warning <<<
This script currently outputs all scanned papers whether or not they have been marked completely.
Marks written to "marks.csv"

Please do note the warning — Plom will include all scanned papers in this sheet. While you can run this at any stage in the marking process, the sheet will not be complete until the marking is all done.

The sheet is saved as marks.csv and is human-readable:

StudentID

StudentName

TestNumber

Q1 mark

Q2 mark

Total

Q1 version

Q2 version

Warnings

67719396

Dix, Rachel

1

1

4

5

1

1

82911040

Hain, Norm

2

9

5

14

1

2

It contains the students ID and name, the number of the test-paper they wrote, their marks for each question, and the total. It also includes the versions of each question and a “Warnings” column:

  • [unidentified]: this test has not yet been identified

  • [unmarked]: at least one question on this test is unmarked

  • [no ID]: no ID given on test, but some questions were answered

  • [blank ID]: no ID was given was given and test is blank

It should not be too difficult to tweak marks.csv for upload into your favourite LMS (or at least the one you have to use). See Return via Canvas for an automated approach.

Reassembly

Once everything is IDd and marked and you’ve done any necessary mopping up and reviewing it is time to reassemble all the annotated page-images into papers complete with simple cover-pages:

$ plom-finish reassemble
Please enter the "manager" password:
Reassembling 20 papers...
100%|--------------------| 20/20 [00:04<00:00,  4.16it/s]

Note that for a long paper and a large class this could take some time. The resulting papers now reside in reassembled/. Each is named <testName>_<studentID>.pdf where the <testName> is the short name of the assessment.

You can also prepare individual solutions: see plom-finish solutions --help.

Return

There are various ways to return PDFs to your students.

Website return

See plom-finish webpage --help which has various options to prepare a webpage of non-predictable file names, and leaves you the problem of returning a “secret code” (from return_codes.csv) to each student.

Return via Canvas

Caution

This feature is still being “beta” tested and is not yet integrated into Plom. Proceed with caution.

Get the script called plom-push-to-canvas.py. You might find it in a directory like /home/<user>/.local/share/plom/contrib or you can get it from the Plom source code. Copy it to your working directory (where the reassembled/ directory and marks.csv are).

Make an “API key” for your Canvas account:

  • Login to Canvas and click on “Account” (your picture in the top-left) then “Settings”.

  • Click on + New Access Token. The “purpose” can be “Plom upload” (or whatever you want) and you can set it to expire in a day or two.

  • Copy the token, something like 11224~AABBCCDDEEFF....

  • Who can do this? The instructor can. So can TAs, but be cautious: Canvas has three kinds of TAs: TA, TA Grader, and TA Course Builder, and at least before 2022-11-08 at UBC, it would fail for TA Graders, Issue #2338.

Also in Canvas, create column “Midterm 1” (or whatever) in Canvas with the correct number of points. Publish the column but set to manual release.

Run ./plom-push-to-canvas.py --help for instructions. Use the --dry-run mode first! You almost certainly want --no-section unless you are doing something very specialized (see --help for more info). An example invocation looks something like:

./plom-push-to-canvas.py \
    --dry-run \
    --course 112233 \
    --assignment 1234123 \
    --no-section \
    --no-solutions \
    2>&1 | tee push.log

Go back to Canvas and examine a few papers: double check the scores. Double check some of the PDF files. Unfortunately, you’ll probably hit Canvas bug #1886 (which effects instructors not students). Workarounds are offered in the bug report.

Once happy, release the grades on Canvas.

Technical docs

  • The command-line tool plom-finish is the current front-end for most tasks related to returning work.

  • For scripting or other advanced usage, you can import plom.finish in your own Python code. See plom.finish module.