v2.1
Usability update: after a question has been edited, check that it still qualifies for the exam. Adds usage example in README.
Example usage
To generate the exams I have an exam directory for the course, in this
directory I have a Makefile which says something along the lines of:
.PHONY: 2016
2016: exam-160603.pdf exam-160822.pdf exam-161024.pdf
exam-161024.pdf: exam-161024.tex miunexam
exam-160822.pdf: exam-160822.tex miunexam
exam-160603.pdf: exam-160603.tex miunexam
MODULE_QUESTION_DBs+= ../modules/crypto/questions.tex
MODULE_QUESTION_DBs+= ../modules/crypto/slides.tex
EXAM_TAGS+= AnalyseNeededCryptoProperties
EXAM_TAGS+= DesignSystemsWithCryptoProperties
# ...
new_exam_questions.tex: ${MODULE_QUESTION_DBs}
examgen -d ${MODULE_QUESTION_DBs} -t ${EXAM_TAGS} -i > $@
INCLUDE_MIUNTEX=../miuntex # https://github.com/dbosk/miuntex
INCLUDE_MAKEFILES=../makefiles # https://github.com/dbosk/makefiles
include ${INCLUDE_MAKEFILES}/tex.mk
include ${INCLUDE_MAKEFILES}/miun.depend.mk
Whenever I get the reminder that I should submit new exams for a course I just
run the command make new_exam_questions.tex
in that directory, that will
create questions for one exam. Then I can easily create the three exams needed
for the year by repeating the process.
What actually happens when I run that command is the following:
- The exam generator will try to find questions in the files
MODULE_QUESTION_DBs whose tags are subsets of the required tags
specified in EXAM_TAGS. The exam needs enough questions to cover the
required tags --- but no tags which are not in the required tags. - The -i parameter enables the interactive (or inspirational) mode.
This opens each qualifying question in the user's favourite editor,
set by the EDITOR environment variable. This allows you to use the
exam generator to generate questions for inspiration: you use the
questions as starting points when creating new ones. But if
a question truly is the perfect question you can always use the
question without any modification. - The way the questions are tagged is as follows. Each question is tagged
with the intended learning outcomes (ILOs) it covers --- which is what we
examine in a course! The ILOs in the course syllabus represent the least
a student should be able to do to pass the course. So we need ILOs for the
higher grades too to be able to grade an exam A-F. In the example above:
AnalyseNeededCryptoProperties for E and DesignSystemsWithCryptoProperties
for A.