File:
[LON-CAPA] /
loncom /
html /
adm /
help /
tex /
Custom_Response_Problems.tex
Revision
1.5:
download - view:
text,
annotated -
select for diffs
Sun May 24 13:08:35 2009 UTC (15 years, 3 months ago) by
www
Branches:
MAIN
CVS tags:
version_2_9_X,
version_2_9_99_0,
version_2_9_1,
version_2_9_0,
version_2_8_99_1,
version_2_8_99_0,
version_2_10_X,
version_2_10_1,
version_2_10_0_RC2,
version_2_10_0_RC1,
version_2_10_0,
loncapaMITrelate_1,
language_hyphenation_merge,
language_hyphenation,
bz6209-base,
bz6209,
bz5969,
bz2851,
PRINT_INCOMPLETE_base,
PRINT_INCOMPLETE,
HEAD,
GCI_3,
GCI_2,
BZ5971-printing-apage
Bug #2802: partial credit multiple answers
\label{Custom_Response_Problems}
Custom Response is a way to have a problem graded based on an algorithm. The use of this response type is
generally discouraged, since the responses will not be analyzable by the LON-CAPA statistics tools.
For a single textfield, the student's answer will be in a variable \$submission. If the Custom Response has multiple textfields, the answers will be in an array
reference, and can be accessed as \$\$submission[0], \$\$submission[1], etc.
The student answer needs to be evaluated by Perl code inside the <answer>-tag. Custom Response needs to return a standard LON-CAPA. The most common response are:
\begin{itemize}
\item EXACT\_ANS: return if solved exactly correctly
\item APPROX\_ANS: return if solved approximately
\item INCORRECT: return if not correct, uses up a try
\item ASSIGNED\_SCORE: partial credit (also return the credit factor, e.g. return(ASSIGNED\_SCORE,0.3);)
\item SIG\_FAIL, NO\_UNIT, EXTRA\_ANSWER, MISSING\_ANSWER, BAD\_FORMULA,
WANTED\_NUMERIC: return if not correct for different reasons, does not use up a try
\end{itemize}
The answer display is shown instead of the student response in 'show answer' mode.
The following example illustrates this:
\begin{verbatim}
<problem>
<startouttext />Accept an answer of around 90 or -90<endouttext />
<customresponse answerdisplay="something near 90 or -90">
<answer type="loncapa/perl">
# We do not want a vector
if ($submission=~/\,/) { return 'EXTRA_ANSWER'; }
# Need a numerical answer here
if ($submission!~/^[\d\.\-\e]+$/i) { return 'WANTED_NUMERIC'; }
$difference=abs(90-abs($submission));
if ($difference==0) { return 'EXACT_ANS'; }
if ($difference < 0.1) { return 'APPROX_ANS'; }
return 'INCORRECT';</answer>
<textline readonly="no" />
</customresponse>
</problem>
\end{verbatim}
Full list of possible return codes:
\begin{itemize}
\item EXACT\_ANS: student is exactly correct
\item APPROX\_ANS: student is approximately correct
\item NO\_RESPONSE: student submitted no response
\item MISSING\_ANSWER: student submitted some but not all parts of a response
\item EXTRA\_ANSWER: student submitted a vector of values when a scalar was expected
\item WANTED\_NUMERIC: expected a numeric answer and didn't get one
\item SIG\_FAIL: incorrect number of Significant Figures
\item UNIT\_FAIL: incorrect unit
\item UNIT\_NOTNEEDED: submitted a unit when one shouldn't
\item UNIT\_INVALID\_INSTRUCTOR: the unit provided by the author of the problem is unparsable
\item UNIT\_INVALID\_STUDENT: the unit provided by the student is unparasable
\item UNIT\_IRRECONCIBLE: the unit from the student and the instructor are of different types
\item NO\_UNIT: needed a unit but none was submitted
\item BAD\_FORMULA: syntax error in submitted formula
\item INCORRECT: answer was wrong
\item SUBMITTED: submission wasn't graded
\item DRAFT: submission only stored
\item MISORDERED\_RANK: student submitted a poorly order rank response
\item ERROR: unable to get a grade
\item ASSIGNED\_SCORE: partial credit; the customresponse needs to return the award followed by the partial credit factor
\item TOO\_LONG: answer submission was deemed too long
\item INVALID\_FILETYPE: student tried to upload a file that was of an extension that was not specifically allowed
\item COMMA\_FAIL: answer requires the use of comma grouping and it wasn't provided or was incorrect
\end{itemize}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>