4.0 KiB
Recipes
Short answers, for when you know the shape of the tool and want the invocation.
Assembly
Draw only from material I have taught.
--lectures l09,l10,l11.
Combine with --topics and --banks to narrow further; the filters intersect.
See the draw before committing to it.
--dry-run.
Prints the selection and any notes about constraints that had to bend, and writes nothing.
Reproduce a draw exactly.
--seed N.
The same seed against the same pool gives the same items in the same order.
Recorded in the assessment file, so a draw stays reproducible after the fact.
Two forms that differ only in option order.
--forms 2.
Each form gets its own seed; item order is shared unless the form sets shuffle_items.
A blueprint I cannot satisfy. The error names the level, how many items were asked for, and how many were available after filtering. Usually the fix is a shorter cooldown or a wider lecture range, not more items.
Reuse
$ coursebank usage history q-align-recall-001
$ coursebank usage unused
unused lists approved items never placed on an assessment, which is the queue of work you already did and forgot about.
Exports
A printable exam.
coursebank export typst exam-2 --form all.
Add --variant key to write only the key.
A Canvas quiz.
coursebank export qti exam-2 --form A.
Add --no-feedback to leave per-option feedback out of the package.
A Markdown copy for a colleague to read.
coursebank export md exam-2.
Add --with-key for the answers and rationales.
Restyle the printed output.
coursebank template dump, then edit templates/exam.typ.
See typst_export.
Ingest
Gradescope.
coursebank ingest gradescope grading/exam-2/ --assessment exam-2.
Point it at the directory holding the per-question CSVs.
Canvas.
coursebank ingest canvas export.csv --assessment exam-2.
The Student Analysis export, not the gradebook.
Keep student identities out of the repository.
--pseudonymize --salt-file ~/.coursebank-salt.
Keep the salt outside the repository; the point of the salt is that hashed ids cannot be brute-forced over a class roster, which fails if the salt sits next to them.
Check a parse before writing. --dry-run.
Analysis
| Question | Command |
|---|---|
| Which items misbehaved? | analyze items --assessment exam-2 |
| How hard is each item, on a common scale? | analyze irt --assessment exam-2 --model 2pl |
| Which students are struggling, and with what? | analyze students --assessment exam-2 |
| What is in the store? | data |
Pool across terms by passing the assessment id rather than one administration id. Twenty-four students supports very little; ninety-six across four terms supports something.
Reports
$ coursebank report students --assessment exam-2
$ coursebank report cohort --assessment exam-2
The student report omits correct answers, other students' data, and any rank. Hand it out without a second pass.
After grading
An option turned out to be defensible.
Add credit_overrides: {C: 0.5} to the placement in the assessment record.
Do not edit scores by hand, or item analysis sees different numbers than the students did.
An item was broken.
Add dropped: true to the placement.
It leaves the scored matrix and is not printed on re-export, but the record of having asked it stays.
Statistics onto the items.
coursebank calibrate --assessment exam-2, read the diff, then --apply.
Housekeeping
Editor validation stopped working.
coursebank schema rewrites the JSON Schemas.
They ship with the binary, so an upgrade can leave them stale.
A pre-commit hook.
coursebank validate && coursebank lint.
Exit code 2 means findings, 1 means the command failed, so a hook can treat them differently.
Build without Parquet.
pixi run build-lean.
The response store falls back to CSV.
Useful if you want a binary with a shorter dependency list; the tradeoff is slower reads on large stores.