Rexam is a very powerful R package for exam sheets genration and correction.
The package is rich and its functions are highly customizable.
For the same reason its use might be confusing at first. This package is the synthesis of one year wokring with r-exams. moRexams
is built to facilitate users access to the rexam
functionalities, possibly lowering the entry cost.
morexams
wraps rexam
and mainly adds three features:
- adds checks to avoid simple problems (duplicate students, missing sheets ...) which are difficult to debug in
rexam
- adds an
init
function to initialize a working folder with a basic structure needed to userexams
out of the box. Theinit
function generates a fully-working example to immediately start withrexam
. - move the configuration from the function parameters to a configuration file, useful to store configurations and simplify the script writing.
Install devtools
and morexams
with the following commands:
install.packages("devtools")
library(devtools)
install_github("mpascucci/morexams")
Open R in an empty directiory which will contain your new exam and run:
library(morexams)
morexams_init()
This will setup the folder by copying the main R scripts, config and tutorial files.
|-Generated #generated exam sheets
|-Logo #an image for exam sheets header
|-Questions #exam questions
|-Scan #scanned exam sheets
|-Students #students list
|-Evaluation #exam results
exam_generation.R #R script for exams sheet generation
exam_correction.R #R script for auto exams correction
config.R #the exam configuration file
This procedure is the result of one semester trial-and-error experience. Watch out: most of the complexity (and possible problems) lie in the physical steps of the procedure (printing, explaining, collecting, scanning) more than in the software.
- edit the configuration file
config.R
where you can specify the exam's properties (e.g. title, author, ...) - generate the exam copies by following the example in
exams_generation.R
- make a backup copy of the
Generated
folder for safety. - print the exam sheets two-sided and clipse them.
- take the time to carefully explain the exam methodology to the students: explain that a ball-point pen (black or blue) must be used, give a clear example on how to fill the student-ID part in the first page of the exam sheet.
- do the exercices yourself: verify that the correct answer is present in each multiple-choice question (i.e. the exercices are written correctly).
- take some extra ball-point pens with you.
- carefully explain how the form should be filled with the student's ID and the chosen answers. Make clear that only crosses whould be used to mark the answers and that the writing must be clean.
- if the exam contains open questions, ask the students to write their name and ID within the first answer field.
- ask the student to separate the exam sheets and return only one solution sheet per exam part (multiple-choice and open-questions), which should be piled separately. All other official exam sheets shall also be returned (even empty).
- make shure the students wrote their name and ID on all returned sheets.
- tell the students to keep the exam text. It is unique, therefore they will need it for correction.
- Count the copies that do not have a student ID (if any) and remove them before scanning.
- Put all copies in the same orientation, scan them bottom first.
- force fromat A4 in the scanner settings.
- choose PNG format (no PDF), and set resolution to 300dpi.
- correct the open questions first (if any) and give a note by marking only one of the cases in the note field (upper right part of the sheet). No mark corresponds to zero (=very bad), the other cases correspond to 1 to 5 (=perfect) from left to right. Do not mark more than one case. The actual points will be determined in the evaluation script later.
- scan the solution sheets and put the image files in the
Scan/qcm
andScan/string
folders for multiple-choice and open questions respectively. - evaluate the exam by following the example in
exams_correction.R
. The evaluation is interactive and will ask to check in case of ambigiuity. - double check that the pages are all in the same orientation if you get strange error messages.
- in case you get an error like the following:
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
line 8 did not have 6 elements
this means that the optical reading failed and that line 8
in the Daten.txt file automatically generated has to be corrected manually.
Find this file in the nops_scan
zip file in the ./Scan/nops
folder generated by the correction process. You should unzip it, correct it and then update the zip file.
WARNING: Use a simple text editor to edit the Daten.txt file in order to preserve the leading zeros in the fields.
After the exam evaluation, copy the following folders for a backup:
- Evaluation
- Scan
- Generation
This feature does not always work propery, therefore has been temporarely removed. If you want to restore it these are the required steps to make ImageMagik work on Linux:
- On linux install ImageMagik
- modify /etc/ImageMagick-6/policy.xml
from
<policy domain="coder" rights="none" pattern="PDF" />
to<policy domain="coder" rights="read|write" pattern="PDF" />