File:  [LON-CAPA] / doc / gutshtml / SessionOn2.html
Revision 1.1: download - view: text, annotated - select for diffs
Fri Jun 28 20:30:29 2002 UTC (22 years ago) by www
Branches: MAIN
CVS tags: version_0_99_3, version_0_99_2, version_0_99_1, version_0_99_0, version_0_6_2, version_0_6, version_0_5_1, version_0_5, version_0_4, stable_2002_july, conference_2003, STABLE, HEAD
HTML version of GUTS manual. Individual files will still need cleanup.

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

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