\documentclass{article}
\usepackage{amsmath} %Never write a paper without using amsmath for its many new commands
\usepackage{amssymb} %Some extra symbols
\usepackage{makeidx} %If you want to generate an index, automatically
\usepackage{graphicx} %If you want to include postscript graphics
%%%  \usepackage{mystyle} 
%Create your own file, mystyle.sty where you put all your own \newcommand statements
%%%
%%%
\usepackage{amscd}

\usepackage{Sweave}


%%\VignetteIndexEntry{Examples of ExamMaker from package:ProfessR}

%%% \usepackage{Sweave}

\begin{document}

%%%\renewcommand\floatpagefraction{.9}
%%%\renewcommand\topfraction{.9}
%%%\renewcommand\bottomfraction{.9}
%%%\renewcommand\textfraction{.1}
%%%\setcounter{totalnumber}{50}
%%%\setcounter{topnumber}{50}
%%%\setcounter{bottomnumber}{50}

\setkeys{Gin}{width=0.9\textwidth}



\numberwithin{equation}{section}

%%%   
%%%\SweaveOpts{prefix.string=rseis}
\SweaveOpts{prefix=TRUE,prefix.string=rseis,include=FALSE}


\author{Jonathan M. Lees\\
University of North Carolina, Chapel Hill\\
Department of Geological Sciences\\
CB \#3315, Mitchell Hall\\
Chapel Hill, NC  27599-3315\\
email: jonathan.lees@unc.edu\\
ph: (919) 962-0695
}
%%  \address{University of North Carolina, Chapel Hill}
%% \contact{Jonathan M. Lees}
%% \contactaddress{Department of Geological Sciences, CB #3315, Mitchell Hall, Chapel Hill, NC  27599-3315}
%% \contactemail{jonathan.lees@unc.edu}
%% \contactphone{(919) 962-0695}
\title{ExamMaker Analysis in R}
\date{September, 2007}

\maketitle


\begin{abstract}
This vignette is intended to instruct users on how to set up
and manipulate routines that design multiple choice exams 
for large classes where several versions are required to 
avoid the temptation to cheat.
The program reads question banks from ASCII text files and
creates latex files that are suitable for distribution in class.
Answer keys are also created.
The main power of ProfessR is the ability to
randomize questions as well as in the answer choices,
to set up multiple versions of a test.
Once a large data bank of questions 
has been created, any number of tests can be generated,
different every year or scrambled in a variety of ways.

\end{abstract}


\section{Test DataBank}




The test databanks in the ProfessR package are 
organized as ASCII text files.  The format is relatively rigid at this stage but
these restrictions may be relaxed int he future.
At this time the questions are all multilple choice.
But true/fals questions could easily be incorporated by 
have a two choice question.

The TEXT format of the data is stored
in the following manner:
\begin{verbatim}
QUESTION: Sandstone cliffs in Montana are categorized as:
ANSWER: a) sedimentary rocks
b) metamorphic rocks
c) igneous rocks
d) intrusives
e) extrusives
\end{verbatim}

The program parses this out by search for the key words 'QUESTION:' and 'ANSWER:'
Severl question can be stacked on top of each other,
and in the event that there is a figure associated 
with the question, it is signaled by the key word, ``Fig:''.
For example here we have 2 questions,
the second one includes a previous generated figure
located on disk and referenced in the question via
the standard latex implementation.
\begin{verbatim}
QUESTION: Convection in the mantle is indicated by
a) hot slab descending at subduction and cold ridges rising
b) cold slabs descending and hot spots rotating
c) voluminous lava flows at transform faults
ANSWER: d) hot magma rising at ridges, cold slabs descending at subduction zones
e) hot spots drifting to the northwestern Pacific
QUESTION: From the follwowing figure (Figure~\ref{fig:faults1}) which is the normal fault:
a) A
b) B
ANSWER: c) C
d) D
e) E
FIG: /home/lees/Class/TESTBANK/faults_4_test.eps fig:faults1

\end{verbatim}
The FIG tag indicates a file pointer and latex tag name to refer
to the figure in the subsequent exam.

Any number of questions/answers can be in the databank.
Once they are read in via the parsing program,
questins can be selected in R 
and a specific Exam is generated.
<<>>=
library("ProfessR")

QB1 = Get.testbank('climate_change_abbott.txt') 
QB2 = Get.testbank('tsunami_abbot_web.txt') 
@ 
Here we have two data banks installed and we want to select a
random sample of 
12 questions from the first and 9 from the second.
<<>>=

L1 = length(QB1)
L2 = length(QB2)

isel1 = sample(1:L1)
QBfinal =  list()
for(i in 1:12) { QBfinal[[i]] = QB1[[isel1[i]]] }
isel2 = sample(1:L2)
for(i in 1:9) { QBfinal[[i+12]] = QB2[[isel2[i]]] }

@ 

To insure that there is no order to the questions
the exam can be randomized with simple calls to
<<>>=
QA1 = ran.exam(QBfinal)
@ 

On the other hand we may wish to create 2 versions of the same exam with 
questions mixed up to reduce the possibility of cheating:

<<>>=
examdate="TUES OCT 30 2007"

version.exam(QBfinal, "exam2A" , exnumber="Exam 2", seqnum="1", examdate=examdate)

version.exam(QBfinal, "exam2B" , exnumber="Exam 2", seqnum="2", examdate=examdate)

@ 



The output of these two calls includes tex files 
of the two tests, and solution files for printing and distributing
to students after the test is over.
Of course these should be processed 
with calls to Latex
\begin{verbatim}
latex exam2AMAST
latex exam2AMAST
\end{verbatim}
and
\begin{verbatim}
latex exam2BMAST
latex exam2BMAST
\end{verbatim}
Note that we call latex twice to rectify all the references
to figures in the latex file.

Finally the dvi output should processed 
to make a printable version.  I 
typically use the calls,

\begin{verbatim}
dvips -Ppdf exam2AMAST.dvi  > exam2AMAST.ps
ps2pdf exam2AMAST.ps   > exam2AMAST.pdf
\end{verbatim}
and similarly for the B test and the solution files.
I then can post the solutions on a web site and
students can read them using Windows.




\subsection{Latex Notes}

The Latex header in prep.exam
is generated autometically in 
the R-code.  For some users this
style may be too primitive and
they will want to replace the 
cover sheet with other more attractive
options.  Originally I used
a style sheet provided by
the University of Texas, UOFTEXAM.sty.
If the user wants to 
use this it should be installed in the 
proper place in
the users latex repository, /usr/share/texmf/tex/latex
or some such equivalent so
the latex program can make the final copy of the 
test.

Other changes should be made in that 
file to reflect the user's set up,
college, etc.

\subsection{Cleanup}

As a side effect of the ProfessR routines we have created
several files to be used later.  For this vignette, however,
we will delete these files.


%%%   <<>>=
\begin{verbatim}
file.remove("exam2AMAST.tex")

file.remove("exam2AMAST.tex" )
file.remove("exam2Asolutions.tex" )
file.remove("exam2A.tex" )
file.remove("exam2BMAST.tex" )
file.remove("exam2Bsolutions.tex" )
file.remove("exam2B.tex" )
file.remove("ExamMaker.tex" )
file.remove("Rplots.ps")
file.remove("ExamMaker.dvi" )
file.remove("ExamMaker.log" )
file.remove("ExamMaker.aux" )
\end{verbatim}

%%   @ 



\end{document}