File:  [LON-CAPA] / doc / gutshtml / SessionOn2.html
Revision 1.3: download - view: text, annotated - select for diffs
Thu Apr 7 06:56:20 2005 UTC (19 years, 1 month ago) by albertel
Branches: MAIN
CVS tags: version_2_9_X, version_2_9_99_0, version_2_9_1, version_2_9_0, version_2_8_X, version_2_8_99_1, version_2_8_99_0, version_2_8_2, version_2_8_1, version_2_8_0, version_2_7_X, version_2_7_99_1, version_2_7_99_0, version_2_7_1, version_2_7_0, version_2_6_X, version_2_6_99_1, version_2_6_99_0, version_2_6_3, version_2_6_2, version_2_6_1, version_2_6_0, version_2_5_X, version_2_5_99_1, version_2_5_99_0, version_2_5_2, version_2_5_1, version_2_5_0, version_2_4_X, version_2_4_99_0, version_2_4_2, version_2_4_1, version_2_4_0, version_2_3_X, version_2_3_99_0, version_2_3_2, version_2_3_1, version_2_3_0, version_2_2_X, version_2_2_99_1, version_2_2_99_0, version_2_2_2, version_2_2_1, version_2_2_0, version_2_1_X, version_2_1_99_3, version_2_1_99_2, version_2_1_99_1, version_2_1_99_0, version_2_1_3, version_2_1_2, version_2_1_1, version_2_1_0, version_2_12_X, version_2_11_X, version_2_11_4_uiuc, version_2_11_4_msu, version_2_11_4, version_2_11_3_uiuc, version_2_11_3_msu, version_2_11_3, version_2_11_2_uiuc, version_2_11_2_msu, version_2_11_2_educog, version_2_11_2, version_2_11_1, version_2_11_0_RC3, version_2_11_0_RC2, version_2_11_0_RC1, version_2_11_0, version_2_10_X, version_2_10_1, version_2_10_0_RC2, version_2_10_0_RC1, version_2_10_0, version_2_0_X, version_2_0_99_1, version_2_0_2, version_2_0_1, version_2_0_0, version_1_99_3, version_1_99_2, version_1_99_1_tmcc, version_1_99_1, version_1_99_0_tmcc, version_1_99_0, loncapaMITrelate_1, language_hyphenation_merge, language_hyphenation, bz6209-base, bz6209, HEAD, GCI_3, GCI_2, GCI_1, BZ4492-merge, BZ4492-feature_horizontal_radioresponse, BZ4492-feature_Support_horizontal_radioresponse, BZ4492-Support_horizontal_radioresponse
- ENV -> env

    1: <html>
    2: 
    3: <head>
    4: 
    5: <meta name=Title
    6: 
    7: content="Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)">
    8: 
    9: <meta http-equiv=Content-Type content="text/html; charset=macintosh">
   10: 
   11: <link rel=Edit-Time-Data href="Session%20On2_files/editdata.mso">
   12: 
   13: <title>Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)</title>
   14: 
   15: <style><!--
   16: 
   17: .MsoHeader
   18: 
   19: 	{tab-stops:center 3.0in right 6.0in;
   20: 
   21: 	font-size:10.0pt;
   22: 
   23: 	font-family:"Times New Roman";}
   24: 
   25: .H5
   26: 
   27: 	{font-size:10.0pt;
   28: 
   29: 	font-family:"Times New Roman";
   30: 
   31: 	layout-grid-mode:line;
   32: 
   33: 	font-weight:bold;}
   34: 
   35: .Section1
   36: 
   37: 	{page:Section1;}
   38: 
   39: .Section2
   40: 
   41: 	{page:Section2;}
   42: 
   43: -->
   44: 
   45: </style>
   46: 
   47: </head>
   48: 
   49: <body bgcolor=#FFFFFF link=blue vlink=purple class="Normal" lang=EN-US>
   50: 
   51: <div class=Section1> 
   52: 
   53:   <h2>Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)</h2>
   54: 
   55:   <h3><a name="_Toc421867127">Tags</a></h3>
   56: 
   57:   <ul type=disc>
   58: 
   59:     <li><b>Response tags </b></li>
   60: 
   61:   </ul>
   62: 
   63:   <p>Arguments for all response tags </p>
   64: 
   65:   <ul type=disc>
   66: 
   67:     <ul type=circle>
   68: 
   69:       <li><i>ID</i><span style='font-style:
   70: 
   71:       normal'>, if this isn't set it will be set during the publication step. 
   72: 
   73:         It is used to assign parameters names in a way that can be tracked if 
   74: 
   75:         an instructor modifies things by hand. </span></li>
   76: 
   77:       <li><i>name</i><span
   78: 
   79:       style='font-style:normal'> optional, if set, it will be used by the resource 
   80: 
   81:         assembly tool when one is modifying parameters. </span></li>
   82: 
   83:     </ul>
   84: 
   85:   </ul>
   86: 
   87:   <p>Implemented response tags </p>
   88: 
   89:   <ul type=disc>
   90: 
   91:     <ul type=circle>
   92: 
   93:       <li><b>&lt;responseparam&gt;</b><span
   94: 
   95:       style='font-weight:normal'> if it appears it should be inside of a &lt;*response&gt; 
   96: 
   97:         tag, defines an externally adjustable parameter for this question. Arguments: 
   98: 
   99:         </span></li>
  100: 
  101:       <ul type=square>
  102: 
  103:         <li><i>default</i><span
  104: 
  105:        style='font-style:normal'> required, specifies a default value for the 
  106: 
  107:           parameter </span></li>
  108: 
  109:         <li><i>name</i><span
  110: 
  111:        style='font-style:normal'> required, specifies an internal name for the 
  112: 
  113:           parameter </span></li>
  114: 
  115:         <li><i>type</i><span
  116: 
  117:        style='font-style:normal'> required specifies the type of parameter, one 
  118: 
  119:           of &quot;tolerance&quot;, &quot;int&quot;, &quot;float&quot;, &quot;string&quot;, 
  120: 
  121:           &quot;date&quot; (configuration of paramters is handled by lonparmset.pm 
  122: 
  123:           and parameter.html) </span></li>
  124: 
  125:         <li><i>description</i><span
  126: 
  127:        style='font-style:normal'> a string describing the parameter, this is what 
  128: 
  129:           is used to talk about a parameter outside of a problem </span></li>
  130: 
  131:       </ul>
  132: 
  133:       <li><b>&lt;parameter&gt;</b><span
  134: 
  135:       style='font-weight:normal'> exactly the same as &lt;responseparam&gt; currently, 
  136: 
  137:         but should not appear inside of a &lt;*response&gt; </span></li>
  138: 
  139:       <li><b>&lt;numericalresponse&gt;</b><span
  140: 
  141:       style='font-weight:normal'> implements a numerical answer, it needs an internal 
  142: 
  143:         </span><b>&lt;textline&gt;</b><span style='font-weight:normal'> for the 
  144: 
  145:         response to go in. It checks all styles of numerical supported in CAPA. 
  146: 
  147:         Possible args are: </span></li>
  148: 
  149:       <ul type=square>
  150: 
  151:         <li><i>answer</i><span
  152: 
  153:        style='font-style:normal'> required, specifies the correct answer, may 
  154: 
  155:           be either a perl list or scalar</span></li>
  156: 
  157:         <li><i>units</i><span
  158: 
  159:        style='font-style:normal'> optional, specifies unit of correct answer, 
  160: 
  161:           CAPA style</span></li>
  162: 
  163:       </ul>
  164: 
  165:       <li><b>&lt;stringresponse&gt;</b><span
  166: 
  167:       style='font-weight:normal'> implements a string answer, it needs an internal 
  168: 
  169:         </span><b>&lt;textline&gt;</b><span style='font-weight:normal'> for the 
  170: 
  171:         response to go in. It can check the string for either case or order. </span></li>
  172: 
  173:       <ul type=square>
  174: 
  175:         <li><i>answer</i><span
  176: 
  177:        style='font-style:normal'> required, specifies the correct answer, may 
  178: 
  179:           be either a perl list or scalar</span></li>
  180: 
  181:         <li><i>type</i><span
  182: 
  183:        style='font-style:normal'> optional, CAPA style str args, cs/ci/mc </span></li>
  184: 
  185:         <ul type=square>
  186: 
  187:           <li>cs - case senesitive, order important</li>
  188: 
  189:           <li>ci - case insenesitive, order important</li>
  190: 
  191:           <li>mc - case insenesitive, order unimportant</li>
  192: 
  193:         </ul>
  194: 
  195:       </ul>
  196: 
  197:       <li><b>&lt;essayresponse&gt;</b><span
  198: 
  199:       style='font-weight:normal'> implements a ungraded large text response, it 
  200: 
  201:         need an internal </span><b>&lt;textarea&gt;</b><span style='font-weight:
  202: 
  203:       normal'> for the response to go in. </span></li>
  204: 
  205:       <li><b>&lt;imageresponse&gt;</b><span
  206: 
  207:       style='font-weight:normal'> implements a image click style image submission, 
  208: 
  209:         uses the foil structure tags <a href="#foil">below</a>. Additional tags 
  210: 
  211:         that should appear in a &lt;foil&gt; are: </span></li>
  212: 
  213:       <ul type=square>
  214: 
  215:         <li><b>&lt;image&gt;</b><span
  216: 
  217:        style='font-weight:normal'> required, the contained text specifies a published 
  218: 
  219:           graphical resource that is the image used, should only appear once per 
  220: 
  221:           foil</span></li>
  222: 
  223:         <li><b>&lt;rectangle&gt;</b><span
  224: 
  225:        style='font-weight:normal'> required, the contained text specifies a rectangular 
  226: 
  227:           area that is correct, should look like (1,2)-(3,4), at least 1 required</span></li>
  228: 
  229:         <li><b>&lt;text&gt;</b><span
  230: 
  231:        style='font-weight:normal'> required, the contained text is printed on 
  232: 
  233:           top of the image.</span></li>
  234: 
  235:       </ul>
  236: 
  237:       <li><b>&lt;optionresponse&gt;</b><span
  238: 
  239:       style='font-weight:normal'> implements a &quot;select from these choices&quot; 
  240: 
  241:         style question, the choices are specified by the instructor, it uses the 
  242: 
  243:         foil structure tags <a href="#foil">below</a> with this additional args: 
  244: 
  245:         </span></li>
  246: 
  247:       <ul type=square>
  248: 
  249:         <li><b>&lt;foilgroup&gt;</b><span
  250: 
  251:        style='font-weight:normal'> is required to have <i>options</i></span> which 
  252: 
  253:           should be a perl list of possible options for the student. </li>
  254: 
  255:       </ul>
  256: 
  257:       <li><b>&lt;radiobuttonresponse&gt;</b><span
  258: 
  259:       style='font-weight:normal'> implements a true / false style question with 
  260: 
  261:         1 correct answer.it uses the foil structure tags <a href="#foil">below</a> 
  262: 
  263:         but the <i>value</i></span> of a &lt;foil&gt;can only be &quot;true&quot; 
  264: 
  265:         or &quot;false&quot; or &quot;unused&quot; </li>
  266: 
  267:       <li><b>&lt;dataresponse&gt;</b><span
  268: 
  269:       style='font-weight:normal'> implements a straight data storage entry idea, 
  270: 
  271:         needs and interveing input tag like &lt;textline&gt; to work correctly.<br>
  272: 
  273:         Arguments: </span></li>
  274: 
  275:       <ul type=square>
  276: 
  277:         <li><i>name</i><span
  278: 
  279:        style='font-style:normal'> internal name for the value, it will have the 
  280: 
  281:           part id and respose id added on to it </span></li>
  282: 
  283:         <li><i>type</i><span
  284: 
  285:        style='font-style:normal'> type of data stored in this response field, 
  286: 
  287:           should be one of the types supported by parameter.html </span></li>
  288: 
  289:         <li><i>display</i><span
  290: 
  291:        style='font-style:normal'> a string that will be used to describe the field 
  292: 
  293:           when interfacing with humans </span></li>
  294: 
  295:       </ul>
  296: 
  297:     </ul>
  298: 
  299:   </ul>
  300: 
  301:   <p> <span style='font-size:10.0pt;
  302: 
  303: font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  304: 
  305:     </span></span> <b>&lt;externalresponse&gt;</b><span style='font-weight:
  306: 
  307: normal'> implements the ability to have an external program grade a response, 
  308: 
  309:     expects either a &lt;textline&gt; or &lt;textfield&gt; inside the tag. </span></p>
  310: 
  311:   <p>Arguments: </p>
  312: 
  313:   <ul type=disc>
  314: 
  315:     <ul type=circle>
  316: 
  317:       <ul type=square>
  318: 
  319:         <li><i>url</i><span
  320: 
  321:        style='font-style:normal'> the url to submit the answer and form to, does 
  322: 
  323:           not need to be a LON-CAPA machine. </span></li>
  324: 
  325:         <li><i>answer</i><span
  326: 
  327:        style='font-style:normal'> a string or scalar variable that can encode 
  328: 
  329:           something that should encode the correct answer, in some cases this 
  330: 
  331:           may be nothing. </span></li>
  332: 
  333:         <li><i>form</i><span
  334: 
  335:        style='font-style:normal'> a hash variable name that will be submitted 
  336: 
  337:           to the remote site as a HTTP form. </span></li>
  338: 
  339:       </ul>
  340: 
  341:     </ul>
  342: 
  343:   </ul>
  344: 
  345:   <p>The response of the remote server needs to be in XML as follows. </p>
  346: 
  347:   <pre>&nbsp;&lt;loncapagrade&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;awardetail&gt; CORRECT&nbsp;&nbsp;&nbsp;&nbsp; &lt;/awardetail&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;message&gt; A message to be shown to the students&nbsp;&nbsp;&nbsp;&nbsp; &lt;/message&gt; &lt;/loncapagrade&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;</pre>
  348: 
  349:   <ul type=disc>
  350: 
  351:     <ul type=circle>
  352: 
  353:       <ul type=square>
  354: 
  355:         <li><b>&lt;loncapagrade&gt;</b><span
  356: 
  357:        style='font-weight:normal'> no arguments but must surround the response. 
  358: 
  359:           </span></li>
  360: 
  361:         <li><b>&lt;awardetail&gt;</b><span
  362: 
  363:        style='font-weight:normal'> required inner tag, the response inside must 
  364: 
  365:           be one of the detailed responses that appears in the data storage documentation 
  366: 
  367:           (CVS:loncapa/doce/homework/datastorage) </span></li>
  368: 
  369:         <li><b>&lt;message&gt;</b><span
  370: 
  371:        style='font-weight:normal'> optional message to have shown to the student 
  372: 
  373:           </span></li>
  374: 
  375:       </ul>
  376: 
  377:     </ul>
  378: 
  379:   </ul>
  380: 
  381:   <ul type=disc>
  382: 
  383:     <li><a name=foil><b>Foil Structure Tags</b></a><b> </b></li>
  384: 
  385:   </ul>
  386: 
  387:   <p>All tags that implement a foil structure have an optional arg of <i>max</i><span style='font-style:normal'> 
  388: 
  389:     that controls the maximum number of total foils to show. </span></p>
  390: 
  391:   <ul type=disc>
  392: 
  393:     <ul type=circle>
  394: 
  395:       <li><b>&lt;foilgroup&gt;</b><span
  396: 
  397:       style='font-weight:normal'> required, must be the tag that surrounds all 
  398: 
  399:         foil definitions </span></li>
  400: 
  401:       <li><b>&lt;foil&gt;</b><span
  402: 
  403:       style='font-weight:normal'> required, all data inside is a possible foil 
  404: 
  405:         </span></li>
  406: 
  407:       <li><b>&lt;conceptgroup&gt;</b><span
  408: 
  409:       style='font-weight:normal'> optional, surrounds a collection of &lt;foil&gt;, 
  410: 
  411:         when a problem is displayed only one of the contained &lt;foil&gt;is selected 
  412: 
  413:         for display. It receives one required argument <i>concept</i></span>. 
  414: 
  415:       </li>
  416: 
  417:     </ul>
  418: 
  419:     <li><b>Hint structure </b></li>
  420: 
  421:   </ul>
  422: 
  423:   <p>All of these tags must appear inside a <b>&lt;*response&gt;</b><span
  424: 
  425: style='font-weight:normal'> tag. </span></p>
  426: 
  427:   <ul type=disc>
  428: 
  429:     <ul type=circle>
  430: 
  431:       <li><b>&lt;hintgroup&gt;</b><span
  432: 
  433:       style='font-weight:normal'> Tag that surrounds all of a hint. </span></li>
  434: 
  435:       <li><b>&lt;hintpart&gt;</b><span
  436: 
  437:       style='font-weight:normal'> required, Tag to implement conditional hints. 
  438: 
  439:         It has a required argument <i>on</i></span>. When a &lt;*hint&gt; tag 
  440: 
  441:         named the same as the value the on attribute evaluates to be correct the 
  442: 
  443:         &lt;hintpart&gt; will show. If no other &lt;hintpart&gt; are to show then 
  444: 
  445:         all hintparts with a <i>on</i><span style='font-style:normal'> of &quot;default&quot; 
  446: 
  447:         will show </span></li>
  448: 
  449:       <li><b>&lt;numericalhint&gt;</b><span
  450: 
  451:       style='font-weight:normal'> has all the arguments that &lt;numericalresponse&gt;, 
  452: 
  453:         does and the required attribute <i>name</i></span> which should be set 
  454: 
  455:         to the value of which &lt;hintpart&gt; will be shown. </li>
  456: 
  457:     </ul>
  458: 
  459:     <li><b>Input Tags </b></li>
  460: 
  461:   </ul>
  462: 
  463:   <p>This group of tags implement a mechanism for getting data for students, they 
  464: 
  465:     will usually be used by a &lt;*response&gt;. </p>
  466: 
  467:   <ul type=disc>
  468: 
  469:     <ul type=circle>
  470: 
  471:       <li><b>&lt;textarea&gt;</b><span
  472: 
  473:       style='font-weight:normal'> creates a Large text input box, If data appears 
  474: 
  475:         between the start and end tags, the data will appear i the textarea if 
  476: 
  477:         the student has not yet made a submission. Additionally it takes two arguments 
  478: 
  479:         <i>rows</i></span> and <i>cols</i><span
  480: 
  481:       style='font-style:normal'> which control the height and width of the area 
  482: 
  483:         respectively. It defaults to 10 and 80. </span></li>
  484: 
  485:       <li><b>&lt;textline&gt;</b><span
  486: 
  487:       style='font-weight:normal'> creates a single line of input element, it accepts 
  488: 
  489:         1 argument <i>size</i></span> which controls the width on the textline, 
  490: 
  491:         it defaults to 20. </li>
  492: 
  493:     </ul>
  494: 
  495:     <li><b>Output Tags </b></li>
  496: 
  497:   </ul>
  498: 
  499:   <p>This group of tags generate useful pieces of output. </p>
  500: 
  501:   <ul type=disc>
  502: 
  503:     <ul type=circle>
  504: 
  505:       <li><b>&lt;standalone&gt;</b><span
  506: 
  507:       style='font-weight:normal'> everything in between the start and end tag 
  508: 
  509:         is shown only on the web, and only if the resource is not part of a course. 
  510: 
  511:         </span></li>
  512: 
  513:       <li><b>&lt;displayduedate&gt;</b><span
  514: 
  515:       style='font-weight:normal'> this will insert the current duedate if one 
  516: 
  517:         is set into the document. It is generated to be inside a table of 1x1 
  518: 
  519:         elements </span></li>
  520: 
  521:       <li><b>&lt;displaytitle&gt;</b><span
  522: 
  523:       style='font-weight:normal'> this will insert the title of the problem from 
  524: 
  525:         the metadata of the problem </span></li>
  526: 
  527:       <li><b>&lt;window&gt;</b><span
  528: 
  529:       style='font-weight:normal'> the text in between is put in a popup javascript 
  530: 
  531:         window </span></li>
  532: 
  533:       <li><b>&lt;m&gt;</b><span
  534: 
  535:       style='font-weight:normal'> the inside text is LaTeX, and is converted to 
  536: 
  537:         HTML (or MathML) on the fly, if the argument <i>eval</i></span> is set 
  538: 
  539:         to &quot;on&quot; the intervening text will have a perl var expansion 
  540: 
  541:         done to it before being converted. </li>
  542: 
  543:       <li><b>&lt;randomlabel&gt;</b><span
  544: 
  545:       style='font-weight:normal'> shows a specified image with images or text 
  546: 
  547:         labels randomly assigned to a set of specific locations, those locations 
  548: 
  549:         may also have values assigned to them. There is a hash generated conating 
  550: 
  551:         the mapping of labels to locations, labels to values, and locations to 
  552: 
  553:         values. Example: </span></li>
  554: 
  555:     </ul>
  556: 
  557:   </ul>
  558: 
  559:   <pre>&nbsp; &lt;randomlabel bgimg=&quot;URL&quot; width=&quot;12&quot; height=&quot;45&quot; texwidth=&quot;50&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;labelgroup name=&quot;GroupOne&quot; type=&quot;image&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;location x=&quot;123&quot; y=&quot;456&quot; value=&quot;10&quot; /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;location x=&quot;321&quot; y=&quot;654&quot; value=&quot;20&quot; /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;location x=&quot;213&quot; y=&quot;546&quot; value=&quot;13&quot; /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;label description=&quot;TEXT-1&quot;&gt;IMG-URL&lt;/label&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;label description=&quot;TEXT-2&quot;&gt;IMG-URL&lt;/label&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;label description=&quot;TEXT-3&quot;&gt;IMG-URL&lt;/label&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/labelgroup&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;labelgroup name=&quot;GroupTwo&quot; type=&quot;text&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;location x=&quot;12&quot; y=&quot;45&quot; /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;location x=&quot;32&quot; y=&quot;65&quot; /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;location x=&quot;21&quot; y=&quot;54&quot; /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;label&gt;TEXT-1&lt;/label&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;label&gt;TEXT-2&lt;/label&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;label&gt;TEXT-3&lt;/label&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/labelgroup&gt;&nbsp;&nbsp;&nbsp; &lt;/randomlabel&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;</pre>
  560: 
  561:   <p>Arguments: </p>
  562: 
  563:   <ul type=disc>
  564: 
  565:     <ul type=circle>
  566: 
  567:       <ul type=square>
  568: 
  569:         <li><i>bgimg</i><span
  570: 
  571:        style='font-style:normal'> either a fully qualified URL for an external 
  572: 
  573:           image, or a loncapa resource, it supports relative references (../images/apicture.gif), 
  574: 
  575:           the image must either be a GIF or JPEG </span></li>
  576: 
  577:         <li><i>width</i><span
  578: 
  579:        style='font-style:normal'> the width of the image in pixels </span></li>
  580: 
  581:         <li><i>height</i><span
  582: 
  583:        style='font-style:normal'> the height of the image in pixels </span></li>
  584: 
  585:         <li><i>texwidth</i><span
  586: 
  587:        style='font-style:normal'> the width of the image in millimeters </span></li>
  588: 
  589:       </ul>
  590: 
  591:     </ul>
  592: 
  593:   </ul>
  594: 
  595:   <p>Internal tags: </p>
  596: 
  597:   <ul type=disc>
  598: 
  599:     <ul type=circle>
  600: 
  601:       <ul type=square>
  602: 
  603:         <li><b>&lt;labelgroup&gt;</b><span
  604: 
  605:        style='font-weight:normal'> 1 required, multiple allowed. Declares a group 
  606: 
  607:           of locations and labels associated with them. <br>
  608: 
  609:           Arguments: </span></li>
  610: 
  611:         <ul type=square>
  612: 
  613:           <li><i>name</i><span
  614: 
  615:         style='font-style:normal'> this is the name of the group, a hash with 
  616: 
  617:             this name will be generated holding the mappings for later use in 
  618: 
  619:             the problem. For each location a value will be set for which label 
  620: 
  621:             is there, (EX. $hash{'1'}=&quot;TEXT-2&quot;). For locations with 
  622: 
  623:             values the hash will contain 2 items, a location to value mapping 
  624: 
  625:             ($hash{'value_1'}=10), and a label to value mapping ($hash{'labelvalue_2'}=10). 
  626: 
  627:             For all image style of labels there will also be a label description 
  628: 
  629:             to label URL mapping ($hash{'image_2'}=IMG-URL). Also the entry 'numlocations 
  630: 
  631:             will be set to the total number of locations that exist. (Note that 
  632: 
  633:             locations and labels start counting from 1.) </span></li>
  634: 
  635:           <li><i>type</i><span
  636: 
  637:         style='font-style:normal'> the type of labels in this group, either 'image' 
  638: 
  639:             or 'text' </span></li>
  640: 
  641:         </ul>
  642: 
  643:         <li><b>&lt;location&gt;</b><span
  644: 
  645:        style='font-weight:normal'> declares a location on the image that a label 
  646: 
  647:           should appear at <br>
  648: 
  649:           Arguments: </span></li>
  650: 
  651:         <ul type=square>
  652: 
  653:           <li><i>x</i><span
  654: 
  655:         style='font-style:normal'> the x value of the location in pixels </span></li>
  656: 
  657:           <li><i>y</i><span
  658: 
  659:         style='font-style:normal'> the y value of the location in pixels </span></li>
  660: 
  661:           <li><i>value</i><span
  662: 
  663:         style='font-style:normal'> a scalar value to associate at this location 
  664: 
  665:             (optional) </span></li>
  666: 
  667:         </ul>
  668: 
  669:         <li><b>&lt;label&gt;</b><span
  670: 
  671:        style='font-weight:normal'> declaration of a label, if this is a text type 
  672: 
  673:           labelgroup the internal text should be the text of the label (HTML is 
  674: 
  675:           not currently supported), if this is an image type of label the internal 
  676: 
  677:           text must be a LON-CAPA resource specification, and the description 
  678: 
  679:           filed must be set. <br>
  680: 
  681:           Arguments: </span></li>
  682: 
  683:         <ul type=square>
  684: 
  685:           <li><i>description</i><span
  686: 
  687:         style='font-style:normal'> a required field for image labels, it will 
  688: 
  689:             be used when setting values in the hash. </span></li>
  690: 
  691:         </ul>
  692: 
  693:       </ul>
  694: 
  695:     </ul>
  696: 
  697:     <li><b>Scripting </b></li>
  698: 
  699:   </ul>
  700: 
  701:   <p>These tags allow the document to behave programatically </p>
  702: 
  703:   <ul type=disc>
  704: 
  705:     <ul type=circle>
  706: 
  707:       <li><b>&lt;display&gt;</b><span
  708: 
  709:       style='font-weight:normal'> the intervening perl script is evaluated in 
  710: 
  711:         the safe space and the return value of the script replaces the entire 
  712: 
  713:         tag </span></li>
  714: 
  715:       <li><b>&lt;import&gt;</b><span
  716: 
  717:       style='font-weight:normal'> causes the parse to read in the file named in 
  718: 
  719:         the body of the tag and parse it as if the entire text of the file had 
  720: 
  721:         existed at location of the tag </span></li>
  722: 
  723:       <li><b>&lt;parserlib&gt;</b><span
  724: 
  725:       style='font-weight:normal'> the enclosed filename contains definitions for 
  726: 
  727:         new tags </span></li>
  728: 
  729:       <li><b>&lt;script&gt;</b><span
  730: 
  731:       style='font-weight:normal'> if the argument <i>type</i></span> is set to 
  732: 
  733:         &quot;loncapa/perl&quot; the enclosed data is a perl script which is evaluated 
  734: 
  735:         inside the perl Safe space. The return value of the script is ignored. 
  736: 
  737:       </li>
  738: 
  739:       <li><b>&lt;scriptlib&gt;</b><span
  740: 
  741:       style='font-weight:normal'> the enclosed filename contains perl code to 
  742: 
  743:         run in the safe space </span></li>
  744: 
  745:       <li><b>&lt;block&gt;</b><span
  746: 
  747:       style='font-weight:normal'> has a required argument <i>condition</i></span> 
  748: 
  749:         that is evaluated, it the condition is true everything inside the tag 
  750: 
  751:         is evaluated, if it is false everything inside the block tag is skipped 
  752: 
  753:       </li>
  754: 
  755:       <li><b>&lt;notsolved&gt;</b><span
  756: 
  757:       style='font-weight:normal'> everything inside the tag is skipped if the 
  758: 
  759:         problem is &quot;solved&quot; </span></li>
  760: 
  761:       <li><b>&lt;postanswerdate&gt;</b><span
  762: 
  763:       style='font-weight:normal'> everything inside the tag is skipped if the 
  764: 
  765:         problem is before the answer date </span></li>
  766: 
  767:       <li><b>&lt;preduedate&gt;</b><span
  768: 
  769:       style='font-weight:normal'> everything inside the tag is skipped if the 
  770: 
  771:         problem is after the due date </span></li>
  772: 
  773:       <li><b>&lt;randomlist&gt;</b><span
  774: 
  775:       style='font-weight:normal'> the enclosed tags are parsed in a stable random 
  776: 
  777:         order, optional argument <i>show</i></span> restricts the number of tags 
  778: 
  779:         indie that are actually parsed the no more than <i>show</i><span
  780: 
  781:       style='font-style:normal'>. </span></li>
  782: 
  783:       <li><b>&lt;solved&gt;</b><span
  784: 
  785:       style='font-weight:normal'> everything inside the tag is skipped if the 
  786: 
  787:         problem is &quot;not solved&quot; </span></li>
  788: 
  789:       <li><b>&lt;while&gt;</b><span
  790: 
  791:       style='font-weight:normal'> implements a while loop, required argument <i>condition</i></span> 
  792: 
  793:         is a perl scriptlet that when evaluated results in a true or false value, 
  794: 
  795:         on true the entirety of the text between the whiles is parsed. The condition 
  796: 
  797:         is tested again, etc. If false it goes to the next node in the parse. 
  798: 
  799:       </li>
  800: 
  801:     </ul>
  802: 
  803:     <li><b>Structure Tags </b></li>
  804: 
  805:   </ul>
  806: 
  807:   <p>These tags give the problem a structure and take care of the recording of 
  808: 
  809:     data and giving the student messages. </p>
  810: 
  811:   <ul type=disc>
  812: 
  813:     <ul type=circle>
  814: 
  815:       <li><b>&lt;problem&gt;</b><span
  816: 
  817:       style='font-weight:normal'> must be the first tag in the file, this tag 
  818: 
  819:         sets up the header of the webpage and generates the submit buttons, it 
  820: 
  821:         also handles due dates properly </span></li>
  822: 
  823:       <li><b>&lt;part&gt;</b><span
  824: 
  825:       style='font-weight:normal'> must be below &lt;problem&gt; if it is going 
  826: 
  827:         to be used. It does many of the same tasks as &lt;problem&gt; but allows 
  828: 
  829:         multiple separate problems to exist in a single file. </span></li>
  830: 
  831:       <li><b>&lt;startouttext&gt;&lt;endouttext&gt;</b><span
  832: 
  833:       style='font-weight:normal'> these tags are somewhat special, they must have 
  834: 
  835:         no internal text and occur in pairs. Their use is to mark up the problem 
  836: 
  837:         so the web editor knows what sections should be edited in a plain text 
  838: 
  839:         block on the web. </span></li>
  840: 
  841:     </ul>
  842: 
  843:   </ul>
  844: 
  845:   <h3><a name="_Toc421867128">&lt;script&gt; Functions</a></h3>
  846: 
  847:   <p>A list of functions that have been written that are available in the Safe 
  848: 
  849:     space scripting environment inside a problem. </p>
  850: 
  851:   <ul type=disc>
  852: 
  853:     <li>sin(x), cos(x), tan(x)</li>
  854: 
  855:     <li>asin(x), acos(x), atan(x), atan2(y,x)</li>
  856: 
  857:     <li>log(x), log10(x)</li>
  858: 
  859:     <li>exp(), pow(x,y), sqrt(x)</li>
  860: 
  861:     <li>abs(x), sgn(x)</li>
  862: 
  863:     <li>erf(x), erfc(x)</li>
  864: 
  865:     <li>ceil(x), floor(x)</li>
  866: 
  867:     <li>min(...), max(...)</li>
  868: 
  869:     <li>factorial(n)</li>
  870: 
  871:     <li>N%M</li>
  872: 
  873:     <li>sinh(x), cosh(x), tanh(x)</li>
  874: 
  875:     <li>asinh(x), acosh(x), atanh(x)</li>
  876: 
  877:     <li>roundto(x,n)</li>
  878: 
  879:     <li>web(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;) or web(a,b,c)</li>
  880: 
  881:     <li>html(&quot;a&quot;) or html(a)</li>
  882: 
  883:     <li>j0(x), j1(x), jn(n,x), jv(y,x)</li>
  884: 
  885:     <li>y0(x), y1(x), yn(n,x), yv(y,x)</li>
  886: 
  887:     <li>random</li>
  888: 
  889:     <li>choose</li>
  890: 
  891:     <li>tex(&quot;a&quot;,&quot;b&quot;) or tex(a,b)</li>
  892: 
  893:     <li>var_in_tex(a)</li>
  894: 
  895:     <li>to_string(x), to_string(x,y)</li>
  896: 
  897:     <li>class(), section()</li>
  898: 
  899:     <li>name(), student_number()</li>
  900: 
  901:     <li>open_date(), due_date(), answer_date()</li>
  902: 
  903:     <li>sub_string()</li>
  904: 
  905:     <li>array_moments(array)</li>
  906: 
  907:     <li>format(x,y),prettyprint(x,y)</li>
  908: 
  909:     <li>map(...)</li>
  910: 
  911:     <li>caparesponse_check</li>
  912: 
  913:     <li>caparesponse_check_list</li>
  914: 
  915:   </ul>
  916: 
  917:   <h3><a name="_Toc421867129">Detailed descriptions of each function and comparison 
  918: 
  919:     with CAPA</a></h3>
  920: 
  921:   <table border=1 cellpadding=0>
  922: 
  923:     <tr> 
  924: 
  925:       <td width=131 valign=top class="Normal"> <p><b>CAPA Functions</b></p></td>
  926: 
  927:       <td width=134 valign=top class="Normal"> <p><b>LON-CAPA</b></p></td>
  928: 
  929:       <td width=147 valign=top class="Normal"> <p><b>Descriptions</b></p></td>
  930: 
  931:       <td width=101 valign=top class="Normal"> <p><b>Differences (if any)</b></p></td>
  932: 
  933:     </tr>
  934: 
  935:     <tr> 
  936: 
  937:       <td width=131 valign=top class="Normal"> <p>sin(x), cos(x), tan(x)</p></td>
  938: 
  939:       <td width=134 valign=top class="Normal"> <p>&amp;sin($x), &amp;cos($x), 
  940: 
  941:           &amp;tan($x)</p></td>
  942: 
  943:       <td width=147 valign=top class="Normal"> <p>Trigonometric functions where 
  944: 
  945:           x is in radians. $x can be a pure number, i.e., you can call &amp;sin(3.1415)</p></td>
  946: 
  947:       <td width=101 valign=top class="Normal">&nbsp; </td>
  948: 
  949:     </tr>
  950: 
  951:     <tr> 
  952: 
  953:       <td width=131 valign=top class="Normal"> <p>asin(x), acos(x), atan(x), atan2(y,x)</p></td>
  954: 
  955:       <td width=134 valign=top class="Normal"> <p>&amp;asin($x), &amp;acos($x), 
  956: 
  957:           &amp;atan($x), &amp;atan2($y,$x)</p></td>
  958: 
  959:       <td width=147 valign=top class="Normal"> <p>Inverse trigonometric functions. 
  960: 
  961:           Return value is in radians. For asin and acos the value of x must be 
  962: 
  963:           between -1 and 1. The atan2 returns a value between -pi and pi the sign 
  964: 
  965:           of which is determined by y. $x and $y can be pure numbers</p></td>
  966: 
  967:       <td width=101 valign=top class="Normal">&nbsp; </td>
  968: 
  969:     </tr>
  970: 
  971:     <tr> 
  972: 
  973:       <td width=131 valign=top class="Normal"> <p>log(x), log10(x)</p></td>
  974: 
  975:       <td width=134 valign=top class="Normal"> <p>&amp;log($x), &amp;log10($x)</p></td>
  976: 
  977:       <td width=147 valign=top class="Normal"> <p>Natural and base-10 logarithm. 
  978: 
  979:           $x can be a pure number</p></td>
  980: 
  981:       <td width=101 valign=top class="Normal">&nbsp; </td>
  982: 
  983:     </tr>
  984: 
  985:     <tr> 
  986: 
  987:       <td width=131 valign=top class="Normal"> <p>exp(x), pow(x,y), sqrt(x)</p></td>
  988: 
  989:       <td width=134 valign=top class="Normal"> <p>&amp;exp($x), &amp;pow($x,$y), 
  990: 
  991:           &amp;sqrt($x)</p></td>
  992: 
  993:       <td width=147 valign=top class="Normal"> <p>Exponential, power and square 
  994: 
  995:           root, i.e.,e<sup>x</sup>, x<sup>y</sup> and /x. $x and $y can be pure 
  996: 
  997:           numbers</p></td>
  998: 
  999:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1000: 
 1001:     </tr>
 1002: 
 1003:     <tr> 
 1004: 
 1005:       <td width=131 valign=top class="Normal"> <p>abs(x), sgn(x)</p></td>
 1006: 
 1007:       <td width=134 valign=top class="Normal"> <p>&amp;abs($x), &amp;sgn($x)</p></td>
 1008: 
 1009:       <td width=147 valign=top class="Normal"> <p>Abs takes the absolute value 
 1010: 
 1011:           of x while sgn(x) returns 1, 0 or -1 depending on the value of x. For 
 1012: 
 1013:           x&gt;0, sgn(x) = 1, for x=0, sgn(x) = 0 and for x&lt;0, sgn(x) = -1. 
 1014: 
 1015:           $x can be a pure number</p></td>
 1016: 
 1017:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1018: 
 1019:     </tr>
 1020: 
 1021:     <tr> 
 1022: 
 1023:       <td width=131 valign=top class="Normal"> <p>erf(x), erfc(x)</p></td>
 1024: 
 1025:       <td width=134 valign=top class="Normal"> <p>&amp;erf($x), &amp;erfc($x)</p></td>
 1026: 
 1027:       <td width=147 valign=top class="Normal"> <p>Error function.&nbsp; erf = 
 1028: 
 1029:           2/sqrt(pi) integral (0,x) e<sup>t-sq</sup> and <i>erfx(x)</i><span style='font-style:normal'> 
 1030: 
 1031:           = 1.0 - </span><i>erf(x)</i><span
 1032: 
 1033:   style='font-style:normal'>.&nbsp; $x can be a pure number</span></p></td>
 1034: 
 1035:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1036: 
 1037:     </tr>
 1038: 
 1039:     <tr> 
 1040: 
 1041:       <td width=131 valign=top class="Normal"> <p>ceil(x), floor(x)</p></td>
 1042: 
 1043:       <td width=134 valign=top class="Normal"> <p>&amp;ceil($x), &amp;floor($x)</p></td>
 1044: 
 1045:       <td width=147 valign=top class="Normal"> <p>Ceil function returns an integer 
 1046: 
 1047:           rounded up whereas floor function returns and integer rounded down. 
 1048: 
 1049:           If x is an integer than it returns the value of the integer. $x can 
 1050: 
 1051:           be a pure number</p></td>
 1052: 
 1053:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1054: 
 1055:     </tr>
 1056: 
 1057:     <tr> 
 1058: 
 1059:       <td width=131 valign=top class="Normal"> <p>min(...), max(...)</p></td>
 1060: 
 1061:       <td width=134 valign=top class="Normal"> <p>&amp;min(...), &amp;max(...)</p></td>
 1062: 
 1063:       <td width=147 valign=top class="Normal"> <p>Returns the minimum/ maximum 
 1064: 
 1065:           value of a list of arguments if the arguments are numbers. If the arguments 
 1066: 
 1067:           are strings then it returns a string sorted according to the ASCII codes</p></td>
 1068: 
 1069:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1070: 
 1071:     </tr>
 1072: 
 1073:     <tr> 
 1074: 
 1075:       <td width=131 valign=top class="Normal"> <p>factorial(n)</p></td>
 1076: 
 1077:       <td width=134 valign=top class="Normal"> <p>&amp;factorial($n)</p></td>
 1078: 
 1079:       <td width=147 valign=top class="Normal"> <p>Argument (n) must be an integer 
 1080: 
 1081:           else it will round down. The largest value for n is 170. $n can be a 
 1082: 
 1083:           pure number</p></td>
 1084: 
 1085:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1086: 
 1087:     </tr>
 1088: 
 1089:     <tr> 
 1090: 
 1091:       <td width=131 valign=top class="Normal"> <p>N%M</p></td>
 1092: 
 1093:       <td width=134 valign=top class="Normal"> <p>$N%$M</p></td>
 1094: 
 1095:       <td width=147 valign=top class="Normal"> <p>N and M are integers and returns 
 1096: 
 1097:           the remainder (in integer) of N/M. $N and $M can be pure numbers</p></td>
 1098: 
 1099:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1100: 
 1101:     </tr>
 1102: 
 1103:     <tr> 
 1104: 
 1105:       <td width=131 valign=top class="Normal"> <p>sinh(x), cosh(x), tanh(x)</p></td>
 1106: 
 1107:       <td width=134 valign=top class="Normal"> <p>&amp;sinh($x), &amp;cosh($x), 
 1108: 
 1109:           &amp;tanh($x)</p></td>
 1110: 
 1111:       <td width=147 valign=top class="Normal"> <p>Hyperbolic functions. $x can 
 1112: 
 1113:           be a pure number</p></td>
 1114: 
 1115:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1116: 
 1117:     </tr>
 1118: 
 1119:     <tr> 
 1120: 
 1121:       <td width=131 valign=top class="Normal"> <p>asinh(x), acosh(x), atanh(x)</p></td>
 1122: 
 1123:       <td width=134 valign=top class="Normal"> <p>&amp;asinh($x), &amp;acosh($x), 
 1124: 
 1125:           &amp;atanh($x)</p></td>
 1126: 
 1127:       <td width=147 valign=top class="Normal"> <p>Inverse hyperbolic functions. 
 1128: 
 1129:           $x can be a pure number</p></td>
 1130: 
 1131:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1132: 
 1133:     </tr>
 1134: 
 1135:     <tr> 
 1136: 
 1137:       <td width=131 valign=top class="Normal"> <p>/DIS($x,&quot;nn&quot;)</p></td>
 1138: 
 1139:       <td width=134 valign=top class="Normal"> <p>&amp;format($x,&quot;nn&quot;)</p></td>
 1140: 
 1141:       <td width=147 valign=top class="Normal"> <p>Display or format $x as nn where 
 1142: 
 1143:           nn is nF or nE and n is an integer.</p></td>
 1144: 
 1145:       <td width=101 valign=top class="Normal"> <p>&nbsp;The difference is obvious.</p></td>
 1146: 
 1147:     </tr>
 1148: 
 1149:     <tr> 
 1150: 
 1151:       <td width=131 valign=top class="Normal"> <p>Not in CAPA</p></td>
 1152: 
 1153:       <td width=134 valign=top class="Normal"> <p>&amp;prettyprint($x,&quot;nn&quot;)</p></td>
 1154: 
 1155:       <td width=147 valign=top class="Normal"> <p>Display or format $x as nn where 
 1156: 
 1157:           nn is nF or nE and n is an integer. In E mode it will attempt to generate 
 1158: 
 1159:           a pretty x10^3 rather than a E3 following the number</p></td>
 1160: 
 1161:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1162: 
 1163:     </tr>
 1164: 
 1165:     <tr> 
 1166: 
 1167:       <td width=131 valign=top class="Normal"> <p>roundto(x,n)</p></td>
 1168: 
 1169:       <td width=134 valign=top class="Normal"> <p>&amp;roundto($x,$n)</p></td>
 1170: 
 1171:       <td width=147 valign=top class="Normal"> <p>Rounds a real number to n decimal 
 1172: 
 1173:           points. $x and $n can be pure numbers</p></td>
 1174: 
 1175:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1176: 
 1177:     </tr>
 1178: 
 1179:     <tr> 
 1180: 
 1181:       <td width=131 valign=top class="Normal"> <p>web(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;) 
 1182: 
 1183:           or web(a,b,c)</p></td>
 1184: 
 1185:       <td width=134 valign=top class="Normal"> <p>&amp;web(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;) 
 1186: 
 1187:           or &amp;web($a,$b,$c)</p></td>
 1188: 
 1189:       <td width=147 valign=top class="Normal"> <p>Returns either a, b or c depending 
 1190: 
 1191:           on the output medium. a is for plain ASCII, b for tex output and c for 
 1192: 
 1193:           html output</p></td>
 1194: 
 1195:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1196: 
 1197:     </tr>
 1198: 
 1199:     <tr> 
 1200: 
 1201:       <td width=131 valign=top class="Normal"> <p>html(&quot;a&quot;) or html(a)</p></td>
 1202: 
 1203:       <td width=134 valign=top class="Normal"> <p>&amp;html(&quot;a&quot;) or 
 1204: 
 1205:           &amp;html($a)</p></td>
 1206: 
 1207:       <td width=147 valign=top class="Normal"> <p>Output only if the output mode 
 1208: 
 1209:           chosen is in html format</p></td>
 1210: 
 1211:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1212: 
 1213:     </tr>
 1214: 
 1215:     <tr> 
 1216: 
 1217:       <td width=131 valign=top class="Normal"> <p>jn(m,x)</p></td>
 1218: 
 1219:       <td width=134 valign=top class="Normal"> <p>&amp;j0($x), &amp;j1($x), &amp;jn($m,$x), 
 1220: 
 1221:           &amp;jv($y,$x)</p></td>
 1222: 
 1223:       <td width=147 valign=top class="Normal"> <p>Bessel functions of the first 
 1224: 
 1225:           kind with orders 0, 1 and m respectively. For jn(m,x), m must be an 
 1226: 
 1227:           integer whereas for jv(y,x), y is real. $x can be a pure number. $m 
 1228: 
 1229:           must be an integer and can be a pure integer number. $y can be a pure 
 1230: 
 1231:           real number</p></td>
 1232: 
 1233:       <td width=101 valign=top class="Normal"> <p>In CAPA, j0, j1 and jn are contained 
 1234: 
 1235:           in one function, jn(m,x) where m takes the value of 0, 1 or 2. jv(y,x) 
 1236: 
 1237:           is new to LON-CAPA.</p></td>
 1238: 
 1239:     </tr>
 1240: 
 1241:     <tr> 
 1242: 
 1243:       <td width=131 valign=top class="Normal"> <p>yn(m,x)</p></td>
 1244: 
 1245:       <td width=134 valign=top class="Normal"> <p>&amp;y0($x), &amp;y1($x), &amp;yn($m,$x), 
 1246: 
 1247:           &amp;yv($y,$x)</p></td>
 1248: 
 1249:       <td width=147 valign=top class="Normal"> <p>Bessel functions of the second 
 1250: 
 1251:           kind with orders 0, 1 and m respectively. For yn(m,x), m must be an 
 1252: 
 1253:           integer whereas for yv(y,x), y is real. $x can be a pure number. $m 
 1254: 
 1255:           must be an integer and can be a pure integer number. $y can be a pure 
 1256: 
 1257:           real number</p></td>
 1258: 
 1259:       <td width=101 valign=top class="Normal"> <p>In CAPA, y0, y1 and yn are contained 
 1260: 
 1261:           in one function, yn(m,x) where m takes the value of 0, 1 or 2. yv(y,x) 
 1262: 
 1263:           is new to LON-CAPA.</p></td>
 1264: 
 1265:     </tr>
 1266: 
 1267:     <tr> 
 1268: 
 1269:       <td width=131 valign=top class="Normal"> <p>random(l,u,d)</p></td>
 1270: 
 1271:       <td width=134 valign=top class="Normal"> <p>&amp;random($l,$u,$d)</p></td>
 1272: 
 1273:       <td width=147 valign=top class="Normal"> <p>Returns a uniformly distributed 
 1274: 
 1275:           random number between the lower bound, l and upper bound, u in steps 
 1276: 
 1277:           of d. $l, $u and $d can be pure numbers</p></td>
 1278: 
 1279:       <td width=101 valign=top class="Normal"> <p>In CAPA, all the 3 arguments 
 1280: 
 1281:           must be of the same type. However, now you can mix the type</p></td>
 1282: 
 1283:     </tr>
 1284: 
 1285:     <tr> 
 1286: 
 1287:       <td width=131 valign=top class="Normal"> <p>choose(i,...)</p></td>
 1288: 
 1289:       <td width=134 valign=top class="Normal"> <p>&amp;choose($i,...)</p></td>
 1290: 
 1291:       <td width=147 valign=top class="Normal"> <p>Choose the ith item from the 
 1292: 
 1293:           argument list. i must be an integer greater than 0 and the value of 
 1294: 
 1295:           i should not exceed the number of items. $i can be a pure integer</p></td>
 1296: 
 1297:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1298: 
 1299:     </tr>
 1300: 
 1301:     <tr> 
 1302: 
 1303:       <td width=131 valign=top class="Normal"> <p>/MAP(seed;w,x,y,z;a,b,c,d)</p></td>
 1304: 
 1305:       <td width=134 valign=top class="Normal"> <p>Option 1 - &amp;map($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d]) 
 1306: 
 1307:           or <br>
 1308: 
 1309:           Option 2 - &amp;map($seed,\@mappedArray,[$a,$b,$c,$d]) <br>
 1310: 
 1311:           Option 3 - @mappedArray = &amp;map($seed,[$a,$b,$c,$d]) <br>
 1312: 
 1313:           Option 4 - ($w,$x,$y,$z) = &amp;map($seed,\@a) <br>
 1314: 
 1315:           where $a='A'<br>
 1316: 
 1317:           $b='B'<br>
 1318: 
 1319:           $c='B'<br>
 1320: 
 1321:           $d='B'<br>
 1322: 
 1323:           $w, $x, $y, and $z are variables</p></td>
 1324: 
 1325:       <td width=147 valign=top class="Normal"> <p>Assigns to the variables $w, 
 1326: 
 1327:           $x, $y and $z the values of the $a, $b, $c and $c (A, B, C and D). The 
 1328: 
 1329:           precise value for $w .. depends on the seed. (Option 1 of calling map). 
 1330: 
 1331:           In option 2, the values of $a, $b .. are mapped into the array, @mappedArray. 
 1332: 
 1333:           The two options illustrate the different grouping. Options 3 and 4 give 
 1334: 
 1335:           a consistent way (with other functions) of mapping the items. For each 
 1336: 
 1337:           option, the group can be passed as an array, for example, [$a,$b,$c,$d] 
 1338: 
 1339:           =&gt; \@a.</p></td>
 1340: 
 1341:       <td width=101 valign=top class="Normal"> <p>In CAPA, the arguments are divided 
 1342: 
 1343:           into three groups separated by a semicolon ;. In LON-CAPA, the separation 
 1344: 
 1345:           is done by using [] brackets or using an array @a. Note the backslash 
 1346: 
 1347:           (\) before the arguments in the second and third groups.</p></td>
 1348: 
 1349:     </tr>
 1350: 
 1351:     <tr> 
 1352: 
 1353:       <td width=131 valign=top class="Normal"> <p>rmap(seed;a,b,c,d;w,x,y,z)</p></td>
 1354: 
 1355:       <td width=134 valign=top class="Normal"> <p>Option 1 - &amp;rmap($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d]) 
 1356: 
 1357:           or <br>
 1358: 
 1359:           Option 2 - &amp;rmap($seed,\@rmappedArray,[$a,$b,$c,$d]) <br>
 1360: 
 1361:           Option 3 - @rmapped_array = &amp;rmap($seed,[$a,$b,$c,$d]) <br>
 1362: 
 1363:           Option 4 - ($w,$x,$y,$z) = &amp;rmap($seed,\@a) <br>
 1364: 
 1365:           where $a='A'<br>
 1366: 
 1367:           $b='B'<br>
 1368: 
 1369:           $c='B'<br>
 1370: 
 1371:           $d='B'<br>
 1372: 
 1373:           $w, $x, $y, and $z are variables</p></td>
 1374: 
 1375:       <td width=147 valign=top class="Normal"> <p>The rmap functions does the 
 1376: 
 1377:           reverse action of map if the same seed is used in calling map and rmap. 
 1378: 
 1379:         </p></td>
 1380: 
 1381:       <td width=101 valign=top class="Normal"> <p>In CAPA, the arguments are divided 
 1382: 
 1383:           into three groups separated by a semicolon ;. In LON-CAPA, the separation 
 1384: 
 1385:           is done by using [] brackets (with create an unamed vector reference) 
 1386: 
 1387:           or using an array @a. Note the backslash (\) before the arguments in 
 1388: 
 1389:           the second and third groups (Which cause Perl to send to variable locations 
 1390: 
 1391:           rather than the variable values, similar to a C pointer).</p></td>
 1392: 
 1393:     </tr>
 1394: 
 1395:     <tr> 
 1396: 
 1397:       <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
 1398: 
 1399:       <td width=134 valign=top class="Normal"> <p>$a=&amp;xmlparse($string) </p></td>
 1400: 
 1401:       <td width=147 valign=top class="Normal"> <p>Runs the internal parser over 
 1402: 
 1403:           the argument parsing for display. <b>Warning</b><span style='font-weight:normal'> 
 1404: 
 1405:           This will result in different strings in different targets. Don't use 
 1406: 
 1407:           the results of this function as an answer.</span></p></td>
 1408: 
 1409:       <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
 1410: 
 1411:     </tr>
 1412: 
 1413:     <tr> 
 1414: 
 1415:       <td width=131 valign=top class="Normal"> <p>tex(a,b), tex(&quot;a&quot;,&quot;b&quot;)</p></td>
 1416: 
 1417:       <td width=134 valign=top class="Normal"> <p>&amp;tex($a,$b), &amp;tex(&quot;a&quot;,&quot;b&quot;)</p></td>
 1418: 
 1419:       <td width=147 valign=top class="Normal"> <p>Returns a if the output mode 
 1420: 
 1421:           is in tex otherwise returns b</p></td>
 1422: 
 1423:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1424: 
 1425:     </tr>
 1426: 
 1427:     <tr> 
 1428: 
 1429:       <td width=131 valign=top class="Normal"> <p>var_in_tex(a)</p></td>
 1430: 
 1431:       <td width=134 valign=top class="Normal"> <p>&amp;var_in_tex($a)</p></td>
 1432: 
 1433:       <td width=147 valign=top class="Normal"> <p>Equivalent to tex(&quot;a&quot;,&quot;&quot;)</p></td>
 1434: 
 1435:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1436: 
 1437:     </tr>
 1438: 
 1439:     <tr> 
 1440: 
 1441:       <td width=131 valign=top class="Normal"> <p>to_string(x), to_string(x,y)</p></td>
 1442: 
 1443:       <td width=134 valign=top class="Normal"> <p>&amp;to_string($x), &amp;to_string($x,$y)</p></td>
 1444: 
 1445:       <td width=147 valign=top class="Normal"> <p>If x is an integer, returns 
 1446: 
 1447:           a string. If x is real than the output is a string with format given 
 1448: 
 1449:           by y. For example, if x = 12.3456, &amp;to_string(x,&quot;.3F&quot;) 
 1450: 
 1451:           = 12.345 and &amp;to_string(x,&quot;.3E&quot;) = 1.234E+01.</p></td>
 1452: 
 1453:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1454: 
 1455:     </tr>
 1456: 
 1457:     <tr> 
 1458: 
 1459:       <td width=131 valign=top class="Normal"> <p>capa_id(), class(), section(), 
 1460: 
 1461:           set(), problem()</p></td>
 1462: 
 1463:       <td width=134 valign=top class="Normal"> <p>&amp;class(), &amp;section()</p></td>
 1464: 
 1465:       <td width=147 valign=top class="Normal"> <p>Returns null string, class descriptive 
 1466: 
 1467:           name, section number, set number and null string.</p></td>
 1468: 
 1469:       <td width=101 valign=top class="Normal"> <p>capa_id(), set() and problem() 
 1470: 
 1471:           are no longer used. Currently, they return a null value.</p></td>
 1472: 
 1473:     </tr>
 1474: 
 1475:     <tr> 
 1476: 
 1477:       <td width=131 valign=top class="Normal"> <p>name(), student_number()</p></td>
 1478: 
 1479:       <td width=134 valign=top class="Normal"> <p>&amp;name(), &amp;student_number()</p></td>
 1480: 
 1481:       <td width=147 valign=top class="Normal"> <p>Return the full name in the 
 1482: 
 1483:           following format: lastname, firstname initial. Student_number returns 
 1484: 
 1485:           the student 9-alphanumeric string. If undefined, the functions return 
 1486: 
 1487:           null.</p></td>
 1488: 
 1489:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1490: 
 1491:     </tr>
 1492: 
 1493:     <tr> 
 1494: 
 1495:       <td width=131 valign=top class="Normal"> <p>open_date(), due_date(), answer_date()</p></td>
 1496: 
 1497:       <td width=134 valign=top class="Normal"> <p>&amp;open_date(), &amp;due_date(), 
 1498: 
 1499:           &amp;answer_date()</p></td>
 1500: 
 1501:       <td width=147 valign=top class="Normal"> <p>Problem open date, due date 
 1502: 
 1503:           and answer date. The time is also included in 24-hr format.</p></td>
 1504: 
 1505:       <td width=101 valign=top class="Normal"> <p>Output format for time is changed 
 1506: 
 1507:           slightly. If pass noon, it displays ..pm else it displays ..am. So 23:59 
 1508: 
 1509:           is displayed as 11:59 pm.</p></td>
 1510: 
 1511:     </tr>
 1512: 
 1513:     <tr> 
 1514: 
 1515:       <td width=131 valign=top class="Normal"> <p>get_seed(), set_seed()</p></td>
 1516: 
 1517:       <td width=134 valign=top class="Normal"> <p>Not implemented</p></td>
 1518: 
 1519:       <td width=147 valign=top class="Normal"> <p>Get and set the random seed.</p></td>
 1520: 
 1521:       <td width=101 valign=top class="Normal">&nbsp; </td>
 1522: 
 1523:     </tr>
 1524: 
 1525:     <tr> 
 1526: 
 1527:       <td width=131 valign=top class="Normal"> <p>sub_string(a,b,c)</p></td>
 1528: 
 1529:       <td width=134 valign=top class="Normal"> <p>&amp;sub_string($a,$b,$c) <br>
 1530: 
 1531:           perl&nbsp; substr function. However, note the differences</p></td>
 1532: 
 1533:       <td width=147 valign=top class="Normal"> <p>Retrieve a portion of string 
 1534: 
 1535:           a starting from b and length c. For example,&nbsp; $a = &quot;Welcome 
 1536: 
 1537:           to LON-CAPA&quot;; $result=&amp;sub_string($a,4,4); then $result is 
 1538: 
 1539:           &quot;come&quot;</p></td>
 1540: 
 1541:       <td width=101 valign=top class="Normal"> <p>Perl intrinsic function, substr(string,b,c) 
 1542: 
 1543:           starts counting from 0 (as opposed to 1). In the example to the left, 
 1544: 
 1545:           substr($a,4,4) returns &quot;ome &quot;.</p></td>
 1546: 
 1547:     </tr>
 1548: 
 1549:     <tr> 
 1550: 
 1551:       <td width=131 valign=top class="Normal"> <p>array[xx]</p></td>
 1552: 
 1553:       <td width=134 valign=top class="Normal"> <p>@arrayname <br>
 1554: 
 1555:           Array is intrinsic in perl. To access a specific element use $arrayname[$n] 
 1556: 
 1557:           where $n is the $n+1 element since the array count starts from 0</p></td>
 1558: 
 1559:       <td width=147 valign=top class="Normal"> <p>&quot;xx&quot; can be a variable 
 1560: 
 1561:           or a calculation.</p></td>
 1562: 
 1563:       <td width=101 valign=top class="Normal"> <p>In LON-CAPA, an array is defined 
 1564: 
 1565:           by @arrayname. It is not necessary to specify the dimension of the array.&nbsp;</p></td>
 1566: 
 1567:     </tr>
 1568: 
 1569:     <tr> 
 1570: 
 1571:       <td width=131 valign=top class="Normal"> <p>array_moments(B,A)</p></td>
 1572: 
 1573:       <td width=134 valign=top class="Normal"> <p>@B=&amp;array_moments(@A)</p></td>
 1574: 
 1575:       <td width=147 valign=top class="Normal"> <p>Evaluates the moments of an 
 1576: 
 1577:           array A and place the result in array B[i] where i = 0 to 4. The contents 
 1578: 
 1579:           of B are as follows: B[0] = number of elements, B[1] = mean, B[2] = 
 1580: 
 1581:           variance, B[3] = skewness and B[4] = kurtosis.</p></td>
 1582: 
 1583:       <td width=101 valign=top class="Normal"> <p>In CAPA, the moments are passed 
 1584: 
 1585:           as an array in the first argument whereas in LON-CAPA, the array containing 
 1586: 
 1587:           the moments are set equal to the function.</p></td>
 1588: 
 1589:     </tr>
 1590: 
 1591:     <tr> 
 1592: 
 1593:       <td width=131 valign=top class="Normal"> <p>array_max(Name), array_min(Name)</p></td>
 1594: 
 1595:       <td width=134 valign=top class="Normal"> <p>&amp;min(@Name), &amp;max(@Name)</p></td>
 1596: 
 1597:       <td width=147 valign=top class="Normal"> <p>In LON-CAPA to find the maximum 
 1598: 
 1599:           value of an array, use &amp;max(@arrayname)&nbsp; and to find the minimum 
 1600: 
 1601:           value of an array, use &amp;min(@arrayname)</p></td>
 1602: 
 1603:       <td width=101 valign=top class="Normal"> <p>Combined with the min and max 
 1604: 
 1605:           functions defined earlier.</p></td>
 1606: 
 1607:     </tr>
 1608: 
 1609:     <tr> 
 1610: 
 1611:       <td width=131 valign=top class="Normal"> <p>init_array(Name)</p></td>
 1612: 
 1613:       <td width=134 valign=top class="Normal"> <p>undef @name</p></td>
 1614: 
 1615:       <td width=147 valign=top class="Normal"> <p>To destroy the contents of an 
 1616: 
 1617:           array, use</p></td>
 1618: 
 1619:       <td width=101 valign=top class="Normal"> <p>Use perl intrinsic undef function.</p></td>
 1620: 
 1621:     </tr>
 1622: 
 1623:     <tr> 
 1624: 
 1625:       <td width=131 valign=top class="Normal"> <p>random_normal (return_array,item_cnt,seed,av,std_dev)</p></td>
 1626: 
 1627:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_normal 
 1628: 
 1629:           ($item_cnt,$seed,$av,$std_dev)</p></td>
 1630: 
 1631:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1632: 
 1633:           of normal distribution of average $av and standard deviation $std_dev. 
 1634: 
 1635:           The distribution is generated from seed $seed</p></td>
 1636: 
 1637:       <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
 1638: 
 1639:           as the first argument whereas in LON-CAPA the results are set equal 
 1640: 
 1641:           to the function.</p></td>
 1642: 
 1643:     </tr>
 1644: 
 1645:     <tr> 
 1646: 
 1647:       <td width=131 valign=top class="Normal"> <p>random_beta (return_array,item_cnt,seed,aa,bb)</p></td>
 1648: 
 1649:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_beta 
 1650: 
 1651:           ($item_cnt,$seed,$aa,$bb) <br>
 1652: 
 1653:           NOTE: Both $aa and $bb MUST be greater than 1.0E-37.</p></td>
 1654: 
 1655:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1656: 
 1657:           of beta distribution. The density of beta is: X^($aa-1) *(1-X)^($bb-1) 
 1658: 
 1659:           /B($aa,$bb) for 0&lt;X&lt;1.</p></td>
 1660: 
 1661:       <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
 1662: 
 1663:           as the first argument whereas in LON-CAPA the results are set equal 
 1664: 
 1665:           to the function.</p></td>
 1666: 
 1667:     </tr>
 1668: 
 1669:     <tr> 
 1670: 
 1671:       <td width=131 valign=top class="Normal"> <p>random_gamma (return_array,item_cnt,seed,a,r)</p></td>
 1672: 
 1673:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_gamma 
 1674: 
 1675:           ($item_cnt,$seed,$a,$r) <br>
 1676: 
 1677:           NOTE: Both $a and $r MUST be positive.</p></td>
 1678: 
 1679:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1680: 
 1681:           of gamma distribution. The density of gamma is: ($a**$r)/gamma($r) * 
 1682: 
 1683:           X**($r-1) * exp(-$a*X).</p></td>
 1684: 
 1685:       <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
 1686: 
 1687:           as the first argument whereas in LON-CAPA the results are set equal 
 1688: 
 1689:           to the function.</p></td>
 1690: 
 1691:     </tr>
 1692: 
 1693:     <tr> 
 1694: 
 1695:       <td width=131 valign=top class="Normal"> <p>random_exponential (return_array,item_cnt,seed,av)</p></td>
 1696: 
 1697:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_exponential 
 1698: 
 1699:           ($item_cnt,$seed,$av) <br>
 1700: 
 1701:           NOTE: $av MUST be non-negative.</p></td>
 1702: 
 1703:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1704: 
 1705:           of exponential distribution. </p></td>
 1706: 
 1707:       <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
 1708: 
 1709:           as the first argument whereas in LON-CAPA the results are set equal 
 1710: 
 1711:           to the function.</p></td>
 1712: 
 1713:     </tr>
 1714: 
 1715:     <tr> 
 1716: 
 1717:       <td width=131 valign=top class="Normal"> <p>random_poisson (return_array,item_cnt,seed,mu)</p></td>
 1718: 
 1719:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_poisson 
 1720: 
 1721:           ($item_cnt,$seed,$mu) <br>
 1722: 
 1723:           NOTE: $mu MUST be non-negative.</p></td>
 1724: 
 1725:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1726: 
 1727:           of poisson distribution. </p></td>
 1728: 
 1729:       <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
 1730: 
 1731:           as the first argument whereas in LON-CAPA the results are set equal 
 1732: 
 1733:           to the function.</p></td>
 1734: 
 1735:     </tr>
 1736: 
 1737:     <tr> 
 1738: 
 1739:       <td width=131 valign=top class="Normal"> <p>random_chi (return_array,item_cnt,seed,df)</p></td>
 1740: 
 1741:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_chi 
 1742: 
 1743:           ($item_cnt,$seed,$df) <br>
 1744: 
 1745:           NOTE: $df MUST be positive.</p></td>
 1746: 
 1747:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1748: 
 1749:           of chi_square distribution with $df degrees of freedom. </p></td>
 1750: 
 1751:       <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
 1752: 
 1753:           as the first argument whereas in LON-CAPA the results are set equal 
 1754: 
 1755:           to the function.</p></td>
 1756: 
 1757:     </tr>
 1758: 
 1759:     <tr> 
 1760: 
 1761:       <td width=131 valign=top class="Normal"> <p>random_noncentral_chi (return_array,item_cnt,seed,df,nonc)</p></td>
 1762: 
 1763:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_noncentral_chi 
 1764: 
 1765:           ($item_cnt,$seed,$df,$nonc) <br>
 1766: 
 1767:           NOTE: $df MUST be at least 1 and $nonc MUST be non-negative.</p></td>
 1768: 
 1769:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1770: 
 1771:           of noncentral_chi_square distribution with $df degrees of freedom and 
 1772: 
 1773:           noncentrality parameter $nonc. </p></td>
 1774: 
 1775:       <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
 1776: 
 1777:           as the first argument whereas in LON-CAPA the results are set equal 
 1778: 
 1779:           to the function.</p></td>
 1780: 
 1781:     </tr>
 1782: 
 1783:     <tr> 
 1784: 
 1785:       <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
 1786: 
 1787:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_f 
 1788: 
 1789:           ($item_cnt,$seed,$dfn,$dfd) <br>
 1790: 
 1791:           NOTE: Both $dfn and $dfd MUST be positive.</p></td>
 1792: 
 1793:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1794: 
 1795:           of F (variance ratio) distribution with degrees of freedom $dfn (numerator) 
 1796: 
 1797:           and $dfd (denominator). </p></td>
 1798: 
 1799:       <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
 1800: 
 1801:     </tr>
 1802: 
 1803:     <tr> 
 1804: 
 1805:       <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
 1806: 
 1807:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_noncentral_f 
 1808: 
 1809:           ($item_cnt,$seed,$dfn,$dfd,$nonc) <br>
 1810: 
 1811:           NOTE: $dfn must be at least 1, $dfd MUST be positive, and $nonc must 
 1812: 
 1813:           be non-negative.</p></td>
 1814: 
 1815:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1816: 
 1817:           of noncentral F (variance ratio) distribution with degrees of freedom 
 1818: 
 1819:           $dfn (numerator) and $dfd (denominator). $nonc is the noncentrality 
 1820: 
 1821:           parameter. </p></td>
 1822: 
 1823:       <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
 1824: 
 1825:     </tr>
 1826: 
 1827:     <tr> 
 1828: 
 1829:       <td width=131 valign=top class="Normal"> <p>NOT DOCUMENTED IN CAPA</p></td>
 1830: 
 1831:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_multivariate_normal 
 1832: 
 1833:           ($item_cnt,$seed,\@mean,\@covar) <br>
 1834: 
 1835:           NOTE: @mean should be of length p array of real numbers. @covar should 
 1836: 
 1837:           be a length p array of references to length p arrays of real numbers 
 1838: 
 1839:           (i.e. a p by p matrix.</p></td>
 1840: 
 1841:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1842: 
 1843:           of multivariate_normal distribution with mean vector @mean and variance-covariance 
 1844: 
 1845:           matrix. </p></td>
 1846: 
 1847:       <td width=101 valign=top class="Normal"> <p>Note the backslash before the 
 1848: 
 1849:           @mean and @covar arrays.</p></td>
 1850: 
 1851:     </tr>
 1852: 
 1853:     <tr> 
 1854: 
 1855:       <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
 1856: 
 1857:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_multinomial 
 1858: 
 1859:           ($item_cnt,$seed,@p) <br>
 1860: 
 1861:           NOTE: $item_cnt is rounded with int() and the result must be non-negative. 
 1862: 
 1863:           The number of elements in @p must be at least 2.</p></td>
 1864: 
 1865:       <td width=147 valign=top class="Normal"> <p>Returns single observation from 
 1866: 
 1867:           multinomial distribution with $item_cnt events classified into as many 
 1868: 
 1869:           categories as the length of @p. The probability of an event being classified 
 1870: 
 1871:           into category i is given by ith element of @p. The observation is an 
 1872: 
 1873:           array with length equal to @p, so when called in a scalar context it 
 1874: 
 1875:           returns the length of @p. The sum of the elements of the obervation 
 1876: 
 1877:           is equal to $item_cnt.</p></td>
 1878: 
 1879:       <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
 1880: 
 1881:     </tr>
 1882: 
 1883:     <tr> 
 1884: 
 1885:       <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
 1886: 
 1887:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_permutation 
 1888: 
 1889:           ($item_cnt,@array) </p></td>
 1890: 
 1891:       <td width=147 valign=top class="Normal"> <p>Returns @array randomly permuted.</p></td>
 1892: 
 1893:       <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
 1894: 
 1895:     </tr>
 1896: 
 1897:     <tr> 
 1898: 
 1899:       <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
 1900: 
 1901:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_uniform 
 1902: 
 1903:           ($item_cnt,$seed,$low,$high) <br>
 1904: 
 1905:           NOTE: $low must be less than or equal to $high.</p></td>
 1906: 
 1907:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1908: 
 1909:           from a uniform distribution. </p></td>
 1910: 
 1911:       <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
 1912: 
 1913:     </tr>
 1914: 
 1915:     <tr> 
 1916: 
 1917:       <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
 1918: 
 1919:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_uniform_integer 
 1920: 
 1921:           ($item_cnt,$seed,$low,$high) <br>
 1922: 
 1923:           NOTE: $low and $high are both passed through int(). $low must be less 
 1924: 
 1925:           than or equal to $high.</p></td>
 1926: 
 1927:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1928: 
 1929:           from a uniform distribution in integers. </p></td>
 1930: 
 1931:       <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
 1932: 
 1933:     </tr>
 1934: 
 1935:     <tr> 
 1936: 
 1937:       <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
 1938: 
 1939:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_binomial 
 1940: 
 1941:           ($item_cnt,$seed,$nt,$p) <br>
 1942: 
 1943:           NOTE: $nt is rounded using int() and the result must be non-negative. 
 1944: 
 1945:           $p must be between 0 and 1 inclusive.</p></td>
 1946: 
 1947:       <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
 1948: 
 1949:           from the binomial distribution with $nt trials and the probabilty of 
 1950: 
 1951:           an event in each trial is $p. </p></td>
 1952: 
 1953:       <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
 1954: 
 1955:     </tr>
 1956: 
 1957:     <tr> 
 1958: 
 1959:       <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
 1960: 
 1961:       <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_negative_binomial 
 1962: 
 1963:           ($item_cnt,$seed,$ne,$p) <br>
 1964: 
 1965:           NOTE: $ne is rounded using int() and the result must be positive. $p 
 1966: 
 1967:           must be between 0 and 1 exclusive.</p></td>
 1968: 
 1969:       <td width=147 valign=top class="Normal"> <p>Generate an array of $item_cnt 
 1970: 
 1971:           outcomes generated from negative binomial distribution with $ne events 
 1972: 
 1973:           and the probabilty of an event in each trial is $p. </p></td>
 1974: 
 1975:       <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
 1976: 
 1977:     </tr>
 1978: 
 1979:   </table>
 1980: 
 1981:   <h3><a name="_Toc421867130">&lt;script&gt; Variables</a></h3>
 1982: 
 1983:   <ul type=disc>
 1984: 
 1985:     <li>$external::target - set to the current target the xml parser is parsing 
 1986: 
 1987:       for </li>
 1988: 
 1989:     <li>$external::part - set to the <i>id</i><span style='font-style:normal'> 
 1990: 
 1991:       of the current problem &lt;part&gt;; zero if there are no &lt;part&gt; </span></li>
 1992: 
 1993:     <li>$external::gradestatus - set to the value of the current resource.partid.solved 
 1994: 
 1995:       value </li>
 1996: 
 1997:     <li>$external::datestatus - set to the current status of the clock either 
 1998: 
 1999:       CLOSED, CAN_ANSWER, CANNOT_ANSWER, SHOW_ANSWER, or UNCHECKEDOUT </li>
 2000: 
 2001:     <li>$external::randomseed - set to the number that was used to seed the random 
 2002: 
 2003:       number generator </li>
 2004: 
 2005:     <li>$pi - set to PI </li>
 2006: 
 2007:     <li>$rad2deg - converts radians to degrees </li>
 2008: 
 2009:     <li>$deg2rad - converts degrees to radians </li>
 2010: 
 2011:   </ul>
 2012: 
 2013:   <h3><a name="_Toc421867131">Form internals</a> </h3>
 2014: 
 2015:   <p>Form elements used for homework editing/response </p>
 2016: 
 2017:   <p>the form is named lonhomework </p>
 2018: 
 2019:   <h3><a name="_Toc421867132">Viewing a problem (either CSTR or RES space)</a></h3>
 2020: 
 2021:   <ul type=disc>
 2022: 
 2023:     <li>grade_target, grade_username, grade_domain, grade_symb - the vaules take 
 2024: 
 2025:       precedence over the the normal env settings of these, use &amp;Apache::lonxml::whichuser() 
 2026: 
 2027:       to get back the correct vaues of the items </li>
 2028: 
 2029:     <li>HWVAL_response:number - the name of the input elements for each response. 
 2030: 
 2031:       The response is the response's ID, and the :number part exists only for 
 2032: 
 2033:       response with multiple foils, and is a unique number in order of the submission 
 2034: 
 2035:     </li>
 2036: 
 2037:     <li>changerandseed - the 'Change' button, only exists right after the Change 
 2038: 
 2039:       button is clicked </li>
 2040: 
 2041:     <li>problemmode - in CSTR, it is either 'View','Edit','EditXML' or 'Analyze' 
 2042: 
 2043:       depending on the desired view </li>
 2044: 
 2045:     <li>rndseed - the currently requested random seed </li>
 2046: 
 2047:     <li>showallfoils - if it exists, and we are in CSTR space, the problem should 
 2048: 
 2049:       ignore &lt;conceptgroup&gt; and the response's max setting and show all 
 2050: 
 2051:       possible foils </li>
 2052: 
 2053:     <li>submit - the name of the Submit button </li>
 2054: 
 2055:     <li>submitted - a hidden form parameter that can be used to tell if the student 
 2056: 
 2057:       has submitted answers or not, if it is set, there should be answers to grade. 
 2058: 
 2059:     </li>
 2060: 
 2061:   </ul>
 2062: 
 2063:   <h3><a name="_Toc421867133">Editing a problem (Edit mode)</a></h3>
 2064: 
 2065:   <p>tagdepth referes to the current value of the xmlparsers tagdepth couter ($Apache::lonxml::currentdepth)</p>
 2066: 
 2067:   <p>Note: the file edit.pm has many helper functions for creating the standard 
 2068: 
 2069:     elements for editing a tag and it's attributes, all of those functions follow 
 2070: 
 2071:     these conventions </p>
 2072: 
 2073:   <ul type=disc>
 2074: 
 2075:     <li>tagdepth_argname - I.E. 1_3.max, a parameter editing value, max is the 
 2076: 
 2077:       name of the parameter and it is for the third tag inside the first tag </li>
 2078: 
 2079:     <li>delete_tagdepth - if set to yes, delete tag tagdepth and all tags inside 
 2080: 
 2081:       of it </li>
 2082: 
 2083:     <li>homework_edit_tagdepth - used by both &amp;Apache::edit::editline and 
 2084: 
 2085:       &amp;Apache::edit::editfield for the &lt;textarea&gt; and &lt;input&gt; 
 2086: 
 2087:       form elements they create </li>
 2088: 
 2089:     <li>insert_tagdepth - used to request an tag insert, it is set to the id number 
 2090: 
 2091:       of the requested tag in the %Apache::lonxml::insertlist </li>
 2092: 
 2093:   </ul>
 2094: 
 2095:   <ul type=disc>
 2096: 
 2097:     <li> &nbsp; </li>
 2098: 
 2099:   </ul>
 2100: 
 2101:   <h3><a name="_Toc421867134">Symbs</a></h3>
 2102: 
 2103:   <p>To identify a specific instance of a resource, LON-CAPA uses symbols or Òsymbs.Ó 
 2104: 
 2105:     These identifiers are built from the URL of the map, the resource number of 
 2106: 
 2107:     the resource in the map, and the URL of the resource itself. The latter is 
 2108: 
 2109:     somewhat redundant, but might help if maps change.</p>
 2110: 
 2111:   <p>An example is</p>
 2112: 
 2113:   <p class=MsoHeader><span style='font-family:"Courier New"'>&nbsp;msu/korte/parts/part1.sequence___19___msu/korte/tests/part12.problem</span></p>
 2114: 
 2115:   <p class=MsoHeader>The respective map entry is</p>
 2116: 
 2117:   <p class=MsoHeader><span style='font-family:"Courier New"'>&nbsp;&lt;resource 
 2118: 
 2119:     id=&quot;19&quot; src=&quot;/res/msu/korte/tests/part12.problem&quot;&nbsp;&nbsp;&nbsp;&nbsp; 
 2120: 
 2121:     </span></p>
 2122: 
 2123:   <p class=MsoHeader><span style='font-family:"Courier New"'>&nbsp; title=&quot;Problem 
 2124: 
 2125:     2&quot;&gt;</span></p>
 2126: 
 2127:   <p class=MsoHeader><span style='font-family:"Courier New"'>&nbsp;&lt;/resource&gt;</span></p>
 2128: 
 2129:   <p class=MsoHeader>Symbs are used by the random number generator, as well as 
 2130: 
 2131:     to store and restore data specific to a certain instance of for example a 
 2132: 
 2133:     problem.</p>
 2134: 
 2135:   <h3><a name="_Toc421867135">Store / Restore</a></h3>
 2136: 
 2137:   <p><span style='color:black'>2 important functions in lonnet.pm are </span><span style='font-family:"Courier New";color:black'>&amp;Apache::lonnet::cstore()</span><span
 2138: 
 2139: style='color:black'> and </span><span style='font-family:"Courier New";
 2140: 
 2141: color:black'>&amp;Apache::lonnet:restore()</span><span style='color:black'> (and 
 2142: 
 2143:     </span><span style='font-family:"Courier New";color:black'>&amp;Apache::lonnet::store()</span><span
 2144: 
 2145: style='color:black'>, which is is the non-critical message twin of </span><span
 2146: 
 2147: style='font-family:"Courier New";color:black'>cstore</span><span
 2148: 
 2149: style='color:black'>). These functions are for handlers to store a perl hash to 
 2150: 
 2151:     a userÕs permanent data space in an easy manner, and to retrieve it again 
 2152: 
 2153:     on another call. It is expected that a handler would use this once at the 
 2154: 
 2155:     beginning to retrieve data, and then again once at the end to send only the 
 2156: 
 2157:     new data back. </span></p>
 2158: 
 2159:   <p><span style='color:black'>The data is stored in the userÕs data directory 
 2160: 
 2161:     on the userÕs homeserver under the ID of the course.</span></p>
 2162: 
 2163:   <p><span style='color:black'>The hash that is returned by </span><span
 2164: 
 2165: style='font-family:"Courier New";color:black'>restore</span><span
 2166: 
 2167: style='color:black'> will have all of the previous value for all of the elements 
 2168: 
 2169:     of the hash. </span></p>
 2170: 
 2171:   <p><span style='color:black'>Example: </span></p>
 2172: 
 2173:   <p><span style='font-family:"Courier New";color:black'>#creating a hash</span></p>
 2174: 
 2175:   <p><span style='font-family:"Courier New";color:black'>my %hash;</span></p>
 2176: 
 2177:   <p><span style='font-family:"Courier New";color:black'>$hash{'foo'}='bar';</span></p>
 2178: 
 2179:   <p><span style='font-family:"Courier New";color:black'>#storing it</span></p>
 2180: 
 2181:   <p><span style='font-family:"Courier New";color:black'>&amp;Apache::lonnet::cstore(\%hash);</span></p>
 2182: 
 2183:   <p><span style='font-family:"Courier New";color:black'>#changing a value </span></p>
 2184: 
 2185:   <p><span style='font-family:"Courier New";color:black'>$hash{'foo'}='notbar';</span></p>
 2186: 
 2187:   <p><span style='font-family:"Courier New";color:black'>#adding a new value</span></p>
 2188: 
 2189:   <p><span style='font-family:"Courier New";color:black'>$hash{'bar'}='foo';</span></p>
 2190: 
 2191:   <p><span style='font-family:"Courier New";color:black'>&amp;Apache::lonnet::cstore(\%hash);</span></p>
 2192: 
 2193:   <p><span style='font-family:"Courier New";color:black'>#retrieving the hash</span></p>
 2194: 
 2195:   <p><span style='font-family:"Courier New";color:black'>my %history=&amp;Apache::lonnet::restore();</span></p>
 2196: 
 2197:   <p><span style='font-family:"Courier New";color:black'>#print the hash</span></p>
 2198: 
 2199:   <p><span style='font-family:"Courier New";color:black'>foreach my $key (sort(keys(%history))) 
 2200: 
 2201:     {</span></p>
 2202: 
 2203:   <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; print(&quot;\%history{$key} 
 2204: 
 2205:     = $history{$key}&quot;);</span></p>
 2206: 
 2207:   <p><span style='font-family:"Courier New";color:black'>}</span></p>
 2208: 
 2209:   <p><span style='color:black'>Will print out: </span></p>
 2210: 
 2211:   <p><span style='font-family:"Courier New";color:black'>%history{1:foo} = bar</span></p>
 2212: 
 2213:   <p><span style='font-family:"Courier New";color:black'>%history{1:keys} = foo:timestamp</span></p>
 2214: 
 2215:   <p><span style='font-family:"Courier New";color:black'>%history{1:timestamp} 
 2216: 
 2217:     = 990455579</span></p>
 2218: 
 2219:   <p><span style='font-family:"Courier New";color:black'>%history{2:bar} = foo</span></p>
 2220: 
 2221:   <p><span style='font-family:"Courier New";color:black'>%history{2:foo} = notbar</span></p>
 2222: 
 2223:   <p><span style='font-family:"Courier New";color:black'>%history{2:keys} = foo:bar:timestamp</span></p>
 2224: 
 2225:   <p><span style='font-family:"Courier New";color:black'>%history{2:timestamp} 
 2226: 
 2227:     = 990455580</span></p>
 2228: 
 2229:   <p><span style='font-family:"Courier New";color:black'>%history{bar} = foo</span></p>
 2230: 
 2231:   <p><span style='font-family:"Courier New";color:black'>%history{foo} = notbar</span></p>
 2232: 
 2233:   <p><span style='font-family:"Courier New";color:black'>%history{timestamp} = 
 2234: 
 2235:     990455580</span></p>
 2236: 
 2237:   <p><span style='font-family:"Courier New";color:black'>%history{version} = 2</span></p>
 2238: 
 2239:   <p><span style='color:black'>Note that the special hash entries <i>keys</i></span><span style='color:black'>, 
 2240: 
 2241:     <i>version</i></span><span
 2242: 
 2243: style='color:black'> and <i>timestamp</i></span><span style='color:black'> were 
 2244: 
 2245:     added to the hash. <i>version</i></span><span style='color:black'> will be 
 2246: 
 2247:     equal to the total number of versions of the data that have been stored. The 
 2248: 
 2249:     <i>timestamp</i></span><span
 2250: 
 2251: style='color:black'> attribute will be the UNIX time the hash was stored. <i>keys</i></span><span
 2252: 
 2253: style='color:black'> is available in every historical section to list which keys 
 2254: 
 2255:     were added or changed at a specific historical revision of a hash. </span></p>
 2256: 
 2257:   <p><span style='color:black'><b>Warning</b></span><span
 2258: 
 2259: style='color:black'> do not store the hash that restore returns directly. This 
 2260: 
 2261:     will cause a mess since it will restore the historical keys as if the were 
 2262: 
 2263:     new keys. I.E. </span><span style='font-family:"Courier New";color:black'>1:foo</span><span
 2264: 
 2265: style='color:black'> will become </span><span style='font-family:"Courier New";
 2266: 
 2267: color:black'>1:1:foo</span><span style='color:black'> etc. </span></p>
 2268: 
 2269:   <p><span style='color:black'><b>Calling convention: </b></span></p>
 2270: 
 2271:   <p><span style='font-size:8.0pt;font-family:"Courier New";
 2272: 
 2273: color:black'>&nbsp; my %record=&amp;Apache::lonnet::restore($symb,$courseid,$domain,$uname,$home);</span></p>
 2274: 
 2275:   <p><span style='font-size:8.0pt;font-family:"Courier New";
 2276: 
 2277: color:black'>&nbsp; &amp;Apache::lonnet::cstore(\%newrecord,$symb,$courseid,$domain,$uname,$home);</span></p>
 2278: 
 2279:   <p><span style='color:black'><b>Arguments (only %newrecord is required the rest 
 2280: 
 2281:     are somewhat optional, read the details): </b></span></p>
 2282: 
 2283:   <p> <span style='font-family:Symbol;
 2284: 
 2285: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2286: 
 2287:     </span></span> <span style='color:black'><i>$symb</i></span><span
 2288: 
 2289: style='color:black'> - a string containing the internal name of the specific instance 
 2290: 
 2291:     of a resource. Usually this value can be gotten from </span><span
 2292: 
 2293: style='font-family:"Courier New";color:black'>&amp;Apache::lonnet::symbread($filename)</span><span
 2294: 
 2295: style='color:black'>. If the argument is blank, it will attempt to use </span><span
 2296: 
 2297: style='font-family:"Courier New";color:black'>symbread()</span><span
 2298: 
 2299: style='color:black'> for it. If the result is ambiguous store/restore will fail. 
 2300: 
 2301:     </span></p>
 2302: 
 2303:   <p> <span style='font-family:Symbol;
 2304: 
 2305: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2306: 
 2307:     </span></span> <span style='color:black'><i>$courseid</i></span><span
 2308: 
 2309: style='color:black'> - the internal name for a course, usually found in </span><span
 2310: 
 2311: style='font-family:"Courier New";color:black'>$env{'request.course.id'}</span><span
 2312: 
 2313: style='color:black'> which is what will be looked at if no value is passed to 
 2314: 
 2315:     the functions. </span></p>
 2316: 
 2317:   <p> <span style='font-family:Symbol;
 2318: 
 2319: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2320: 
 2321:     </span></span> <span style='color:black'><i>$domain</i></span><span
 2322: 
 2323: style='color:black'> - the domain that the user belongs to, usually found in </span><span
 2324: 
 2325: style='font-family:"Courier New";color:black'>$env{'user.domain'}</span><span
 2326: 
 2327: style='color:black'> which is what will be looked at if no value is passed to 
 2328: 
 2329:     the functions. </span></p>
 2330: 
 2331:   <p> <span style='font-family:Symbol;
 2332: 
 2333: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2334: 
 2335:     </span></span> <span style='color:black'><i>$uname</i></span><span
 2336: 
 2337: style='color:black'> - the login name for the user, usually found in </span><span
 2338: 
 2339: style='font-family:"Courier New";color:black'>$env{'user.name'}</span><span
 2340: 
 2341: style='color:black'> which is what will be looked at if no value is passed to 
 2342: 
 2343:     the functions. </span></p>
 2344: 
 2345:   <p> <span style='font-family:Symbol;
 2346: 
 2347: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2348: 
 2349:     </span></span> <span style='color:black'><i>$home</i></span><span
 2350: 
 2351: style='color:black'> - the homeserver for the user, usually found in </span><span
 2352: 
 2353: style='font-family:"Courier New";color:black'>$env{'user.home'}</span><span
 2354: 
 2355: style='color:black'> but can be easily gotten from a domain and name through </span><span
 2356: 
 2357: style='font-family:"Courier New";color:black'>&amp;Apache::lonnet::homeserver($uname,$domain)</span><span
 2358: 
 2359: style='color:black'>. If no value is passed to store/restore the value in %env 
 2360: 
 2361:     will be used. </span></p>
 2362: 
 2363:   <p> <span style='font-family:Symbol;
 2364: 
 2365: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2366: 
 2367:     </span></span> <span style='color:black'><i>%newrecord</i></span><span
 2368: 
 2369: style='color:black'> - the hash to store being passed by reference </span></p>
 2370: 
 2371:   <p><span style='color:black'><b>Return values: </b></span></p>
 2372: 
 2373:   <p> <span style='font-family:Symbol;
 2374: 
 2375: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2376: 
 2377:     </span></span> <span style='color:black'><i>an empty string</i></span><span
 2378: 
 2379: style='color:black'> - the function was unable to determine exactly where to store 
 2380: 
 2381:     or restore from. At least one of the &quot;optional&quot; arguments was unable 
 2382: 
 2383:     to be determined. </span></p>
 2384: 
 2385:   <p> <span style='font-family:Symbol;
 2386: 
 2387: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2388: 
 2389:     </span></span> <span style='color:black'><i>a hash</i></span><span
 2390: 
 2391: style='color:black'> - restore successfully read a old hash for this specific 
 2392: 
 2393:     user / resource instance. </span></p>
 2394: 
 2395:   <p> <span style='font-family:Symbol;
 2396: 
 2397: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2398: 
 2399:     </span></span> <span style='color:black'><i>no_such_host</i></span><span
 2400: 
 2401: style='color:black'> - the <i>$home</i></span><span style='color:black'> specfied 
 2402: 
 2403:     desn't exist in the network. </span></p>
 2404: 
 2405:   <p> <span style='font-family:Symbol;
 2406: 
 2407: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2408: 
 2409:     </span></span> <span style='color:black'><i>con_delayed</i></span><span
 2410: 
 2411: style='color:black'> - the <i>$home</i></span><span style='color:black'> was uncontactable 
 2412: 
 2413:     at this time. The store will be delayed until it is again available. </span></p>
 2414: 
 2415:   <p> <span style='font-family:Symbol;
 2416: 
 2417: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2418: 
 2419:     </span></span> <span style='color:black'><i>con_failed</i></span><span
 2420: 
 2421: style='color:black'> - the <i>$home</i></span><span style='color:black'> was uncontactable 
 2422: 
 2423:     at this time and store was unable to delay the store until a later time. The 
 2424: 
 2425:     store failed. </span></p>
 2426: 
 2427:   <p> <span style='font-family:Symbol;
 2428: 
 2429: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2430: 
 2431:     </span></span> <span style='color:black'><i>ok</i></span><span
 2432: 
 2433: style='color:black'> - the store completed succesfully </span></p>
 2434: 
 2435:   <p> <span style='font-family:Symbol;
 2436: 
 2437: color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2438: 
 2439:     </span></span> <span style='color:black'><i>error:</i></span><span
 2440: 
 2441: style='color:black'> - remote server failied to store or restore the reason follows 
 2442: 
 2443:     the </span><span style='font-family:"Courier New";color:black'>:</span><span
 2444: 
 2445: style='color:black'> </span></p>
 2446: 
 2447:   <h3><a name="_Toc421867136">Mandatory Homework Data</a></h3>
 2448: 
 2449:   <pre>&nbsp;</pre>
 2450: 
 2451:   <pre><span
 2452: 
 2453: style='font-size:9.0pt'>&lt;Provided by &amp;EXT() and set external to the resource, required&gt;</span></pre>
 2454: 
 2455:   <pre><span
 2456: 
 2457: style='font-size:9.0pt'>resource.partid.opendate&nbsp;&nbsp; #unix time of when the local machine should let the</span></pre>
 2458: 
 2459:   <pre><span
 2460: 
 2461: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #student in</span></pre>
 2462: 
 2463:   <pre><span
 2464: 
 2465: style='font-size:9.0pt'>&nbsp;</span></pre>
 2466: 
 2467:   <pre><span
 2468: 
 2469: style='font-size:9.0pt'>resource.partid.duedate&nbsp;&nbsp;&nbsp; #unix time of when the local machine should stop</span></pre>
 2470: 
 2471:   <pre><span
 2472: 
 2473: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #accepting answers</span></pre>
 2474: 
 2475:   <pre><span
 2476: 
 2477: style='font-size:9.0pt'>&nbsp;</span></pre>
 2478: 
 2479:   <pre><span
 2480: 
 2481: style='font-size:9.0pt'>resource.partid.answerdate #unix time of when the local machine should</span></pre>
 2482: 
 2483:   <pre><span
 2484: 
 2485: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #provide the correct answer to the student</span></pre>
 2486: 
 2487:   <pre><span
 2488: 
 2489: style='font-size:9.0pt'>&nbsp;</span></pre>
 2490: 
 2491:   <pre><span
 2492: 
 2493: style='font-size:9.0pt'>resource.partid.weight&nbsp;&nbsp;&nbsp;&nbsp; # points the problem is worth</span></pre>
 2494: 
 2495:   <pre><span
 2496: 
 2497: style='font-size:9.0pt'>&nbsp;</span></pre>
 2498: 
 2499:   <pre><span
 2500: 
 2501: style='font-size:9.0pt'>resource.partid.maxtries&nbsp;&nbsp; # maximum number of attempts the student can have</span></pre>
 2502: 
 2503:   <pre><span
 2504: 
 2505: style='font-size:9.0pt'>&nbsp;</span></pre>
 2506: 
 2507:   <pre><span
 2508: 
 2509: style='font-size:9.0pt'>resource.partid.type&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;# type of problem homework can be:</span></pre>
 2510: 
 2511:   <pre><span
 2512: 
 2513: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # homework - randomized, graded, stored with </span></pre>
 2514: 
 2515:   <pre><span
 2516: 
 2517: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; requesting user, full feeback</span></pre>
 2518: 
 2519:   <pre><span
 2520: 
 2521: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # exam - randomized, graded, stored with </span></pre>
 2522: 
 2523:   <pre><span
 2524: 
 2525: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; requesting user, minimal feedback</span></pre>
 2526: 
 2527:   <pre><span
 2528: 
 2529: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # form - unrandomized, ungraded, stored with </span></pre>
 2530: 
 2531:   <pre><span
 2532: 
 2533: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; specified user, full feedback</span></pre>
 2534: 
 2535:   <pre><span
 2536: 
 2537: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # survey - unrandomized, ungraded, stored with </span></pre>
 2538: 
 2539:   <pre><span
 2540: 
 2541: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; requesting user, full feedback</span></pre>
 2542: 
 2543:   <pre><span
 2544: 
 2545: style='font-size:9.0pt'>&nbsp;</span></pre>
 2546: 
 2547:   <pre><span
 2548: 
 2549: style='font-size:9.0pt'>&nbsp;</span></pre>
 2550: 
 2551:   <pre><span
 2552: 
 2553: style='font-size:9.0pt'>&nbsp;</span></pre>
 2554: 
 2555:   <pre><span
 2556: 
 2557: style='font-size:9.0pt'>&lt;numerical/formula/response needed: (has a default if nonexistant)&gt;</span></pre>
 2558: 
 2559:   <pre><span
 2560: 
 2561: style='font-size:9.0pt'>&nbsp;</span></pre>
 2562: 
 2563:   <pre><span
 2564: 
 2565: style='font-size:9.0pt'>resource.partid.responseid.tol&nbsp;&nbsp; # lots of possibilities here</span></pre>
 2566: 
 2567:   <pre><span
 2568: 
 2569: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # percentage, range (inclusive and exclusive),</span></pre>
 2570: 
 2571:   <pre><span
 2572: 
 2573: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; # variable name, etc</span></pre>
 2574: 
 2575:   <pre><span
 2576: 
 2577: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 3%</span></pre>
 2578: 
 2579:   <pre><span
 2580: 
 2581: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 0.5</span></pre>
 2582: 
 2583:   <pre><span
 2584: 
 2585: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # .05+</span></pre>
 2586: 
 2587:   <pre><span
 2588: 
 2589: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 3%+</span></pre>
 2590: 
 2591:   <pre><span
 2592: 
 2593: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 0.5+,.005</span></pre>
 2594: 
 2595:   <pre><span
 2596: 
 2597: style='font-size:9.0pt'>&nbsp;</span></pre>
 2598: 
 2599:   <pre><span
 2600: 
 2601: style='font-size:9.0pt'>resource.partid.responseid.sig&nbsp; # one or two comma sepearted integers,&nbsp;&nbsp;&nbsp; </span></pre>
 2602: 
 2603:   <pre><span
 2604: 
 2605: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# specifying the number of significatn figures</span></pre>
 2606: 
 2607:   <pre><span
 2608: 
 2609: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # a student must use</span></pre>
 2610: 
 2611:   <pre><span
 2612: 
 2613: style='font-size:9.0pt'>&nbsp;</span></pre>
 2614: 
 2615:   <pre><span
 2616: 
 2617: style='font-size:9.0pt'>&nbsp;</span></pre>
 2618: 
 2619:   <pre><span
 2620: 
 2621: style='font-size:9.0pt'>&nbsp;</span></pre>
 2622: 
 2623:   <pre><span
 2624: 
 2625: style='font-size:9.0pt'>&lt;Problem sets using cstore (required):&gt;</span></pre>
 2626: 
 2627:   <pre><span
 2628: 
 2629: style='font-size:9.0pt'>resource.partid.solved # if not set, problem yet to be viewed</span></pre>
 2630: 
 2631:   <pre><span
 2632: 
 2633: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # incorrect_attempted == incorrect and attempted</span></pre>
 2634: 
 2635:   <pre><span
 2636: 
 2637: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # correct_by_student == correct by student work</span></pre>
 2638: 
 2639:   <pre><span
 2640: 
 2641: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # correct_by_override == correct, instructor override</span></pre>
 2642: 
 2643:   <pre><span
 2644: 
 2645: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # incorrect_by_override == incorrect, instructor override</span></pre>
 2646: 
 2647:   <pre><span
 2648: 
 2649: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # excused == excused, problem no longer counts for student</span></pre>
 2650: 
 2651:   <pre><span
 2652: 
 2653: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # '' (empty) == not attempted</span></pre>
 2654: 
 2655:   <pre><span
 2656: 
 2657: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ungraded_attempted == an ungraded answer has been</span></pre>
 2658: 
 2659:   <pre><span
 2660: 
 2661: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sumbitted and stored</span></pre>
 2662: 
 2663:   <pre><span
 2664: 
 2665: style='font-size:9.0pt'>resource.partid.tries&nbsp; # positive integer of number of unsuccessful attempts</span></pre>
 2666: 
 2667:   <pre><span
 2668: 
 2669: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # made, malformed answers don't count if feedback is</span></pre>
 2670: 
 2671:   <pre><span
 2672: 
 2673: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # on</span></pre>
 2674: 
 2675:   <pre><span
 2676: 
 2677: style='font-size:9.0pt'>&nbsp;</span></pre>
 2678: 
 2679:   <pre><span
 2680: 
 2681: style='font-size:9.0pt'>resource.partid.awarded # float between 0 and 1, percentage of</span></pre>
 2682: 
 2683:   <pre><span
 2684: 
 2685: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# resource.weight that the stundent earned.</span></pre>
 2686: 
 2687:   <pre><span
 2688: 
 2689: style='font-size:9.0pt'>&nbsp;</span></pre>
 2690: 
 2691:   <pre><span
 2692: 
 2693: style='font-size:9.0pt'>resource.partid.award # final detailed award that was applied to the entire</span></pre>
 2694: 
 2695:   <pre><span
 2696: 
 2697: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # part of the question, check awarddetail below for</span></pre>
 2698: 
 2699:   <pre><span
 2700: 
 2701: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # possibilities</span></pre>
 2702: 
 2703:   <pre><span
 2704: 
 2705: style='font-size:9.0pt'>&nbsp;</span></pre>
 2706: 
 2707:   <pre><span
 2708: 
 2709: style='font-size:9.0pt'>resource.partid.previous # boolean, is this submission a previous submission</span></pre>
 2710: 
 2711:   <pre><span
 2712: 
 2713: style='font-size:9.0pt'>&nbsp;</span></pre>
 2714: 
 2715:   <pre><span
 2716: 
 2717: style='font-size:9.0pt'>resource.partid.responseid.submissons</span></pre>
 2718: 
 2719:   <pre><span
 2720: 
 2721: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # the student submitted string for the part.response</span></pre>
 2722: 
 2723:   <pre><span
 2724: 
 2725: style='font-size:9.0pt'>&nbsp;</span></pre>
 2726: 
 2727:   <pre><span
 2728: 
 2729: style='font-size:9.0pt'>resource.partid.responseid.awarddetail</span></pre>
 2730: 
 2731:   <pre><span
 2732: 
 2733: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # list of all of the results of grading the submissions</span></pre>
 2734: 
 2735:   <pre><span
 2736: 
 2737: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # in detailed form of the specific failure</span></pre>
 2738: 
 2739:   <pre><span
 2740: 
 2741: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #Possible values:</span></pre>
 2742: 
 2743:   <pre><span
 2744: 
 2745: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # EXACT_ANS, APPROX_ANS : student is correct</span></pre>
 2746: 
 2747:   <pre><span
 2748: 
 2749: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # NO_RESPONSE : student submitted no response</span></pre>
 2750: 
 2751:   <pre><span
 2752: 
 2753: style='font-size:9.0pt'>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# MISSING_ANSWER : student submitted some but not</span></pre>
 2754: 
 2755:   <pre><span
 2756: 
 2757: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all parts of a response</span></pre>
 2758: 
 2759:   <pre><span
 2760: 
 2761: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # WANTED_NUMERIC : expected a numeric answer and</span></pre>
 2762: 
 2763:   <pre><span
 2764: 
 2765: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; didn't get one</span></pre>
 2766: 
 2767:   <pre><span
 2768: 
 2769: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # SIG_FAIL : incorrect number of Significant Figures</span></pre>
 2770: 
 2771:   <pre><span
 2772: 
 2773: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # UNIT_FAIL : incorrect unit</span></pre>
 2774: 
 2775:   <pre><span
 2776: 
 2777: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # UNIT_NOTNEEDED : Submitted a unit when one shouldn't</span></pre>
 2778: 
 2779:   <pre><span
 2780: 
 2781: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # NO_UNIT : needed a unit but none was submitted</span></pre>
 2782: 
 2783:   <pre><span
 2784: 
 2785: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # BAD_FORMULA : syntax error in submitted formula</span></pre>
 2786: 
 2787:   <pre><span
 2788: 
 2789: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # INCORRECT : answer was wrong</span></pre>
 2790: 
 2791:   <pre><span
 2792: 
 2793: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # SUBMITTED : submission wasn't graded</span></pre>
 2794: 
 2795:   <pre><span
 2796: 
 2797: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ERROR : unable to get a grade</span></pre>
 2798: 
 2799:   <pre><span
 2800: 
 2801: style='font-size:9.0pt'>&nbsp;</span></pre>
 2802: 
 2803:   <pre><span
 2804: 
 2805: style='font-size:9.0pt'>resource.partid.responseid.message (optional) (not yet supported)</span></pre>
 2806: 
 2807:   <pre><span
 2808: 
 2809: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; # a message that should be shown to the student</span></pre>
 2810: 
 2811:   <pre><span
 2812: 
 2813: style='font-size:9.0pt'>&nbsp;</span></pre>
 2814: 
 2815:   <pre><span
 2816: 
 2817: style='font-size:9.0pt'>resource.partid.bonustries (optional) (not yet supported)</span></pre>
 2818: 
 2819:   <pre><span
 2820: 
 2821: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # if set, added to the maxtries parameter for student </span></pre>
 2822: 
 2823:   <pre><span
 2824: 
 2825: style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# total number of tries overall</span></pre>
 2826: 
 2827:   <pre>&nbsp;</pre>
 2828: 
 2829:   <h3><a name="_Toc421867137">Sample Problems</a></h3>
 2830: 
 2831:   <p class=H5><span style='layout-grid-mode:
 2832: 
 2833: both'>A Simple Problem</span></p>
 2834: 
 2835:   <p style='
 2836: 
 2837: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;problem&gt;</span></p>
 2838: 
 2839:   <p style='
 2840: 
 2841: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2842: 
 2843:     &lt;script type=&quot;loncapa/perl&quot;&gt;</span></p>
 2844: 
 2845:   <p style='
 2846: 
 2847: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>$length=&amp;random(10,99,.1);</span></p>
 2848: 
 2849:   <p style='
 2850: 
 2851: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>$width=&amp;random(1,10,.01);</span></p>
 2852: 
 2853:   <p style='
 2854: 
 2855: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>@area=($length*($width*10));</span></p>
 2856: 
 2857:   <p style='
 2858: 
 2859: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2860: 
 2861:     &lt;/script&gt;</span></p>
 2862: 
 2863:   <p style='
 2864: 
 2865: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>What 
 2866: 
 2867:     is the area of a box $length mm in length and </span></p>
 2868: 
 2869:   <p style='
 2870: 
 2871: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;format($width,&quot;2E&quot;) 
 2872: 
 2873:     cm in width.</span></p>
 2874: 
 2875:   <p style='
 2876: 
 2877: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2878: 
 2879:     &lt;numericalresponse id=&quot;11&quot; answer=&quot;@area&quot; units=&quot;mm^2&quot;&gt;</span></p>
 2880: 
 2881:   <p style='
 2882: 
 2883: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2884: 
 2885:     &lt;textline&gt;&lt;/textline&gt;</span></p>
 2886: 
 2887:   <p style='
 2888: 
 2889: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2890: 
 2891:     &lt;responseparam name=&quot;tol&quot; type=&quot;tolerance&quot; default=&quot;5%&quot;&gt;&lt;/responseparam&gt;</span></p>
 2892: 
 2893:   <p style='
 2894: 
 2895: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2896: 
 2897:     &lt;/numericalresponse&gt;</span></p>
 2898: 
 2899:   <p style='
 2900: 
 2901: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/problem&gt;</span></p>
 2902: 
 2903:   <p class=H5><span
 2904: 
 2905: style='layout-grid-mode:both'>A More Complex Problem</span></p>
 2906: 
 2907:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;problem&gt;</span></p>
 2908: 
 2909:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;displayduedate 
 2910: 
 2911:     /&gt;</span></p>
 2912: 
 2913:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;p&gt;&lt;displaytitle 
 2914: 
 2915:     /&gt;&lt;/p&gt;</span></p>
 2916: 
 2917:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;script type=&quot;loncapa/perl&quot;&gt;</span></p>
 2918: 
 2919:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF=&quot;&lt;b&gt; 
 2920: 
 2921:     F&lt;sub&gt;1&lt;/sub&gt; &lt;/b&gt;&quot;;</span></p>
 2922: 
 2923:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF1=&quot;&lt;b&gt; 
 2924: 
 2925:     F&lt;sub&gt;1&lt;/sub&gt; &lt;/b&gt;&quot;;</span></p>
 2926: 
 2927:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF2=&quot;&lt;b&gt; 
 2928: 
 2929:     F&lt;sub&gt;2&lt;/sub&gt; &lt;/b&gt;&quot;;</span></p>
 2930: 
 2931:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$mF=&quot;|&lt;b&gt;F&lt;/b&gt;|&quot;;</span></p>
 2932: 
 2933:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F1mag=&quot;|&lt;b&gt;F&lt;sub&gt;1&lt;/sub&gt;&lt;/b&gt;|&quot;;</span></p>
 2934: 
 2935:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F2mag=&quot;|&lt;b&gt;F&lt;sub&gt;2&lt;/sub&gt;&lt;/b&gt;|&quot;;</span></p>
 2936: 
 2937:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq1mag=&quot;|&lt;b&gt; 
 2938: 
 2939:     &lt;font face=symbol&gt;t&lt;/font&gt;&lt;sub&gt;1&lt;/sub&gt;&lt;/b&gt;|&quot;;</span></p>
 2940: 
 2941:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq2mag=&quot;|&lt;b&gt; 
 2942: 
 2943:     &lt;font face=symbol&gt;t&lt;/font&gt;&lt;sub&gt;2&lt;/sub&gt;&lt;/b&gt;|&quot;;</span></p>
 2944: 
 2945:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$Q1=&quot;Q&lt;sub&gt;1&lt;/sub&gt;&quot;;</span></p>
 2946: 
 2947:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$Q2=&quot;Q&lt;sub&gt;2&lt;/sub&gt;&quot;;</span></p>
 2948: 
 2949:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$tau=&quot;&lt;font 
 2950: 
 2951:     face=symbol&gt;t&lt;/font&gt;&quot;;</span></p>
 2952: 
 2953:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$tau1=&quot;&lt;font 
 2954: 
 2955:     face=symbol&gt;&lt;b&gt;t&lt;/b&gt;&lt;/font&gt;&lt;sub&gt;1&lt;/sub&gt;&quot;;</span></p>
 2956: 
 2957:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp; $val=&amp;random(1,4,1);</span></p>
 2958: 
 2959:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp; $tp=&amp;choose($val,&quot;her&quot;,&quot;her&quot;,&quot;his&quot;,&quot;his&quot;);</span></p>
 2960: 
 2961:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp; $sd=&amp;choose($val,&quot;daughter&quot;,&quot;niece&quot;,&quot;nephew&quot;,&quot;son&quot;);</span></p>
 2962: 
 2963:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/script&gt;</span></p>
 2964: 
 2965:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;startouttext 
 2966: 
 2967:     /&gt;</span></p>
 2968: 
 2969:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq1mag and $trq2mag 
 2970: 
 2971:     are the magnitudes of the torques produced repectively by </span></p>
 2972: 
 2973:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>forces $vF1 and $vF2 
 2974: 
 2975:     with respect the pivot P. The magnitudes of $vF1 is </span></p>
 2976: 
 2977:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F1mag and that of 
 2978: 
 2979:     $vF2 is $F2mag. $Q1 and $Q2 are the locations </span></p>
 2980: 
 2981:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>on a rigid body where 
 2982: 
 2983:     $vF1 and $vF2 act.&nbsp; </span></p>
 2984: 
 2985:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;endouttext /&gt;</span></p>
 2986: 
 2987:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;optionresponse 
 2988: 
 2989:     max=&quot;600&quot;&gt;</span></p>
 2990: 
 2991:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2992: 
 2993:     &lt;foilgroup options=&quot;('Correct','Incorrect','Can not tell')&quot;&gt;</span></p>
 2994: 
 2995:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 2996: 
 2997:     &lt;conceptgroup concept=&quot;Effect of the moment-arm on the torque&quot;&gt;</span></p>
 2998: 
 2999:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3000: 
 3001:     &lt;foil name=&quot;1a&quot; value=&quot;Incorrect&quot;&gt;</span></p>
 3002: 
 3003:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3004: 
 3005:     For $F1mag larger than $F2mag , $trq1mag is larger than $trq2mag</span></p>
 3006: 
 3007:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3008: 
 3009:     &lt;/foil&gt;</span></p>
 3010: 
 3011:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3012: 
 3013:     &lt;foil name=&quot;1b&quot; value=&quot;Incorrect&quot;&gt;</span></p>
 3014: 
 3015:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3016: 
 3017:     For $F1mag smaller than $F2mag , $trq1mag is smaller than $trq2mag</span></p>
 3018: 
 3019:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3020: 
 3021:     &lt;/foil&gt;</span></p>
 3022: 
 3023:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3024: 
 3025:     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;foil 
 3026: 
 3027:     name=&quot;1c&quot; value=&quot;Correct&quot;&gt;</span></p>
 3028: 
 3029:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3030: 
 3031:     For $F1mag larger than $F2mag , $trq1mag can be less&nbsp; than $trq2mag</span></p>
 3032: 
 3033:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3034: 
 3035:     &lt;/foil&gt;</span></p>
 3036: 
 3037:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3038: 
 3039:     &lt;foil name=&quot;1d&quot; value=&quot;Correct&quot;&gt;</span></p>
 3040: 
 3041:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3042: 
 3043:     For $F1mag smaller than $F2mag , $trq1mag can be larger&nbsp; than $trq2mag</span></p>
 3044: 
 3045:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3046: 
 3047:     &lt;/foil&gt;</span></p>
 3048: 
 3049:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3050: 
 3051:     &lt;/conceptgroup&gt; </span></p>
 3052: 
 3053:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3054: 
 3055:     &lt;conceptgroup concept=&quot;For a given pivot, relation of force vector 
 3056: 
 3057:     to torque.&quot;&gt;</span></p>
 3058: 
 3059:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3060: 
 3061:     &lt;foil name=&quot;2a&quot; value=&quot;Correct&quot;&gt;</span></p>
 3062: 
 3063:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3064: 
 3065:     The moment-arm of $vF is the shortest distance from P to the line along $vF 
 3066: 
 3067:     .</span></p>
 3068: 
 3069:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3070: 
 3071:     &lt;/foil&gt;</span></p>
 3072: 
 3073:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3074: 
 3075:     &lt;foil name=&quot;2b&quot; value=&quot;Incorrect&quot;&gt;</span></p>
 3076: 
 3077:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3078: 
 3079:     The moment-arm of $vF is the shortest distance from P to $vF vector.</span></p>
 3080: 
 3081:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3082: 
 3083:     &lt;/foil&gt;</span></p>
 3084: 
 3085:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3086: 
 3087:     &lt;foil name=&quot;2c&quot; value=&quot;Correct&quot;&gt;</span></p>
 3088: 
 3089:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3090: 
 3091:     The moment-arm of $vF is not the distance from P to Q&lt;sub&gt;1&lt;/sub&gt;.</span></p>
 3092: 
 3093:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3094: 
 3095:     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/foil&gt;</span></p>
 3096: 
 3097:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3098: 
 3099:     &lt;foil name=&quot;2d&quot; value=&quot;Incorrect&quot;&gt;</span></p>
 3100: 
 3101:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3102: 
 3103:     The moment-arm of $vF is the distance from P to Q&lt;sub&gt;1&lt;/sub&gt;.</span></p>
 3104: 
 3105:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3106: 
 3107:     &lt;/foil&gt; </span></p>
 3108: 
 3109:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3110: 
 3111:     &lt;/conceptgroup&gt;</span></p>
 3112: 
 3113:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3114: 
 3115:     &lt;conceptgroup concept=&quot;Torque is force x moment-arm.&quot;&gt;</span></p>
 3116: 
 3117:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3118: 
 3119:     &lt;foil name=&quot;3a&quot; value=&quot;Correct&quot;&gt;</span></p>
 3120: 
 3121:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3122: 
 3123:     $trq1mag equals to the product of the moment-arm and $F1mag .</span></p>
 3124: 
 3125:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3126: 
 3127:     &lt;/foil&gt;</span></p>
 3128: 
 3129:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3130: 
 3131:     &lt;foil name=&quot;3b&quot; value=&quot;Incorrect&quot;&gt;</span></p>
 3132: 
 3133:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3134: 
 3135:     $trq1mag equals to $F1mag times the distance from Q&lt;sub&gt;1&lt;/sub&gt; 
 3136: 
 3137:     to P.</span></p>
 3138: 
 3139:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3140: 
 3141:     &lt;/foil&gt;</span></p>
 3142: 
 3143:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3144: 
 3145:     &lt;foil name=&quot;3c&quot; value=&quot;Correct&quot;&gt;</span></p>
 3146: 
 3147:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3148: 
 3149:     $trq1mag is not equal to the product of $F1mag and the distance from Q&lt;sub&gt;1&lt;/sub&gt; 
 3150: 
 3151:     to P.</span></p>
 3152: 
 3153:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3154: 
 3155:     &lt;/foil&gt;</span></p>
 3156: 
 3157:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3158: 
 3159:     &lt;foil name=&quot;3d&quot; value=&quot;Incorrect&quot;&gt;</span></p>
 3160: 
 3161:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3162: 
 3163:     $trq1mag is not equal to the product of the moment-arm and $F1mag .</span></p>
 3164: 
 3165:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3166: 
 3167:     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/foil&gt;</span></p>
 3168: 
 3169:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3170: 
 3171:     &lt;/conceptgroup&gt;</span></p>
 3172: 
 3173:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3174: 
 3175:     &lt;conceptgroup concept=&quot;Pivot point is required to calculate torque&quot;&gt;</span></p>
 3176: 
 3177:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3178: 
 3179:     &lt;foil name=&quot;4a&quot; value=&quot;Correct&quot;&gt;</span></p>
 3180: 
 3181:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3182: 
 3183:     $tau1 vector depends on the location of P.</span></p>
 3184: 
 3185:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3186: 
 3187:     &lt;/foil&gt;</span></p>
 3188: 
 3189:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3190: 
 3191:     &lt;foil name=&quot;4b&quot; value=&quot;Incorrect&quot;&gt;</span></p>
 3192: 
 3193:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3194: 
 3195:     $tau1 vector does not depend on the location of P.</span></p>
 3196: 
 3197:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3198: 
 3199:     &lt;/foil&gt;</span></p>
 3200: 
 3201:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3202: 
 3203:     &lt;foil name=&quot;4c&quot; value=&quot;Correct&quot;&gt;</span></p>
 3204: 
 3205:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3206: 
 3207:     $tau1 vector has no meaning unless a pivot is selected.</span></p>
 3208: 
 3209:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3210: 
 3211:     &lt;/foil&gt;</span></p>
 3212: 
 3213:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3214: 
 3215:     &lt;foil name=&quot;4d&quot; value=&quot;Incorrect&quot;&gt;</span></p>
 3216: 
 3217:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3218: 
 3219:     $tau1 vector can be determined without selecting P. </span></p>
 3220: 
 3221:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3222: 
 3223:     &lt;/foil&gt;</span></p>
 3224: 
 3225:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3226: 
 3227:     &lt;/conceptgroup&gt; </span></p>
 3228: 
 3229:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3230: 
 3231:     &lt;conceptgroup concept=&quot;torque from 2 forces acting along same line&quot;&gt;</span></p>
 3232: 
 3233:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3234: 
 3235:     &lt;foil name=&quot;5a&quot; value=&quot;Correct&quot;&gt;</span></p>
 3236: 
 3237:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3238: 
 3239:     Two equal forces, acting on a body along the same line but at different positions, 
 3240: 
 3241:     produce equal torques with respect to a given pivot.&quot;</span></p>
 3242: 
 3243:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3244: 
 3245:     &lt;/foil&gt;</span></p>
 3246: 
 3247:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3248: 
 3249:     &lt;foil name=&quot;5b&quot; value=&quot;Incorrect&quot;&gt;</span></p>
 3250: 
 3251:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3252: 
 3253:     Two equal forces, along the same line, produce equal torques with respect 
 3254: 
 3255:     to a given pivot only if they act at the same point on a body.&quot;</span></p>
 3256: 
 3257:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3258: 
 3259:     &lt;/foil&gt;</span></p>
 3260: 
 3261:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3262: 
 3263:     &lt;foil name=&quot;5c&quot; value=&quot;Incorrect&quot;&gt;</span></p>
 3264: 
 3265:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3266: 
 3267:     Two equal forces acting on a body along the same line but at different positions, 
 3268: 
 3269:     produce equal torques for only one pivot.&quot;</span></p>
 3270: 
 3271:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3272: 
 3273:     &lt;/foil&gt;</span></p>
 3274: 
 3275:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3276: 
 3277:     &lt;/conceptgroup&gt;</span></p>
 3278: 
 3279:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3280: 
 3281:     &lt;foil name=&quot;6&quot; value=&quot;unused&quot;&gt;</span></p>
 3282: 
 3283:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3284: 
 3285:     This foil will never display since it is unused.</span></p>
 3286: 
 3287:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3288: 
 3289:     &lt;/foil&gt;</span></p>
 3290: 
 3291:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3292: 
 3293:     &lt;/foilgroup&gt;</span></p>
 3294: 
 3295:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3296: 
 3297:     &lt;notsolved&gt;</span></p>
 3298: 
 3299:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3300: 
 3301:     &lt;hintgroup&gt;</span></p>
 3302: 
 3303:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>Think the definition 
 3304: 
 3305:     of the torque. The force and the moment-arm respect to the pivot.&nbsp; </span></p>
 3306: 
 3307:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3308: 
 3309:     &lt;/hintgroup&gt;</span></p>
 3310: 
 3311:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 3312: 
 3313:     &nbsp;&nbsp;&lt;/notsolved&gt;</span></p>
 3314: 
 3315:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/optionresponse&gt;</span></p>
 3316: 
 3317:   <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/problem&gt;</span></p>
 3318: 
 3319:   <h3>&nbsp; </h3>
 3320: 
 3321:   <p> <img border=0 width=432 height=370
 3322: 
 3323: src="Session%20On2_files/image003.png" v:shapes="_x0000_i1025"> </p>
 3324: 
 3325:   <p><span style='font-size:14.0pt'><b>Fig. 3.1.1</b></span><span
 3326: 
 3327: style='font-size:14.0pt'> Ð Internal Structure of Homework Handler</span></p>
 3328: 
 3329: </div>
 3330: 
 3331: <br
 3332: 
 3333: clear=ALL style='page-break-before:always;'>
 3334: 
 3335: <div class=Section2> </div>
 3336: 
 3337: </body>
 3338: 
 3339: </html>
 3340: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>