File:
[LON-CAPA] /
doc /
gutshtml /
SessionOn2.html
Revision
1.1:
download - view:
text,
annotated -
select for diffs
Fri Jun 28 20:30:29 2002 UTC (22 years, 1 month ago) by
www
Branches:
MAIN
CVS tags:
version_0_99_3,
version_0_99_2,
version_0_99_1,
version_0_99_0,
version_0_6_2,
version_0_6,
version_0_5_1,
version_0_5,
version_0_4,
stable_2002_july,
conference_2003,
STABLE,
HEAD
HTML version of GUTS manual. Individual files will still need cleanup.
1: <html>
2: <head>
3: <meta name=Title
4: content="Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)">
5: <meta http-equiv=Content-Type content="text/html; charset=macintosh">
6: <link rel=Edit-Time-Data href="Session%20On2_files/editdata.mso">
7: <title>Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)</title>
8: <style><!--
9: .MsoHeader
10: {tab-stops:center 3.0in right 6.0in;
11: font-size:10.0pt;
12: font-family:"Times New Roman";}
13: .H5
14: {font-size:10.0pt;
15: font-family:"Times New Roman";
16: layout-grid-mode:line;
17: font-weight:bold;}
18: .Section1
19: {page:Section1;}
20: .Section2
21: {page:Section2;}
22: -->
23: </style>
24: </head>
25: <body bgcolor=#FFFFFF link=blue vlink=purple class="Normal" lang=EN-US>
26: <div class=Section1>
27: <h2>Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)</h2>
28: <h3><a name="_Toc421867127">Tags</a></h3>
29: <ul type=disc>
30: <li><b>Response tags </b></li>
31: </ul>
32: <p>Arguments for all response tags </p>
33: <ul type=disc>
34: <ul type=circle>
35: <li><i>ID</i><span style='font-style:
36: normal'>, if this isn't set it will be set during the publication step.
37: It is used to assign parameters names in a way that can be tracked if
38: an instructor modifies things by hand. </span></li>
39: <li><i>name</i><span
40: style='font-style:normal'> optional, if set, it will be used by the resource
41: assembly tool when one is modifying parameters. </span></li>
42: </ul>
43: </ul>
44: <p>Implemented response tags </p>
45: <ul type=disc>
46: <ul type=circle>
47: <li><b><responseparam></b><span
48: style='font-weight:normal'> if it appears it should be inside of a <*response>
49: tag, defines an externally adjustable parameter for this question. Arguments:
50: </span></li>
51: <ul type=square>
52: <li><i>default</i><span
53: style='font-style:normal'> required, specifies a default value for the
54: parameter </span></li>
55: <li><i>name</i><span
56: style='font-style:normal'> required, specifies an internal name for the
57: parameter </span></li>
58: <li><i>type</i><span
59: style='font-style:normal'> required specifies the type of parameter, one
60: of "tolerance", "int", "float", "string",
61: "date" (configuration of paramters is handled by lonparmset.pm
62: and parameter.html) </span></li>
63: <li><i>description</i><span
64: style='font-style:normal'> a string describing the parameter, this is what
65: is used to talk about a parameter outside of a problem </span></li>
66: </ul>
67: <li><b><parameter></b><span
68: style='font-weight:normal'> exactly the same as <responseparam> currently,
69: but should not appear inside of a <*response> </span></li>
70: <li><b><numericalresponse></b><span
71: style='font-weight:normal'> implements a numerical answer, it needs an internal
72: </span><b><textline></b><span style='font-weight:normal'> for the
73: response to go in. It checks all styles of numerical supported in CAPA.
74: Possible args are: </span></li>
75: <ul type=square>
76: <li><i>answer</i><span
77: style='font-style:normal'> required, specifies the correct answer, may
78: be either a perl list or scalar</span></li>
79: <li><i>units</i><span
80: style='font-style:normal'> optional, specifies unit of correct answer,
81: CAPA style</span></li>
82: </ul>
83: <li><b><stringresponse></b><span
84: style='font-weight:normal'> implements a string answer, it needs an internal
85: </span><b><textline></b><span style='font-weight:normal'> for the
86: response to go in. It can check the string for either case or order. </span></li>
87: <ul type=square>
88: <li><i>answer</i><span
89: style='font-style:normal'> required, specifies the correct answer, may
90: be either a perl list or scalar</span></li>
91: <li><i>type</i><span
92: style='font-style:normal'> optional, CAPA style str args, cs/ci/mc </span></li>
93: <ul type=square>
94: <li>cs - case senesitive, order important</li>
95: <li>ci - case insenesitive, order important</li>
96: <li>mc - case insenesitive, order unimportant</li>
97: </ul>
98: </ul>
99: <li><b><essayresponse></b><span
100: style='font-weight:normal'> implements a ungraded large text response, it
101: need an internal </span><b><textarea></b><span style='font-weight:
102: normal'> for the response to go in. </span></li>
103: <li><b><imageresponse></b><span
104: style='font-weight:normal'> implements a image click style image submission,
105: uses the foil structure tags <a href="#foil">below</a>. Additional tags
106: that should appear in a <foil> are: </span></li>
107: <ul type=square>
108: <li><b><image></b><span
109: style='font-weight:normal'> required, the contained text specifies a published
110: graphical resource that is the image used, should only appear once per
111: foil</span></li>
112: <li><b><rectangle></b><span
113: style='font-weight:normal'> required, the contained text specifies a rectangular
114: area that is correct, should look like (1,2)-(3,4), at least 1 required</span></li>
115: <li><b><text></b><span
116: style='font-weight:normal'> required, the contained text is printed on
117: top of the image.</span></li>
118: </ul>
119: <li><b><optionresponse></b><span
120: style='font-weight:normal'> implements a "select from these choices"
121: style question, the choices are specified by the instructor, it uses the
122: foil structure tags <a href="#foil">below</a> with this additional args:
123: </span></li>
124: <ul type=square>
125: <li><b><foilgroup></b><span
126: style='font-weight:normal'> is required to have <i>options</i></span> which
127: should be a perl list of possible options for the student. </li>
128: </ul>
129: <li><b><radiobuttonresponse></b><span
130: style='font-weight:normal'> implements a true / false style question with
131: 1 correct answer.it uses the foil structure tags <a href="#foil">below</a>
132: but the <i>value</i></span> of a <foil>can only be "true"
133: or "false" or "unused" </li>
134: <li><b><dataresponse></b><span
135: style='font-weight:normal'> implements a straight data storage entry idea,
136: needs and interveing input tag like <textline> to work correctly.<br>
137: Arguments: </span></li>
138: <ul type=square>
139: <li><i>name</i><span
140: style='font-style:normal'> internal name for the value, it will have the
141: part id and respose id added on to it </span></li>
142: <li><i>type</i><span
143: style='font-style:normal'> type of data stored in this response field,
144: should be one of the types supported by parameter.html </span></li>
145: <li><i>display</i><span
146: style='font-style:normal'> a string that will be used to describe the field
147: when interfacing with humans </span></li>
148: </ul>
149: </ul>
150: </ul>
151: <p> <span style='font-size:10.0pt;
152: font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>
153: </span></span> <b><externalresponse></b><span style='font-weight:
154: normal'> implements the ability to have an external program grade a response,
155: expects either a <textline> or <textfield> inside the tag. </span></p>
156: <p>Arguments: </p>
157: <ul type=disc>
158: <ul type=circle>
159: <ul type=square>
160: <li><i>url</i><span
161: style='font-style:normal'> the url to submit the answer and form to, does
162: not need to be a LON-CAPA machine. </span></li>
163: <li><i>answer</i><span
164: style='font-style:normal'> a string or scalar variable that can encode
165: something that should encode the correct answer, in some cases this
166: may be nothing. </span></li>
167: <li><i>form</i><span
168: style='font-style:normal'> a hash variable name that will be submitted
169: to the remote site as a HTTP form. </span></li>
170: </ul>
171: </ul>
172: </ul>
173: <p>The response of the remote server needs to be in XML as follows. </p>
174: <pre> <loncapagrade> <awardetail> CORRECT </awardetail> <message> A message to be shown to the students </message> </loncapagrade> </pre>
175: <ul type=disc>
176: <ul type=circle>
177: <ul type=square>
178: <li><b><loncapagrade></b><span
179: style='font-weight:normal'> no arguments but must surround the response.
180: </span></li>
181: <li><b><awardetail></b><span
182: style='font-weight:normal'> required inner tag, the response inside must
183: be one of the detailed responses that appears in the data storage documentation
184: (CVS:loncapa/doce/homework/datastorage) </span></li>
185: <li><b><message></b><span
186: style='font-weight:normal'> optional message to have shown to the student
187: </span></li>
188: </ul>
189: </ul>
190: </ul>
191: <ul type=disc>
192: <li><a name=foil><b>Foil Structure Tags</b></a><b> </b></li>
193: </ul>
194: <p>All tags that implement a foil structure have an optional arg of <i>max</i><span style='font-style:normal'>
195: that controls the maximum number of total foils to show. </span></p>
196: <ul type=disc>
197: <ul type=circle>
198: <li><b><foilgroup></b><span
199: style='font-weight:normal'> required, must be the tag that surrounds all
200: foil definitions </span></li>
201: <li><b><foil></b><span
202: style='font-weight:normal'> required, all data inside is a possible foil
203: </span></li>
204: <li><b><conceptgroup></b><span
205: style='font-weight:normal'> optional, surrounds a collection of <foil>,
206: when a problem is displayed only one of the contained <foil>is selected
207: for display. It receives one required argument <i>concept</i></span>.
208: </li>
209: </ul>
210: <li><b>Hint structure </b></li>
211: </ul>
212: <p>All of these tags must appear inside a <b><*response></b><span
213: style='font-weight:normal'> tag. </span></p>
214: <ul type=disc>
215: <ul type=circle>
216: <li><b><hintgroup></b><span
217: style='font-weight:normal'> Tag that surrounds all of a hint. </span></li>
218: <li><b><hintpart></b><span
219: style='font-weight:normal'> required, Tag to implement conditional hints.
220: It has a required argument <i>on</i></span>. When a <*hint> tag
221: named the same as the value the on attribute evaluates to be correct the
222: <hintpart> will show. If no other <hintpart> are to show then
223: all hintparts with a <i>on</i><span style='font-style:normal'> of "default"
224: will show </span></li>
225: <li><b><numericalhint></b><span
226: style='font-weight:normal'> has all the arguments that <numericalresponse>,
227: does and the required attribute <i>name</i></span> which should be set
228: to the value of which <hintpart> will be shown. </li>
229: </ul>
230: <li><b>Input Tags </b></li>
231: </ul>
232: <p>This group of tags implement a mechanism for getting data for students, they
233: will usually be used by a <*response>. </p>
234: <ul type=disc>
235: <ul type=circle>
236: <li><b><textarea></b><span
237: style='font-weight:normal'> creates a Large text input box, If data appears
238: between the start and end tags, the data will appear i the textarea if
239: the student has not yet made a submission. Additionally it takes two arguments
240: <i>rows</i></span> and <i>cols</i><span
241: style='font-style:normal'> which control the height and width of the area
242: respectively. It defaults to 10 and 80. </span></li>
243: <li><b><textline></b><span
244: style='font-weight:normal'> creates a single line of input element, it accepts
245: 1 argument <i>size</i></span> which controls the width on the textline,
246: it defaults to 20. </li>
247: </ul>
248: <li><b>Output Tags </b></li>
249: </ul>
250: <p>This group of tags generate useful pieces of output. </p>
251: <ul type=disc>
252: <ul type=circle>
253: <li><b><standalone></b><span
254: style='font-weight:normal'> everything in between the start and end tag
255: is shown only on the web, and only if the resource is not part of a course.
256: </span></li>
257: <li><b><displayduedate></b><span
258: style='font-weight:normal'> this will insert the current duedate if one
259: is set into the document. It is generated to be inside a table of 1x1
260: elements </span></li>
261: <li><b><displaytitle></b><span
262: style='font-weight:normal'> this will insert the title of the problem from
263: the metadata of the problem </span></li>
264: <li><b><window></b><span
265: style='font-weight:normal'> the text in between is put in a popup javascript
266: window </span></li>
267: <li><b><m></b><span
268: style='font-weight:normal'> the inside text is LaTeX, and is converted to
269: HTML (or MathML) on the fly, if the argument <i>eval</i></span> is set
270: to "on" the intervening text will have a perl var expansion
271: done to it before being converted. </li>
272: <li><b><randomlabel></b><span
273: style='font-weight:normal'> shows a specified image with images or text
274: labels randomly assigned to a set of specific locations, those locations
275: may also have values assigned to them. There is a hash generated conating
276: the mapping of labels to locations, labels to values, and locations to
277: values. Example: </span></li>
278: </ul>
279: </ul>
280: <pre> <randomlabel bgimg="URL" width="12" height="45" texwidth="50"> <labelgroup name="GroupOne" type="image"> <location x="123" y="456" value="10" /> <location x="321" y="654" value="20" /> <location x="213" y="546" value="13" /> <label description="TEXT-1">IMG-URL</label> <label description="TEXT-2">IMG-URL</label> <label description="TEXT-3">IMG-URL</label> </labelgroup> <labelgroup name="GroupTwo" type="text"> <location x="12" y="45" /> <location x="32" y="65" /> <location x="21" y="54" /> <label>TEXT-1</label> <label>TEXT-2</label> <label>TEXT-3</label> </labelgroup> </randomlabel> </pre>
281: <p>Arguments: </p>
282: <ul type=disc>
283: <ul type=circle>
284: <ul type=square>
285: <li><i>bgimg</i><span
286: style='font-style:normal'> either a fully qualified URL for an external
287: image, or a loncapa resource, it supports relative references (../images/apicture.gif),
288: the image must either be a GIF or JPEG </span></li>
289: <li><i>width</i><span
290: style='font-style:normal'> the width of the image in pixels </span></li>
291: <li><i>height</i><span
292: style='font-style:normal'> the height of the image in pixels </span></li>
293: <li><i>texwidth</i><span
294: style='font-style:normal'> the width of the image in millimeters </span></li>
295: </ul>
296: </ul>
297: </ul>
298: <p>Internal tags: </p>
299: <ul type=disc>
300: <ul type=circle>
301: <ul type=square>
302: <li><b><labelgroup></b><span
303: style='font-weight:normal'> 1 required, multiple allowed. Declares a group
304: of locations and labels associated with them. <br>
305: Arguments: </span></li>
306: <ul type=square>
307: <li><i>name</i><span
308: style='font-style:normal'> this is the name of the group, a hash with
309: this name will be generated holding the mappings for later use in
310: the problem. For each location a value will be set for which label
311: is there, (EX. $hash{'1'}="TEXT-2"). For locations with
312: values the hash will contain 2 items, a location to value mapping
313: ($hash{'value_1'}=10), and a label to value mapping ($hash{'labelvalue_2'}=10).
314: For all image style of labels there will also be a label description
315: to label URL mapping ($hash{'image_2'}=IMG-URL). Also the entry 'numlocations
316: will be set to the total number of locations that exist. (Note that
317: locations and labels start counting from 1.) </span></li>
318: <li><i>type</i><span
319: style='font-style:normal'> the type of labels in this group, either 'image'
320: or 'text' </span></li>
321: </ul>
322: <li><b><location></b><span
323: style='font-weight:normal'> declares a location on the image that a label
324: should appear at <br>
325: Arguments: </span></li>
326: <ul type=square>
327: <li><i>x</i><span
328: style='font-style:normal'> the x value of the location in pixels </span></li>
329: <li><i>y</i><span
330: style='font-style:normal'> the y value of the location in pixels </span></li>
331: <li><i>value</i><span
332: style='font-style:normal'> a scalar value to associate at this location
333: (optional) </span></li>
334: </ul>
335: <li><b><label></b><span
336: style='font-weight:normal'> declaration of a label, if this is a text type
337: labelgroup the internal text should be the text of the label (HTML is
338: not currently supported), if this is an image type of label the internal
339: text must be a LON-CAPA resource specification, and the description
340: filed must be set. <br>
341: Arguments: </span></li>
342: <ul type=square>
343: <li><i>description</i><span
344: style='font-style:normal'> a required field for image labels, it will
345: be used when setting values in the hash. </span></li>
346: </ul>
347: </ul>
348: </ul>
349: <li><b>Scripting </b></li>
350: </ul>
351: <p>These tags allow the document to behave programatically </p>
352: <ul type=disc>
353: <ul type=circle>
354: <li><b><display></b><span
355: style='font-weight:normal'> the intervening perl script is evaluated in
356: the safe space and the return value of the script replaces the entire
357: tag </span></li>
358: <li><b><import></b><span
359: style='font-weight:normal'> causes the parse to read in the file named in
360: the body of the tag and parse it as if the entire text of the file had
361: existed at location of the tag </span></li>
362: <li><b><parserlib></b><span
363: style='font-weight:normal'> the enclosed filename contains definitions for
364: new tags </span></li>
365: <li><b><script></b><span
366: style='font-weight:normal'> if the argument <i>type</i></span> is set to
367: "loncapa/perl" the enclosed data is a perl script which is evaluated
368: inside the perl Safe space. The return value of the script is ignored.
369: </li>
370: <li><b><scriptlib></b><span
371: style='font-weight:normal'> the enclosed filename contains perl code to
372: run in the safe space </span></li>
373: <li><b><block></b><span
374: style='font-weight:normal'> has a required argument <i>condition</i></span>
375: that is evaluated, it the condition is true everything inside the tag
376: is evaluated, if it is false everything inside the block tag is skipped
377: </li>
378: <li><b><notsolved></b><span
379: style='font-weight:normal'> everything inside the tag is skipped if the
380: problem is "solved" </span></li>
381: <li><b><postanswerdate></b><span
382: style='font-weight:normal'> everything inside the tag is skipped if the
383: problem is before the answer date </span></li>
384: <li><b><preduedate></b><span
385: style='font-weight:normal'> everything inside the tag is skipped if the
386: problem is after the due date </span></li>
387: <li><b><randomlist></b><span
388: style='font-weight:normal'> the enclosed tags are parsed in a stable random
389: order, optional argument <i>show</i></span> restricts the number of tags
390: indie that are actually parsed the no more than <i>show</i><span
391: style='font-style:normal'>. </span></li>
392: <li><b><solved></b><span
393: style='font-weight:normal'> everything inside the tag is skipped if the
394: problem is "not solved" </span></li>
395: <li><b><while></b><span
396: style='font-weight:normal'> implements a while loop, required argument <i>condition</i></span>
397: is a perl scriptlet that when evaluated results in a true or false value,
398: on true the entirety of the text between the whiles is parsed. The condition
399: is tested again, etc. If false it goes to the next node in the parse.
400: </li>
401: </ul>
402: <li><b>Structure Tags </b></li>
403: </ul>
404: <p>These tags give the problem a structure and take care of the recording of
405: data and giving the student messages. </p>
406: <ul type=disc>
407: <ul type=circle>
408: <li><b><problem></b><span
409: style='font-weight:normal'> must be the first tag in the file, this tag
410: sets up the header of the webpage and generates the submit buttons, it
411: also handles due dates properly </span></li>
412: <li><b><part></b><span
413: style='font-weight:normal'> must be below <problem> if it is going
414: to be used. It does many of the same tasks as <problem> but allows
415: multiple separate problems to exist in a single file. </span></li>
416: <li><b><startouttext><endouttext></b><span
417: style='font-weight:normal'> these tags are somewhat special, they must have
418: no internal text and occur in pairs. Their use is to mark up the problem
419: so the web editor knows what sections should be edited in a plain text
420: block on the web. </span></li>
421: </ul>
422: </ul>
423: <h3><a name="_Toc421867128"><script> Functions</a></h3>
424: <p>A list of functions that have been written that are available in the Safe
425: space scripting environment inside a problem. </p>
426: <ul type=disc>
427: <li>sin(x), cos(x), tan(x)</li>
428: <li>asin(x), acos(x), atan(x), atan2(y,x)</li>
429: <li>log(x), log10(x)</li>
430: <li>exp(), pow(x,y), sqrt(x)</li>
431: <li>abs(x), sgn(x)</li>
432: <li>erf(x), erfc(x)</li>
433: <li>ceil(x), floor(x)</li>
434: <li>min(...), max(...)</li>
435: <li>factorial(n)</li>
436: <li>N%M</li>
437: <li>sinh(x), cosh(x), tanh(x)</li>
438: <li>asinh(x), acosh(x), atanh(x)</li>
439: <li>roundto(x,n)</li>
440: <li>web("a","b","c") or web(a,b,c)</li>
441: <li>html("a") or html(a)</li>
442: <li>j0(x), j1(x), jn(n,x), jv(y,x)</li>
443: <li>y0(x), y1(x), yn(n,x), yv(y,x)</li>
444: <li>random</li>
445: <li>choose</li>
446: <li>tex("a","b") or tex(a,b)</li>
447: <li>var_in_tex(a)</li>
448: <li>to_string(x), to_string(x,y)</li>
449: <li>class(), section()</li>
450: <li>name(), student_number()</li>
451: <li>open_date(), due_date(), answer_date()</li>
452: <li>sub_string()</li>
453: <li>array_moments(array)</li>
454: <li>format(x,y),prettyprint(x,y)</li>
455: <li>map(...)</li>
456: <li>caparesponse_check</li>
457: <li>caparesponse_check_list</li>
458: </ul>
459: <h3><a name="_Toc421867129">Detailed descriptions of each function and comparison
460: with CAPA</a></h3>
461: <table border=1 cellpadding=0>
462: <tr>
463: <td width=131 valign=top class="Normal"> <p><b>CAPA Functions</b></p></td>
464: <td width=134 valign=top class="Normal"> <p><b>LON-CAPA</b></p></td>
465: <td width=147 valign=top class="Normal"> <p><b>Descriptions</b></p></td>
466: <td width=101 valign=top class="Normal"> <p><b>Differences (if any)</b></p></td>
467: </tr>
468: <tr>
469: <td width=131 valign=top class="Normal"> <p>sin(x), cos(x), tan(x)</p></td>
470: <td width=134 valign=top class="Normal"> <p>&sin($x), &cos($x),
471: &tan($x)</p></td>
472: <td width=147 valign=top class="Normal"> <p>Trigonometric functions where
473: x is in radians. $x can be a pure number, i.e., you can call &sin(3.1415)</p></td>
474: <td width=101 valign=top class="Normal"> </td>
475: </tr>
476: <tr>
477: <td width=131 valign=top class="Normal"> <p>asin(x), acos(x), atan(x), atan2(y,x)</p></td>
478: <td width=134 valign=top class="Normal"> <p>&asin($x), &acos($x),
479: &atan($x), &atan2($y,$x)</p></td>
480: <td width=147 valign=top class="Normal"> <p>Inverse trigonometric functions.
481: Return value is in radians. For asin and acos the value of x must be
482: between -1 and 1. The atan2 returns a value between -pi and pi the sign
483: of which is determined by y. $x and $y can be pure numbers</p></td>
484: <td width=101 valign=top class="Normal"> </td>
485: </tr>
486: <tr>
487: <td width=131 valign=top class="Normal"> <p>log(x), log10(x)</p></td>
488: <td width=134 valign=top class="Normal"> <p>&log($x), &log10($x)</p></td>
489: <td width=147 valign=top class="Normal"> <p>Natural and base-10 logarithm.
490: $x can be a pure number</p></td>
491: <td width=101 valign=top class="Normal"> </td>
492: </tr>
493: <tr>
494: <td width=131 valign=top class="Normal"> <p>exp(x), pow(x,y), sqrt(x)</p></td>
495: <td width=134 valign=top class="Normal"> <p>&exp($x), &pow($x,$y),
496: &sqrt($x)</p></td>
497: <td width=147 valign=top class="Normal"> <p>Exponential, power and square
498: root, i.e.,e<sup>x</sup>, x<sup>y</sup> and /x. $x and $y can be pure
499: numbers</p></td>
500: <td width=101 valign=top class="Normal"> </td>
501: </tr>
502: <tr>
503: <td width=131 valign=top class="Normal"> <p>abs(x), sgn(x)</p></td>
504: <td width=134 valign=top class="Normal"> <p>&abs($x), &sgn($x)</p></td>
505: <td width=147 valign=top class="Normal"> <p>Abs takes the absolute value
506: of x while sgn(x) returns 1, 0 or -1 depending on the value of x. For
507: x>0, sgn(x) = 1, for x=0, sgn(x) = 0 and for x<0, sgn(x) = -1.
508: $x can be a pure number</p></td>
509: <td width=101 valign=top class="Normal"> </td>
510: </tr>
511: <tr>
512: <td width=131 valign=top class="Normal"> <p>erf(x), erfc(x)</p></td>
513: <td width=134 valign=top class="Normal"> <p>&erf($x), &erfc($x)</p></td>
514: <td width=147 valign=top class="Normal"> <p>Error function. erf =
515: 2/sqrt(pi) integral (0,x) e<sup>t-sq</sup> and <i>erfx(x)</i><span style='font-style:normal'>
516: = 1.0 - </span><i>erf(x)</i><span
517: style='font-style:normal'>. $x can be a pure number</span></p></td>
518: <td width=101 valign=top class="Normal"> </td>
519: </tr>
520: <tr>
521: <td width=131 valign=top class="Normal"> <p>ceil(x), floor(x)</p></td>
522: <td width=134 valign=top class="Normal"> <p>&ceil($x), &floor($x)</p></td>
523: <td width=147 valign=top class="Normal"> <p>Ceil function returns an integer
524: rounded up whereas floor function returns and integer rounded down.
525: If x is an integer than it returns the value of the integer. $x can
526: be a pure number</p></td>
527: <td width=101 valign=top class="Normal"> </td>
528: </tr>
529: <tr>
530: <td width=131 valign=top class="Normal"> <p>min(...), max(...)</p></td>
531: <td width=134 valign=top class="Normal"> <p>&min(...), &max(...)</p></td>
532: <td width=147 valign=top class="Normal"> <p>Returns the minimum/ maximum
533: value of a list of arguments if the arguments are numbers. If the arguments
534: are strings then it returns a string sorted according to the ASCII codes</p></td>
535: <td width=101 valign=top class="Normal"> </td>
536: </tr>
537: <tr>
538: <td width=131 valign=top class="Normal"> <p>factorial(n)</p></td>
539: <td width=134 valign=top class="Normal"> <p>&factorial($n)</p></td>
540: <td width=147 valign=top class="Normal"> <p>Argument (n) must be an integer
541: else it will round down. The largest value for n is 170. $n can be a
542: pure number</p></td>
543: <td width=101 valign=top class="Normal"> </td>
544: </tr>
545: <tr>
546: <td width=131 valign=top class="Normal"> <p>N%M</p></td>
547: <td width=134 valign=top class="Normal"> <p>$N%$M</p></td>
548: <td width=147 valign=top class="Normal"> <p>N and M are integers and returns
549: the remainder (in integer) of N/M. $N and $M can be pure numbers</p></td>
550: <td width=101 valign=top class="Normal"> </td>
551: </tr>
552: <tr>
553: <td width=131 valign=top class="Normal"> <p>sinh(x), cosh(x), tanh(x)</p></td>
554: <td width=134 valign=top class="Normal"> <p>&sinh($x), &cosh($x),
555: &tanh($x)</p></td>
556: <td width=147 valign=top class="Normal"> <p>Hyperbolic functions. $x can
557: be a pure number</p></td>
558: <td width=101 valign=top class="Normal"> </td>
559: </tr>
560: <tr>
561: <td width=131 valign=top class="Normal"> <p>asinh(x), acosh(x), atanh(x)</p></td>
562: <td width=134 valign=top class="Normal"> <p>&asinh($x), &acosh($x),
563: &atanh($x)</p></td>
564: <td width=147 valign=top class="Normal"> <p>Inverse hyperbolic functions.
565: $x can be a pure number</p></td>
566: <td width=101 valign=top class="Normal"> </td>
567: </tr>
568: <tr>
569: <td width=131 valign=top class="Normal"> <p>/DIS($x,"nn")</p></td>
570: <td width=134 valign=top class="Normal"> <p>&format($x,"nn")</p></td>
571: <td width=147 valign=top class="Normal"> <p>Display or format $x as nn where
572: nn is nF or nE and n is an integer.</p></td>
573: <td width=101 valign=top class="Normal"> <p> The difference is obvious.</p></td>
574: </tr>
575: <tr>
576: <td width=131 valign=top class="Normal"> <p>Not in CAPA</p></td>
577: <td width=134 valign=top class="Normal"> <p>&prettyprint($x,"nn")</p></td>
578: <td width=147 valign=top class="Normal"> <p>Display or format $x as nn where
579: nn is nF or nE and n is an integer. In E mode it will attempt to generate
580: a pretty x10^3 rather than a E3 following the number</p></td>
581: <td width=101 valign=top class="Normal"> </td>
582: </tr>
583: <tr>
584: <td width=131 valign=top class="Normal"> <p>roundto(x,n)</p></td>
585: <td width=134 valign=top class="Normal"> <p>&roundto($x,$n)</p></td>
586: <td width=147 valign=top class="Normal"> <p>Rounds a real number to n decimal
587: points. $x and $n can be pure numbers</p></td>
588: <td width=101 valign=top class="Normal"> </td>
589: </tr>
590: <tr>
591: <td width=131 valign=top class="Normal"> <p>web("a","b","c")
592: or web(a,b,c)</p></td>
593: <td width=134 valign=top class="Normal"> <p>&web("a","b","c")
594: or &web($a,$b,$c)</p></td>
595: <td width=147 valign=top class="Normal"> <p>Returns either a, b or c depending
596: on the output medium. a is for plain ASCII, b for tex output and c for
597: html output</p></td>
598: <td width=101 valign=top class="Normal"> </td>
599: </tr>
600: <tr>
601: <td width=131 valign=top class="Normal"> <p>html("a") or html(a)</p></td>
602: <td width=134 valign=top class="Normal"> <p>&html("a") or
603: &html($a)</p></td>
604: <td width=147 valign=top class="Normal"> <p>Output only if the output mode
605: chosen is in html format</p></td>
606: <td width=101 valign=top class="Normal"> </td>
607: </tr>
608: <tr>
609: <td width=131 valign=top class="Normal"> <p>jn(m,x)</p></td>
610: <td width=134 valign=top class="Normal"> <p>&j0($x), &j1($x), &jn($m,$x),
611: &jv($y,$x)</p></td>
612: <td width=147 valign=top class="Normal"> <p>Bessel functions of the first
613: kind with orders 0, 1 and m respectively. For jn(m,x), m must be an
614: integer whereas for jv(y,x), y is real. $x can be a pure number. $m
615: must be an integer and can be a pure integer number. $y can be a pure
616: real number</p></td>
617: <td width=101 valign=top class="Normal"> <p>In CAPA, j0, j1 and jn are contained
618: in one function, jn(m,x) where m takes the value of 0, 1 or 2. jv(y,x)
619: is new to LON-CAPA.</p></td>
620: </tr>
621: <tr>
622: <td width=131 valign=top class="Normal"> <p>yn(m,x)</p></td>
623: <td width=134 valign=top class="Normal"> <p>&y0($x), &y1($x), &yn($m,$x),
624: &yv($y,$x)</p></td>
625: <td width=147 valign=top class="Normal"> <p>Bessel functions of the second
626: kind with orders 0, 1 and m respectively. For yn(m,x), m must be an
627: integer whereas for yv(y,x), y is real. $x can be a pure number. $m
628: must be an integer and can be a pure integer number. $y can be a pure
629: real number</p></td>
630: <td width=101 valign=top class="Normal"> <p>In CAPA, y0, y1 and yn are contained
631: in one function, yn(m,x) where m takes the value of 0, 1 or 2. yv(y,x)
632: is new to LON-CAPA.</p></td>
633: </tr>
634: <tr>
635: <td width=131 valign=top class="Normal"> <p>random(l,u,d)</p></td>
636: <td width=134 valign=top class="Normal"> <p>&random($l,$u,$d)</p></td>
637: <td width=147 valign=top class="Normal"> <p>Returns a uniformly distributed
638: random number between the lower bound, l and upper bound, u in steps
639: of d. $l, $u and $d can be pure numbers</p></td>
640: <td width=101 valign=top class="Normal"> <p>In CAPA, all the 3 arguments
641: must be of the same type. However, now you can mix the type</p></td>
642: </tr>
643: <tr>
644: <td width=131 valign=top class="Normal"> <p>choose(i,...)</p></td>
645: <td width=134 valign=top class="Normal"> <p>&choose($i,...)</p></td>
646: <td width=147 valign=top class="Normal"> <p>Choose the ith item from the
647: argument list. i must be an integer greater than 0 and the value of
648: i should not exceed the number of items. $i can be a pure integer</p></td>
649: <td width=101 valign=top class="Normal"> </td>
650: </tr>
651: <tr>
652: <td width=131 valign=top class="Normal"> <p>/MAP(seed;w,x,y,z;a,b,c,d)</p></td>
653: <td width=134 valign=top class="Normal"> <p>Option 1 - &map($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d])
654: or <br>
655: Option 2 - &map($seed,\@mappedArray,[$a,$b,$c,$d]) <br>
656: Option 3 - @mappedArray = &map($seed,[$a,$b,$c,$d]) <br>
657: Option 4 - ($w,$x,$y,$z) = &map($seed,\@a) <br>
658: where $a='A'<br>
659: $b='B'<br>
660: $c='B'<br>
661: $d='B'<br>
662: $w, $x, $y, and $z are variables</p></td>
663: <td width=147 valign=top class="Normal"> <p>Assigns to the variables $w,
664: $x, $y and $z the values of the $a, $b, $c and $c (A, B, C and D). The
665: precise value for $w .. depends on the seed. (Option 1 of calling map).
666: In option 2, the values of $a, $b .. are mapped into the array, @mappedArray.
667: The two options illustrate the different grouping. Options 3 and 4 give
668: a consistent way (with other functions) of mapping the items. For each
669: option, the group can be passed as an array, for example, [$a,$b,$c,$d]
670: => \@a.</p></td>
671: <td width=101 valign=top class="Normal"> <p>In CAPA, the arguments are divided
672: into three groups separated by a semicolon ;. In LON-CAPA, the separation
673: is done by using [] brackets or using an array @a. Note the backslash
674: (\) before the arguments in the second and third groups.</p></td>
675: </tr>
676: <tr>
677: <td width=131 valign=top class="Normal"> <p>rmap(seed;a,b,c,d;w,x,y,z)</p></td>
678: <td width=134 valign=top class="Normal"> <p>Option 1 - &rmap($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d])
679: or <br>
680: Option 2 - &rmap($seed,\@rmappedArray,[$a,$b,$c,$d]) <br>
681: Option 3 - @rmapped_array = &rmap($seed,[$a,$b,$c,$d]) <br>
682: Option 4 - ($w,$x,$y,$z) = &rmap($seed,\@a) <br>
683: where $a='A'<br>
684: $b='B'<br>
685: $c='B'<br>
686: $d='B'<br>
687: $w, $x, $y, and $z are variables</p></td>
688: <td width=147 valign=top class="Normal"> <p>The rmap functions does the
689: reverse action of map if the same seed is used in calling map and rmap.
690: </p></td>
691: <td width=101 valign=top class="Normal"> <p>In CAPA, the arguments are divided
692: into three groups separated by a semicolon ;. In LON-CAPA, the separation
693: is done by using [] brackets (with create an unamed vector reference)
694: or using an array @a. Note the backslash (\) before the arguments in
695: the second and third groups (Which cause Perl to send to variable locations
696: rather than the variable values, similar to a C pointer).</p></td>
697: </tr>
698: <tr>
699: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
700: <td width=134 valign=top class="Normal"> <p>$a=&xmlparse($string) </p></td>
701: <td width=147 valign=top class="Normal"> <p>Runs the internal parser over
702: the argument parsing for display. <b>Warning</b><span style='font-weight:normal'>
703: This will result in different strings in different targets. Don't use
704: the results of this function as an answer.</span></p></td>
705: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
706: </tr>
707: <tr>
708: <td width=131 valign=top class="Normal"> <p>tex(a,b), tex("a","b")</p></td>
709: <td width=134 valign=top class="Normal"> <p>&tex($a,$b), &tex("a","b")</p></td>
710: <td width=147 valign=top class="Normal"> <p>Returns a if the output mode
711: is in tex otherwise returns b</p></td>
712: <td width=101 valign=top class="Normal"> </td>
713: </tr>
714: <tr>
715: <td width=131 valign=top class="Normal"> <p>var_in_tex(a)</p></td>
716: <td width=134 valign=top class="Normal"> <p>&var_in_tex($a)</p></td>
717: <td width=147 valign=top class="Normal"> <p>Equivalent to tex("a","")</p></td>
718: <td width=101 valign=top class="Normal"> </td>
719: </tr>
720: <tr>
721: <td width=131 valign=top class="Normal"> <p>to_string(x), to_string(x,y)</p></td>
722: <td width=134 valign=top class="Normal"> <p>&to_string($x), &to_string($x,$y)</p></td>
723: <td width=147 valign=top class="Normal"> <p>If x is an integer, returns
724: a string. If x is real than the output is a string with format given
725: by y. For example, if x = 12.3456, &to_string(x,".3F")
726: = 12.345 and &to_string(x,".3E") = 1.234E+01.</p></td>
727: <td width=101 valign=top class="Normal"> </td>
728: </tr>
729: <tr>
730: <td width=131 valign=top class="Normal"> <p>capa_id(), class(), section(),
731: set(), problem()</p></td>
732: <td width=134 valign=top class="Normal"> <p>&class(), &section()</p></td>
733: <td width=147 valign=top class="Normal"> <p>Returns null string, class descriptive
734: name, section number, set number and null string.</p></td>
735: <td width=101 valign=top class="Normal"> <p>capa_id(), set() and problem()
736: are no longer used. Currently, they return a null value.</p></td>
737: </tr>
738: <tr>
739: <td width=131 valign=top class="Normal"> <p>name(), student_number()</p></td>
740: <td width=134 valign=top class="Normal"> <p>&name(), &student_number()</p></td>
741: <td width=147 valign=top class="Normal"> <p>Return the full name in the
742: following format: lastname, firstname initial. Student_number returns
743: the student 9-alphanumeric string. If undefined, the functions return
744: null.</p></td>
745: <td width=101 valign=top class="Normal"> </td>
746: </tr>
747: <tr>
748: <td width=131 valign=top class="Normal"> <p>open_date(), due_date(), answer_date()</p></td>
749: <td width=134 valign=top class="Normal"> <p>&open_date(), &due_date(),
750: &answer_date()</p></td>
751: <td width=147 valign=top class="Normal"> <p>Problem open date, due date
752: and answer date. The time is also included in 24-hr format.</p></td>
753: <td width=101 valign=top class="Normal"> <p>Output format for time is changed
754: slightly. If pass noon, it displays ..pm else it displays ..am. So 23:59
755: is displayed as 11:59 pm.</p></td>
756: </tr>
757: <tr>
758: <td width=131 valign=top class="Normal"> <p>get_seed(), set_seed()</p></td>
759: <td width=134 valign=top class="Normal"> <p>Not implemented</p></td>
760: <td width=147 valign=top class="Normal"> <p>Get and set the random seed.</p></td>
761: <td width=101 valign=top class="Normal"> </td>
762: </tr>
763: <tr>
764: <td width=131 valign=top class="Normal"> <p>sub_string(a,b,c)</p></td>
765: <td width=134 valign=top class="Normal"> <p>&sub_string($a,$b,$c) <br>
766: perl substr function. However, note the differences</p></td>
767: <td width=147 valign=top class="Normal"> <p>Retrieve a portion of string
768: a starting from b and length c. For example, $a = "Welcome
769: to LON-CAPA"; $result=&sub_string($a,4,4); then $result is
770: "come"</p></td>
771: <td width=101 valign=top class="Normal"> <p>Perl intrinsic function, substr(string,b,c)
772: starts counting from 0 (as opposed to 1). In the example to the left,
773: substr($a,4,4) returns "ome ".</p></td>
774: </tr>
775: <tr>
776: <td width=131 valign=top class="Normal"> <p>array[xx]</p></td>
777: <td width=134 valign=top class="Normal"> <p>@arrayname <br>
778: Array is intrinsic in perl. To access a specific element use $arrayname[$n]
779: where $n is the $n+1 element since the array count starts from 0</p></td>
780: <td width=147 valign=top class="Normal"> <p>"xx" can be a variable
781: or a calculation.</p></td>
782: <td width=101 valign=top class="Normal"> <p>In LON-CAPA, an array is defined
783: by @arrayname. It is not necessary to specify the dimension of the array. </p></td>
784: </tr>
785: <tr>
786: <td width=131 valign=top class="Normal"> <p>array_moments(B,A)</p></td>
787: <td width=134 valign=top class="Normal"> <p>@B=&array_moments(@A)</p></td>
788: <td width=147 valign=top class="Normal"> <p>Evaluates the moments of an
789: array A and place the result in array B[i] where i = 0 to 4. The contents
790: of B are as follows: B[0] = number of elements, B[1] = mean, B[2] =
791: variance, B[3] = skewness and B[4] = kurtosis.</p></td>
792: <td width=101 valign=top class="Normal"> <p>In CAPA, the moments are passed
793: as an array in the first argument whereas in LON-CAPA, the array containing
794: the moments are set equal to the function.</p></td>
795: </tr>
796: <tr>
797: <td width=131 valign=top class="Normal"> <p>array_max(Name), array_min(Name)</p></td>
798: <td width=134 valign=top class="Normal"> <p>&min(@Name), &max(@Name)</p></td>
799: <td width=147 valign=top class="Normal"> <p>In LON-CAPA to find the maximum
800: value of an array, use &max(@arrayname) and to find the minimum
801: value of an array, use &min(@arrayname)</p></td>
802: <td width=101 valign=top class="Normal"> <p>Combined with the min and max
803: functions defined earlier.</p></td>
804: </tr>
805: <tr>
806: <td width=131 valign=top class="Normal"> <p>init_array(Name)</p></td>
807: <td width=134 valign=top class="Normal"> <p>undef @name</p></td>
808: <td width=147 valign=top class="Normal"> <p>To destroy the contents of an
809: array, use</p></td>
810: <td width=101 valign=top class="Normal"> <p>Use perl intrinsic undef function.</p></td>
811: </tr>
812: <tr>
813: <td width=131 valign=top class="Normal"> <p>random_normal (return_array,item_cnt,seed,av,std_dev)</p></td>
814: <td width=134 valign=top class="Normal"> <p>@return_array=&random_normal
815: ($item_cnt,$seed,$av,$std_dev)</p></td>
816: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
817: of normal distribution of average $av and standard deviation $std_dev.
818: The distribution is generated from seed $seed</p></td>
819: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
820: as the first argument whereas in LON-CAPA the results are set equal
821: to the function.</p></td>
822: </tr>
823: <tr>
824: <td width=131 valign=top class="Normal"> <p>random_beta (return_array,item_cnt,seed,aa,bb)</p></td>
825: <td width=134 valign=top class="Normal"> <p>@return_array=&random_beta
826: ($item_cnt,$seed,$aa,$bb) <br>
827: NOTE: Both $aa and $bb MUST be greater than 1.0E-37.</p></td>
828: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
829: of beta distribution. The density of beta is: X^($aa-1) *(1-X)^($bb-1)
830: /B($aa,$bb) for 0<X<1.</p></td>
831: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
832: as the first argument whereas in LON-CAPA the results are set equal
833: to the function.</p></td>
834: </tr>
835: <tr>
836: <td width=131 valign=top class="Normal"> <p>random_gamma (return_array,item_cnt,seed,a,r)</p></td>
837: <td width=134 valign=top class="Normal"> <p>@return_array=&random_gamma
838: ($item_cnt,$seed,$a,$r) <br>
839: NOTE: Both $a and $r MUST be positive.</p></td>
840: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
841: of gamma distribution. The density of gamma is: ($a**$r)/gamma($r) *
842: X**($r-1) * exp(-$a*X).</p></td>
843: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
844: as the first argument whereas in LON-CAPA the results are set equal
845: to the function.</p></td>
846: </tr>
847: <tr>
848: <td width=131 valign=top class="Normal"> <p>random_exponential (return_array,item_cnt,seed,av)</p></td>
849: <td width=134 valign=top class="Normal"> <p>@return_array=&random_exponential
850: ($item_cnt,$seed,$av) <br>
851: NOTE: $av MUST be non-negative.</p></td>
852: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
853: of exponential distribution. </p></td>
854: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
855: as the first argument whereas in LON-CAPA the results are set equal
856: to the function.</p></td>
857: </tr>
858: <tr>
859: <td width=131 valign=top class="Normal"> <p>random_poisson (return_array,item_cnt,seed,mu)</p></td>
860: <td width=134 valign=top class="Normal"> <p>@return_array=&random_poisson
861: ($item_cnt,$seed,$mu) <br>
862: NOTE: $mu MUST be non-negative.</p></td>
863: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
864: of poisson distribution. </p></td>
865: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
866: as the first argument whereas in LON-CAPA the results are set equal
867: to the function.</p></td>
868: </tr>
869: <tr>
870: <td width=131 valign=top class="Normal"> <p>random_chi (return_array,item_cnt,seed,df)</p></td>
871: <td width=134 valign=top class="Normal"> <p>@return_array=&random_chi
872: ($item_cnt,$seed,$df) <br>
873: NOTE: $df MUST be positive.</p></td>
874: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
875: of chi_square distribution with $df degrees of freedom. </p></td>
876: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
877: as the first argument whereas in LON-CAPA the results are set equal
878: to the function.</p></td>
879: </tr>
880: <tr>
881: <td width=131 valign=top class="Normal"> <p>random_noncentral_chi (return_array,item_cnt,seed,df,nonc)</p></td>
882: <td width=134 valign=top class="Normal"> <p>@return_array=&random_noncentral_chi
883: ($item_cnt,$seed,$df,$nonc) <br>
884: NOTE: $df MUST be at least 1 and $nonc MUST be non-negative.</p></td>
885: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
886: of noncentral_chi_square distribution with $df degrees of freedom and
887: noncentrality parameter $nonc. </p></td>
888: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
889: as the first argument whereas in LON-CAPA the results are set equal
890: to the function.</p></td>
891: </tr>
892: <tr>
893: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
894: <td width=134 valign=top class="Normal"> <p>@return_array=&random_f
895: ($item_cnt,$seed,$dfn,$dfd) <br>
896: NOTE: Both $dfn and $dfd MUST be positive.</p></td>
897: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
898: of F (variance ratio) distribution with degrees of freedom $dfn (numerator)
899: and $dfd (denominator). </p></td>
900: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
901: </tr>
902: <tr>
903: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
904: <td width=134 valign=top class="Normal"> <p>@return_array=&random_noncentral_f
905: ($item_cnt,$seed,$dfn,$dfd,$nonc) <br>
906: NOTE: $dfn must be at least 1, $dfd MUST be positive, and $nonc must
907: be non-negative.</p></td>
908: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
909: of noncentral F (variance ratio) distribution with degrees of freedom
910: $dfn (numerator) and $dfd (denominator). $nonc is the noncentrality
911: parameter. </p></td>
912: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
913: </tr>
914: <tr>
915: <td width=131 valign=top class="Normal"> <p>NOT DOCUMENTED IN CAPA</p></td>
916: <td width=134 valign=top class="Normal"> <p>@return_array=&random_multivariate_normal
917: ($item_cnt,$seed,\@mean,\@covar) <br>
918: NOTE: @mean should be of length p array of real numbers. @covar should
919: be a length p array of references to length p arrays of real numbers
920: (i.e. a p by p matrix.</p></td>
921: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
922: of multivariate_normal distribution with mean vector @mean and variance-covariance
923: matrix. </p></td>
924: <td width=101 valign=top class="Normal"> <p>Note the backslash before the
925: @mean and @covar arrays.</p></td>
926: </tr>
927: <tr>
928: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
929: <td width=134 valign=top class="Normal"> <p>@return_array=&random_multinomial
930: ($item_cnt,$seed,@p) <br>
931: NOTE: $item_cnt is rounded with int() and the result must be non-negative.
932: The number of elements in @p must be at least 2.</p></td>
933: <td width=147 valign=top class="Normal"> <p>Returns single observation from
934: multinomial distribution with $item_cnt events classified into as many
935: categories as the length of @p. The probability of an event being classified
936: into category i is given by ith element of @p. The observation is an
937: array with length equal to @p, so when called in a scalar context it
938: returns the length of @p. The sum of the elements of the obervation
939: is equal to $item_cnt.</p></td>
940: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
941: </tr>
942: <tr>
943: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
944: <td width=134 valign=top class="Normal"> <p>@return_array=&random_permutation
945: ($item_cnt,@array) </p></td>
946: <td width=147 valign=top class="Normal"> <p>Returns @array randomly permuted.</p></td>
947: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
948: </tr>
949: <tr>
950: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
951: <td width=134 valign=top class="Normal"> <p>@return_array=&random_uniform
952: ($item_cnt,$seed,$low,$high) <br>
953: NOTE: $low must be less than or equal to $high.</p></td>
954: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
955: from a uniform distribution. </p></td>
956: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
957: </tr>
958: <tr>
959: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
960: <td width=134 valign=top class="Normal"> <p>@return_array=&random_uniform_integer
961: ($item_cnt,$seed,$low,$high) <br>
962: NOTE: $low and $high are both passed through int(). $low must be less
963: than or equal to $high.</p></td>
964: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
965: from a uniform distribution in integers. </p></td>
966: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
967: </tr>
968: <tr>
969: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
970: <td width=134 valign=top class="Normal"> <p>@return_array=&random_binomial
971: ($item_cnt,$seed,$nt,$p) <br>
972: NOTE: $nt is rounded using int() and the result must be non-negative.
973: $p must be between 0 and 1 inclusive.</p></td>
974: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
975: from the binomial distribution with $nt trials and the probabilty of
976: an event in each trial is $p. </p></td>
977: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
978: </tr>
979: <tr>
980: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
981: <td width=134 valign=top class="Normal"> <p>@return_array=&random_negative_binomial
982: ($item_cnt,$seed,$ne,$p) <br>
983: NOTE: $ne is rounded using int() and the result must be positive. $p
984: must be between 0 and 1 exclusive.</p></td>
985: <td width=147 valign=top class="Normal"> <p>Generate an array of $item_cnt
986: outcomes generated from negative binomial distribution with $ne events
987: and the probabilty of an event in each trial is $p. </p></td>
988: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
989: </tr>
990: </table>
991: <h3><a name="_Toc421867130"><script> Variables</a></h3>
992: <ul type=disc>
993: <li>$external::target - set to the current target the xml parser is parsing
994: for </li>
995: <li>$external::part - set to the <i>id</i><span style='font-style:normal'>
996: of the current problem <part>; zero if there are no <part> </span></li>
997: <li>$external::gradestatus - set to the value of the current resource.partid.solved
998: value </li>
999: <li>$external::datestatus - set to the current status of the clock either
1000: CLOSED, CAN_ANSWER, CANNOT_ANSWER, SHOW_ANSWER, or UNCHECKEDOUT </li>
1001: <li>$external::randomseed - set to the number that was used to seed the random
1002: number generator </li>
1003: <li>$pi - set to PI </li>
1004: <li>$rad2deg - converts radians to degrees </li>
1005: <li>$deg2rad - converts degrees to radians </li>
1006: </ul>
1007: <h3><a name="_Toc421867131">Form internals</a> </h3>
1008: <p>Form elements used for homework editing/response </p>
1009: <p>the form is named lonhomework </p>
1010: <h3><a name="_Toc421867132">Viewing a problem (either CSTR or RES space)</a></h3>
1011: <ul type=disc>
1012: <li>grade_target, grade_username, grade_domain, grade_symb - the vaules take
1013: precedence over the the normal ENV settings of these, use &Apache::lonxml::whichuser()
1014: to get back the correct vaues of the items </li>
1015: <li>HWVAL_response:number - the name of the input elements for each response.
1016: The response is the response's ID, and the :number part exists only for
1017: response with multiple foils, and is a unique number in order of the submission
1018: </li>
1019: <li>changerandseed - the 'Change' button, only exists right after the Change
1020: button is clicked </li>
1021: <li>problemmode - in CSTR, it is either 'View','Edit','EditXML' or 'Analyze'
1022: depending on the desired view </li>
1023: <li>rndseed - the currently requested random seed </li>
1024: <li>showallfoils - if it exists, and we are in CSTR space, the problem should
1025: ignore <conceptgroup> and the response's max setting and show all
1026: possible foils </li>
1027: <li>submit - the name of the Submit button </li>
1028: <li>submitted - a hidden form parameter that can be used to tell if the student
1029: has submitted answers or not, if it is set, there should be answers to grade.
1030: </li>
1031: </ul>
1032: <h3><a name="_Toc421867133">Editing a problem (Edit mode)</a></h3>
1033: <p>tagdepth referes to the current value of the xmlparsers tagdepth couter ($Apache::lonxml::currentdepth)</p>
1034: <p>Note: the file edit.pm has many helper functions for creating the standard
1035: elements for editing a tag and it's attributes, all of those functions follow
1036: these conventions </p>
1037: <ul type=disc>
1038: <li>tagdepth_argname - I.E. 1_3.max, a parameter editing value, max is the
1039: name of the parameter and it is for the third tag inside the first tag </li>
1040: <li>delete_tagdepth - if set to yes, delete tag tagdepth and all tags inside
1041: of it </li>
1042: <li>homework_edit_tagdepth - used by both &Apache::edit::editline and
1043: &Apache::edit::editfield for the <textarea> and <input>
1044: form elements they create </li>
1045: <li>insert_tagdepth - used to request an tag insert, it is set to the id number
1046: of the requested tag in the %Apache::lonxml::insertlist </li>
1047: </ul>
1048: <ul type=disc>
1049: <li> </li>
1050: </ul>
1051: <h3><a name="_Toc421867134">Symbs</a></h3>
1052: <p>To identify a specific instance of a resource, LON-CAPA uses symbols or Òsymbs.Ó
1053: These identifiers are built from the URL of the map, the resource number of
1054: the resource in the map, and the URL of the resource itself. The latter is
1055: somewhat redundant, but might help if maps change.</p>
1056: <p>An example is</p>
1057: <p class=MsoHeader><span style='font-family:"Courier New"'> msu/korte/parts/part1.sequence___19___msu/korte/tests/part12.problem</span></p>
1058: <p class=MsoHeader>The respective map entry is</p>
1059: <p class=MsoHeader><span style='font-family:"Courier New"'> <resource
1060: id="19" src="/res/msu/korte/tests/part12.problem"
1061: </span></p>
1062: <p class=MsoHeader><span style='font-family:"Courier New"'> title="Problem
1063: 2"></span></p>
1064: <p class=MsoHeader><span style='font-family:"Courier New"'> </resource></span></p>
1065: <p class=MsoHeader>Symbs are used by the random number generator, as well as
1066: to store and restore data specific to a certain instance of for example a
1067: problem.</p>
1068: <h3><a name="_Toc421867135">Store / Restore</a></h3>
1069: <p><span style='color:black'>2 important functions in lonnet.pm are </span><span style='font-family:"Courier New";color:black'>&Apache::lonnet::cstore()</span><span
1070: style='color:black'> and </span><span style='font-family:"Courier New";
1071: color:black'>&Apache::lonnet:restore()</span><span style='color:black'> (and
1072: </span><span style='font-family:"Courier New";color:black'>&Apache::lonnet::store()</span><span
1073: style='color:black'>, which is is the non-critical message twin of </span><span
1074: style='font-family:"Courier New";color:black'>cstore</span><span
1075: style='color:black'>). These functions are for handlers to store a perl hash to
1076: a userÕs permanent data space in an easy manner, and to retrieve it again
1077: on another call. It is expected that a handler would use this once at the
1078: beginning to retrieve data, and then again once at the end to send only the
1079: new data back. </span></p>
1080: <p><span style='color:black'>The data is stored in the userÕs data directory
1081: on the userÕs homeserver under the ID of the course.</span></p>
1082: <p><span style='color:black'>The hash that is returned by </span><span
1083: style='font-family:"Courier New";color:black'>restore</span><span
1084: style='color:black'> will have all of the previous value for all of the elements
1085: of the hash. </span></p>
1086: <p><span style='color:black'>Example: </span></p>
1087: <p><span style='font-family:"Courier New";color:black'>#creating a hash</span></p>
1088: <p><span style='font-family:"Courier New";color:black'>my %hash;</span></p>
1089: <p><span style='font-family:"Courier New";color:black'>$hash{'foo'}='bar';</span></p>
1090: <p><span style='font-family:"Courier New";color:black'>#storing it</span></p>
1091: <p><span style='font-family:"Courier New";color:black'>&Apache::lonnet::cstore(\%hash);</span></p>
1092: <p><span style='font-family:"Courier New";color:black'>#changing a value </span></p>
1093: <p><span style='font-family:"Courier New";color:black'>$hash{'foo'}='notbar';</span></p>
1094: <p><span style='font-family:"Courier New";color:black'>#adding a new value</span></p>
1095: <p><span style='font-family:"Courier New";color:black'>$hash{'bar'}='foo';</span></p>
1096: <p><span style='font-family:"Courier New";color:black'>&Apache::lonnet::cstore(\%hash);</span></p>
1097: <p><span style='font-family:"Courier New";color:black'>#retrieving the hash</span></p>
1098: <p><span style='font-family:"Courier New";color:black'>my %history=&Apache::lonnet::restore();</span></p>
1099: <p><span style='font-family:"Courier New";color:black'>#print the hash</span></p>
1100: <p><span style='font-family:"Courier New";color:black'>foreach my $key (sort(keys(%history)))
1101: {</span></p>
1102: <p><span style='font-family:"Courier New";color:black'> print("\%history{$key}
1103: = $history{$key}");</span></p>
1104: <p><span style='font-family:"Courier New";color:black'>}</span></p>
1105: <p><span style='color:black'>Will print out: </span></p>
1106: <p><span style='font-family:"Courier New";color:black'>%history{1:foo} = bar</span></p>
1107: <p><span style='font-family:"Courier New";color:black'>%history{1:keys} = foo:timestamp</span></p>
1108: <p><span style='font-family:"Courier New";color:black'>%history{1:timestamp}
1109: = 990455579</span></p>
1110: <p><span style='font-family:"Courier New";color:black'>%history{2:bar} = foo</span></p>
1111: <p><span style='font-family:"Courier New";color:black'>%history{2:foo} = notbar</span></p>
1112: <p><span style='font-family:"Courier New";color:black'>%history{2:keys} = foo:bar:timestamp</span></p>
1113: <p><span style='font-family:"Courier New";color:black'>%history{2:timestamp}
1114: = 990455580</span></p>
1115: <p><span style='font-family:"Courier New";color:black'>%history{bar} = foo</span></p>
1116: <p><span style='font-family:"Courier New";color:black'>%history{foo} = notbar</span></p>
1117: <p><span style='font-family:"Courier New";color:black'>%history{timestamp} =
1118: 990455580</span></p>
1119: <p><span style='font-family:"Courier New";color:black'>%history{version} = 2</span></p>
1120: <p><span style='color:black'>Note that the special hash entries <i>keys</i></span><span style='color:black'>,
1121: <i>version</i></span><span
1122: style='color:black'> and <i>timestamp</i></span><span style='color:black'> were
1123: added to the hash. <i>version</i></span><span style='color:black'> will be
1124: equal to the total number of versions of the data that have been stored. The
1125: <i>timestamp</i></span><span
1126: style='color:black'> attribute will be the UNIX time the hash was stored. <i>keys</i></span><span
1127: style='color:black'> is available in every historical section to list which keys
1128: were added or changed at a specific historical revision of a hash. </span></p>
1129: <p><span style='color:black'><b>Warning</b></span><span
1130: style='color:black'> do not store the hash that restore returns directly. This
1131: will cause a mess since it will restore the historical keys as if the were
1132: new keys. I.E. </span><span style='font-family:"Courier New";color:black'>1:foo</span><span
1133: style='color:black'> will become </span><span style='font-family:"Courier New";
1134: color:black'>1:1:foo</span><span style='color:black'> etc. </span></p>
1135: <p><span style='color:black'><b>Calling convention: </b></span></p>
1136: <p><span style='font-size:8.0pt;font-family:"Courier New";
1137: color:black'> my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$uname,$home);</span></p>
1138: <p><span style='font-size:8.0pt;font-family:"Courier New";
1139: color:black'> &Apache::lonnet::cstore(\%newrecord,$symb,$courseid,$domain,$uname,$home);</span></p>
1140: <p><span style='color:black'><b>Arguments (only %newrecord is required the rest
1141: are somewhat optional, read the details): </b></span></p>
1142: <p> <span style='font-family:Symbol;
1143: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1144: </span></span> <span style='color:black'><i>$symb</i></span><span
1145: style='color:black'> - a string containing the internal name of the specific instance
1146: of a resource. Usually this value can be gotten from </span><span
1147: style='font-family:"Courier New";color:black'>&Apache::lonnet::symbread($filename)</span><span
1148: style='color:black'>. If the argument is blank, it will attempt to use </span><span
1149: style='font-family:"Courier New";color:black'>symbread()</span><span
1150: style='color:black'> for it. If the result is ambiguous store/restore will fail.
1151: </span></p>
1152: <p> <span style='font-family:Symbol;
1153: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1154: </span></span> <span style='color:black'><i>$courseid</i></span><span
1155: style='color:black'> - the internal name for a course, usually found in </span><span
1156: style='font-family:"Courier New";color:black'>$ENV{'request.course.id'}</span><span
1157: style='color:black'> which is what will be looked at if no value is passed to
1158: the functions. </span></p>
1159: <p> <span style='font-family:Symbol;
1160: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1161: </span></span> <span style='color:black'><i>$domain</i></span><span
1162: style='color:black'> - the domain that the user belongs to, usually found in </span><span
1163: style='font-family:"Courier New";color:black'>$ENV{'user.domain'}</span><span
1164: style='color:black'> which is what will be looked at if no value is passed to
1165: the functions. </span></p>
1166: <p> <span style='font-family:Symbol;
1167: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1168: </span></span> <span style='color:black'><i>$uname</i></span><span
1169: style='color:black'> - the login name for the user, usually found in </span><span
1170: style='font-family:"Courier New";color:black'>$ENV{'user.name'}</span><span
1171: style='color:black'> which is what will be looked at if no value is passed to
1172: the functions. </span></p>
1173: <p> <span style='font-family:Symbol;
1174: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1175: </span></span> <span style='color:black'><i>$home</i></span><span
1176: style='color:black'> - the homeserver for the user, usually found in </span><span
1177: style='font-family:"Courier New";color:black'>$ENV{'user.home'}</span><span
1178: style='color:black'> but can be easily gotten from a domain and name through </span><span
1179: style='font-family:"Courier New";color:black'>&Apache::lonnet::homeserver($uname,$domain)</span><span
1180: style='color:black'>. If no value is passed to store/restore the value in %ENV
1181: will be used. </span></p>
1182: <p> <span style='font-family:Symbol;
1183: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1184: </span></span> <span style='color:black'><i>%newrecord</i></span><span
1185: style='color:black'> - the hash to store being passed by reference </span></p>
1186: <p><span style='color:black'><b>Return values: </b></span></p>
1187: <p> <span style='font-family:Symbol;
1188: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1189: </span></span> <span style='color:black'><i>an empty string</i></span><span
1190: style='color:black'> - the function was unable to determine exactly where to store
1191: or restore from. At least one of the "optional" arguments was unable
1192: to be determined. </span></p>
1193: <p> <span style='font-family:Symbol;
1194: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1195: </span></span> <span style='color:black'><i>a hash</i></span><span
1196: style='color:black'> - restore successfully read a old hash for this specific
1197: user / resource instance. </span></p>
1198: <p> <span style='font-family:Symbol;
1199: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1200: </span></span> <span style='color:black'><i>no_such_host</i></span><span
1201: style='color:black'> - the <i>$home</i></span><span style='color:black'> specfied
1202: desn't exist in the network. </span></p>
1203: <p> <span style='font-family:Symbol;
1204: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1205: </span></span> <span style='color:black'><i>con_delayed</i></span><span
1206: style='color:black'> - the <i>$home</i></span><span style='color:black'> was uncontactable
1207: at this time. The store will be delayed until it is again available. </span></p>
1208: <p> <span style='font-family:Symbol;
1209: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1210: </span></span> <span style='color:black'><i>con_failed</i></span><span
1211: style='color:black'> - the <i>$home</i></span><span style='color:black'> was uncontactable
1212: at this time and store was unable to delay the store until a later time. The
1213: store failed. </span></p>
1214: <p> <span style='font-family:Symbol;
1215: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1216: </span></span> <span style='color:black'><i>ok</i></span><span
1217: style='color:black'> - the store completed succesfully </span></p>
1218: <p> <span style='font-family:Symbol;
1219: color:black'>á<span style='font:7.0pt "Times New Roman"'>
1220: </span></span> <span style='color:black'><i>error:</i></span><span
1221: style='color:black'> - remote server failied to store or restore the reason follows
1222: the </span><span style='font-family:"Courier New";color:black'>:</span><span
1223: style='color:black'> </span></p>
1224: <h3><a name="_Toc421867136">Mandatory Homework Data</a></h3>
1225: <pre> </pre>
1226: <pre><span
1227: style='font-size:9.0pt'><Provided by &EXT() and set external to the resource, required></span></pre>
1228: <pre><span
1229: style='font-size:9.0pt'>resource.partid.opendate #unix time of when the local machine should let the</span></pre>
1230: <pre><span
1231: style='font-size:9.0pt'> #student in</span></pre>
1232: <pre><span
1233: style='font-size:9.0pt'> </span></pre>
1234: <pre><span
1235: style='font-size:9.0pt'>resource.partid.duedate #unix time of when the local machine should stop</span></pre>
1236: <pre><span
1237: style='font-size:9.0pt'> #accepting answers</span></pre>
1238: <pre><span
1239: style='font-size:9.0pt'> </span></pre>
1240: <pre><span
1241: style='font-size:9.0pt'>resource.partid.answerdate #unix time of when the local machine should</span></pre>
1242: <pre><span
1243: style='font-size:9.0pt'> #provide the correct answer to the student</span></pre>
1244: <pre><span
1245: style='font-size:9.0pt'> </span></pre>
1246: <pre><span
1247: style='font-size:9.0pt'>resource.partid.weight # points the problem is worth</span></pre>
1248: <pre><span
1249: style='font-size:9.0pt'> </span></pre>
1250: <pre><span
1251: style='font-size:9.0pt'>resource.partid.maxtries # maximum number of attempts the student can have</span></pre>
1252: <pre><span
1253: style='font-size:9.0pt'> </span></pre>
1254: <pre><span
1255: style='font-size:9.0pt'>resource.partid.type # type of problem homework can be:</span></pre>
1256: <pre><span
1257: style='font-size:9.0pt'> # homework - randomized, graded, stored with </span></pre>
1258: <pre><span
1259: style='font-size:9.0pt'> # requesting user, full feeback</span></pre>
1260: <pre><span
1261: style='font-size:9.0pt'> # exam - randomized, graded, stored with </span></pre>
1262: <pre><span
1263: style='font-size:9.0pt'> # requesting user, minimal feedback</span></pre>
1264: <pre><span
1265: style='font-size:9.0pt'> # form - unrandomized, ungraded, stored with </span></pre>
1266: <pre><span
1267: style='font-size:9.0pt'> # specified user, full feedback</span></pre>
1268: <pre><span
1269: style='font-size:9.0pt'> # survey - unrandomized, ungraded, stored with </span></pre>
1270: <pre><span
1271: style='font-size:9.0pt'> # requesting user, full feedback</span></pre>
1272: <pre><span
1273: style='font-size:9.0pt'> </span></pre>
1274: <pre><span
1275: style='font-size:9.0pt'> </span></pre>
1276: <pre><span
1277: style='font-size:9.0pt'> </span></pre>
1278: <pre><span
1279: style='font-size:9.0pt'><numerical/formula/response needed: (has a default if nonexistant)></span></pre>
1280: <pre><span
1281: style='font-size:9.0pt'> </span></pre>
1282: <pre><span
1283: style='font-size:9.0pt'>resource.partid.responseid.tol # lots of possibilities here</span></pre>
1284: <pre><span
1285: style='font-size:9.0pt'> # percentage, range (inclusive and exclusive),</span></pre>
1286: <pre><span
1287: style='font-size:9.0pt'> # variable name, etc</span></pre>
1288: <pre><span
1289: style='font-size:9.0pt'> # 3%</span></pre>
1290: <pre><span
1291: style='font-size:9.0pt'> # 0.5</span></pre>
1292: <pre><span
1293: style='font-size:9.0pt'> # .05+</span></pre>
1294: <pre><span
1295: style='font-size:9.0pt'> # 3%+</span></pre>
1296: <pre><span
1297: style='font-size:9.0pt'> # 0.5+,.005</span></pre>
1298: <pre><span
1299: style='font-size:9.0pt'> </span></pre>
1300: <pre><span
1301: style='font-size:9.0pt'>resource.partid.responseid.sig # one or two comma sepearted integers, </span></pre>
1302: <pre><span
1303: style='font-size:9.0pt'> # specifying the number of significatn figures</span></pre>
1304: <pre><span
1305: style='font-size:9.0pt'> # a student must use</span></pre>
1306: <pre><span
1307: style='font-size:9.0pt'> </span></pre>
1308: <pre><span
1309: style='font-size:9.0pt'> </span></pre>
1310: <pre><span
1311: style='font-size:9.0pt'> </span></pre>
1312: <pre><span
1313: style='font-size:9.0pt'><Problem sets using cstore (required):></span></pre>
1314: <pre><span
1315: style='font-size:9.0pt'>resource.partid.solved # if not set, problem yet to be viewed</span></pre>
1316: <pre><span
1317: style='font-size:9.0pt'> # incorrect_attempted == incorrect and attempted</span></pre>
1318: <pre><span
1319: style='font-size:9.0pt'> # correct_by_student == correct by student work</span></pre>
1320: <pre><span
1321: style='font-size:9.0pt'> # correct_by_override == correct, instructor override</span></pre>
1322: <pre><span
1323: style='font-size:9.0pt'> # incorrect_by_override == incorrect, instructor override</span></pre>
1324: <pre><span
1325: style='font-size:9.0pt'> # excused == excused, problem no longer counts for student</span></pre>
1326: <pre><span
1327: style='font-size:9.0pt'> # '' (empty) == not attempted</span></pre>
1328: <pre><span
1329: style='font-size:9.0pt'> # ungraded_attempted == an ungraded answer has been</span></pre>
1330: <pre><span
1331: style='font-size:9.0pt'> sumbitted and stored</span></pre>
1332: <pre><span
1333: style='font-size:9.0pt'>resource.partid.tries # positive integer of number of unsuccessful attempts</span></pre>
1334: <pre><span
1335: style='font-size:9.0pt'> # made, malformed answers don't count if feedback is</span></pre>
1336: <pre><span
1337: style='font-size:9.0pt'> # on</span></pre>
1338: <pre><span
1339: style='font-size:9.0pt'> </span></pre>
1340: <pre><span
1341: style='font-size:9.0pt'>resource.partid.awarded # float between 0 and 1, percentage of</span></pre>
1342: <pre><span
1343: style='font-size:9.0pt'> # resource.weight that the stundent earned.</span></pre>
1344: <pre><span
1345: style='font-size:9.0pt'> </span></pre>
1346: <pre><span
1347: style='font-size:9.0pt'>resource.partid.award # final detailed award that was applied to the entire</span></pre>
1348: <pre><span
1349: style='font-size:9.0pt'> # part of the question, check awarddetail below for</span></pre>
1350: <pre><span
1351: style='font-size:9.0pt'> # possibilities</span></pre>
1352: <pre><span
1353: style='font-size:9.0pt'> </span></pre>
1354: <pre><span
1355: style='font-size:9.0pt'>resource.partid.previous # boolean, is this submission a previous submission</span></pre>
1356: <pre><span
1357: style='font-size:9.0pt'> </span></pre>
1358: <pre><span
1359: style='font-size:9.0pt'>resource.partid.responseid.submissons</span></pre>
1360: <pre><span
1361: style='font-size:9.0pt'> # the student submitted string for the part.response</span></pre>
1362: <pre><span
1363: style='font-size:9.0pt'> </span></pre>
1364: <pre><span
1365: style='font-size:9.0pt'>resource.partid.responseid.awarddetail</span></pre>
1366: <pre><span
1367: style='font-size:9.0pt'> # list of all of the results of grading the submissions</span></pre>
1368: <pre><span
1369: style='font-size:9.0pt'> # in detailed form of the specific failure</span></pre>
1370: <pre><span
1371: style='font-size:9.0pt'> #Possible values:</span></pre>
1372: <pre><span
1373: style='font-size:9.0pt'> # EXACT_ANS, APPROX_ANS : student is correct</span></pre>
1374: <pre><span
1375: style='font-size:9.0pt'> # NO_RESPONSE : student submitted no response</span></pre>
1376: <pre><span
1377: style='font-size:9.0pt'> # MISSING_ANSWER : student submitted some but not</span></pre>
1378: <pre><span
1379: style='font-size:9.0pt'> # all parts of a response</span></pre>
1380: <pre><span
1381: style='font-size:9.0pt'> # WANTED_NUMERIC : expected a numeric answer and</span></pre>
1382: <pre><span
1383: style='font-size:9.0pt'> # didn't get one</span></pre>
1384: <pre><span
1385: style='font-size:9.0pt'> # SIG_FAIL : incorrect number of Significant Figures</span></pre>
1386: <pre><span
1387: style='font-size:9.0pt'> # UNIT_FAIL : incorrect unit</span></pre>
1388: <pre><span
1389: style='font-size:9.0pt'> # UNIT_NOTNEEDED : Submitted a unit when one shouldn't</span></pre>
1390: <pre><span
1391: style='font-size:9.0pt'> # NO_UNIT : needed a unit but none was submitted</span></pre>
1392: <pre><span
1393: style='font-size:9.0pt'> # BAD_FORMULA : syntax error in submitted formula</span></pre>
1394: <pre><span
1395: style='font-size:9.0pt'> # INCORRECT : answer was wrong</span></pre>
1396: <pre><span
1397: style='font-size:9.0pt'> # SUBMITTED : submission wasn't graded</span></pre>
1398: <pre><span
1399: style='font-size:9.0pt'> # ERROR : unable to get a grade</span></pre>
1400: <pre><span
1401: style='font-size:9.0pt'> </span></pre>
1402: <pre><span
1403: style='font-size:9.0pt'>resource.partid.responseid.message (optional) (not yet supported)</span></pre>
1404: <pre><span
1405: style='font-size:9.0pt'> # a message that should be shown to the student</span></pre>
1406: <pre><span
1407: style='font-size:9.0pt'> </span></pre>
1408: <pre><span
1409: style='font-size:9.0pt'>resource.partid.bonustries (optional) (not yet supported)</span></pre>
1410: <pre><span
1411: style='font-size:9.0pt'> # if set, added to the maxtries parameter for student </span></pre>
1412: <pre><span
1413: style='font-size:9.0pt'> # total number of tries overall</span></pre>
1414: <pre> </pre>
1415: <h3><a name="_Toc421867137">Sample Problems</a></h3>
1416: <p class=H5><span style='layout-grid-mode:
1417: both'>A Simple Problem</span></p>
1418: <p style='
1419: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'><problem></span></p>
1420: <p style='
1421: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
1422: <script type="loncapa/perl"></span></p>
1423: <p style='
1424: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>$length=&random(10,99,.1);</span></p>
1425: <p style='
1426: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>$width=&random(1,10,.01);</span></p>
1427: <p style='
1428: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>@area=($length*($width*10));</span></p>
1429: <p style='
1430: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
1431: </script></span></p>
1432: <p style='
1433: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>What
1434: is the area of a box $length mm in length and </span></p>
1435: <p style='
1436: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&format($width,"2E")
1437: cm in width.</span></p>
1438: <p style='
1439: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
1440: <numericalresponse id="11" answer="@area" units="mm^2"></span></p>
1441: <p style='
1442: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
1443: <textline></textline></span></p>
1444: <p style='
1445: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
1446: <responseparam name="tol" type="tolerance" default="5%"></responseparam></span></p>
1447: <p style='
1448: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
1449: </numericalresponse></span></p>
1450: <p style='
1451: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'></problem></span></p>
1452: <p class=H5><span
1453: style='layout-grid-mode:both'>A More Complex Problem</span></p>
1454: <p><span style='font-size:8.0pt;font-family:"Courier New"'><problem></span></p>
1455: <p><span style='font-size:8.0pt;font-family:"Courier New"'><displayduedate
1456: /></span></p>
1457: <p><span style='font-size:8.0pt;font-family:"Courier New"'><p><displaytitle
1458: /></p></span></p>
1459: <p><span style='font-size:8.0pt;font-family:"Courier New"'><script type="loncapa/perl"></span></p>
1460: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF="<b>
1461: F<sub>1</sub> </b>";</span></p>
1462: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF1="<b>
1463: F<sub>1</sub> </b>";</span></p>
1464: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF2="<b>
1465: F<sub>2</sub> </b>";</span></p>
1466: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$mF="|<b>F</b>|";</span></p>
1467: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F1mag="|<b>F<sub>1</sub></b>|";</span></p>
1468: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F2mag="|<b>F<sub>2</sub></b>|";</span></p>
1469: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq1mag="|<b>
1470: <font face=symbol>t</font><sub>1</sub></b>|";</span></p>
1471: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq2mag="|<b>
1472: <font face=symbol>t</font><sub>2</sub></b>|";</span></p>
1473: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$Q1="Q<sub>1</sub>";</span></p>
1474: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$Q2="Q<sub>2</sub>";</span></p>
1475: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$tau="<font
1476: face=symbol>t</font>";</span></p>
1477: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$tau1="<font
1478: face=symbol><b>t</b></font><sub>1</sub>";</span></p>
1479: <p><span style='font-size:8.0pt;font-family:"Courier New"'> $val=&random(1,4,1);</span></p>
1480: <p><span style='font-size:8.0pt;font-family:"Courier New"'> $tp=&choose($val,"her","her","his","his");</span></p>
1481: <p><span style='font-size:8.0pt;font-family:"Courier New"'> $sd=&choose($val,"daughter","niece","nephew","son");</span></p>
1482: <p><span style='font-size:8.0pt;font-family:"Courier New"'></script></span></p>
1483: <p><span style='font-size:8.0pt;font-family:"Courier New"'><startouttext
1484: /></span></p>
1485: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq1mag and $trq2mag
1486: are the magnitudes of the torques produced repectively by </span></p>
1487: <p><span style='font-size:8.0pt;font-family:"Courier New"'>forces $vF1 and $vF2
1488: with respect the pivot P. The magnitudes of $vF1 is </span></p>
1489: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F1mag and that of
1490: $vF2 is $F2mag. $Q1 and $Q2 are the locations </span></p>
1491: <p><span style='font-size:8.0pt;font-family:"Courier New"'>on a rigid body where
1492: $vF1 and $vF2 act. </span></p>
1493: <p><span style='font-size:8.0pt;font-family:"Courier New"'><endouttext /></span></p>
1494: <p><span style='font-size:8.0pt;font-family:"Courier New"'><optionresponse
1495: max="600"></span></p>
1496: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1497: <foilgroup options="('Correct','Incorrect','Can not tell')"></span></p>
1498: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1499: <conceptgroup concept="Effect of the moment-arm on the torque"></span></p>
1500: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1501: <foil name="1a" value="Incorrect"></span></p>
1502: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1503: For $F1mag larger than $F2mag , $trq1mag is larger than $trq2mag</span></p>
1504: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1505: </foil></span></p>
1506: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1507: <foil name="1b" value="Incorrect"></span></p>
1508: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1509: For $F1mag smaller than $F2mag , $trq1mag is smaller than $trq2mag</span></p>
1510: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1511: </foil></span></p>
1512: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1513: <foil
1514: name="1c" value="Correct"></span></p>
1515: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1516: For $F1mag larger than $F2mag , $trq1mag can be less than $trq2mag</span></p>
1517: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1518: </foil></span></p>
1519: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1520: <foil name="1d" value="Correct"></span></p>
1521: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1522: For $F1mag smaller than $F2mag , $trq1mag can be larger than $trq2mag</span></p>
1523: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1524: </foil></span></p>
1525: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1526: </conceptgroup> </span></p>
1527: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1528: <conceptgroup concept="For a given pivot, relation of force vector
1529: to torque."></span></p>
1530: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1531: <foil name="2a" value="Correct"></span></p>
1532: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1533: The moment-arm of $vF is the shortest distance from P to the line along $vF
1534: .</span></p>
1535: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1536: </foil></span></p>
1537: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1538: <foil name="2b" value="Incorrect"></span></p>
1539: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1540: The moment-arm of $vF is the shortest distance from P to $vF vector.</span></p>
1541: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1542: </foil></span></p>
1543: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1544: <foil name="2c" value="Correct"></span></p>
1545: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1546: The moment-arm of $vF is not the distance from P to Q<sub>1</sub>.</span></p>
1547: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1548: </foil></span></p>
1549: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1550: <foil name="2d" value="Incorrect"></span></p>
1551: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1552: The moment-arm of $vF is the distance from P to Q<sub>1</sub>.</span></p>
1553: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1554: </foil> </span></p>
1555: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1556: </conceptgroup></span></p>
1557: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1558: <conceptgroup concept="Torque is force x moment-arm."></span></p>
1559: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1560: <foil name="3a" value="Correct"></span></p>
1561: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1562: $trq1mag equals to the product of the moment-arm and $F1mag .</span></p>
1563: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1564: </foil></span></p>
1565: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1566: <foil name="3b" value="Incorrect"></span></p>
1567: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1568: $trq1mag equals to $F1mag times the distance from Q<sub>1</sub>
1569: to P.</span></p>
1570: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1571: </foil></span></p>
1572: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1573: <foil name="3c" value="Correct"></span></p>
1574: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1575: $trq1mag is not equal to the product of $F1mag and the distance from Q<sub>1</sub>
1576: to P.</span></p>
1577: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1578: </foil></span></p>
1579: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1580: <foil name="3d" value="Incorrect"></span></p>
1581: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1582: $trq1mag is not equal to the product of the moment-arm and $F1mag .</span></p>
1583: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1584: </foil></span></p>
1585: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1586: </conceptgroup></span></p>
1587: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1588: <conceptgroup concept="Pivot point is required to calculate torque"></span></p>
1589: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1590: <foil name="4a" value="Correct"></span></p>
1591: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1592: $tau1 vector depends on the location of P.</span></p>
1593: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1594: </foil></span></p>
1595: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1596: <foil name="4b" value="Incorrect"></span></p>
1597: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1598: $tau1 vector does not depend on the location of P.</span></p>
1599: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1600: </foil></span></p>
1601: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1602: <foil name="4c" value="Correct"></span></p>
1603: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1604: $tau1 vector has no meaning unless a pivot is selected.</span></p>
1605: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1606: </foil></span></p>
1607: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1608: <foil name="4d" value="Incorrect"></span></p>
1609: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1610: $tau1 vector can be determined without selecting P. </span></p>
1611: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1612: </foil></span></p>
1613: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1614: </conceptgroup> </span></p>
1615: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1616: <conceptgroup concept="torque from 2 forces acting along same line"></span></p>
1617: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1618: <foil name="5a" value="Correct"></span></p>
1619: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1620: Two equal forces, acting on a body along the same line but at different positions,
1621: produce equal torques with respect to a given pivot."</span></p>
1622: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1623: </foil></span></p>
1624: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1625: <foil name="5b" value="Incorrect"></span></p>
1626: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1627: Two equal forces, along the same line, produce equal torques with respect
1628: to a given pivot only if they act at the same point on a body."</span></p>
1629: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1630: </foil></span></p>
1631: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1632: <foil name="5c" value="Incorrect"></span></p>
1633: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1634: Two equal forces acting on a body along the same line but at different positions,
1635: produce equal torques for only one pivot."</span></p>
1636: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1637: </foil></span></p>
1638: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1639: </conceptgroup></span></p>
1640: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1641: <foil name="6" value="unused"></span></p>
1642: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1643: This foil will never display since it is unused.</span></p>
1644: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1645: </foil></span></p>
1646: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1647: </foilgroup></span></p>
1648: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1649: <notsolved></span></p>
1650: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1651: <hintgroup></span></p>
1652: <p><span style='font-size:8.0pt;font-family:"Courier New"'>Think the definition
1653: of the torque. The force and the moment-arm respect to the pivot. </span></p>
1654: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1655: </hintgroup></span></p>
1656: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
1657: </notsolved></span></p>
1658: <p><span style='font-size:8.0pt;font-family:"Courier New"'></optionresponse></span></p>
1659: <p><span style='font-size:8.0pt;font-family:"Courier New"'></problem></span></p>
1660: <h3> </h3>
1661: <p> <img border=0 width=432 height=370
1662: src="Session%20On2_files/image003.png" v:shapes="_x0000_i1025"> </p>
1663: <p><span style='font-size:14.0pt'><b>Fig. 3.1.1</b></span><span
1664: style='font-size:14.0pt'> Ð Internal Structure of Homework Handler</span></p>
1665: </div>
1666: <br
1667: clear=ALL style='page-break-before:always;'>
1668: <div class=Section2> </div>
1669: </body>
1670: </html>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>