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 (21 years, 9 months 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.

<html>
<head>
<meta name=Title
content="Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)">
<meta http-equiv=Content-Type content="text/html; charset=macintosh">
<link rel=Edit-Time-Data href="Session%20On2_files/editdata.mso">
<title>Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)</title>
<style><!--
.MsoHeader
	{tab-stops:center 3.0in right 6.0in;
	font-size:10.0pt;
	font-family:"Times New Roman";}
.H5
	{font-size:10.0pt;
	font-family:"Times New Roman";
	layout-grid-mode:line;
	font-weight:bold;}
.Section1
	{page:Section1;}
.Section2
	{page:Section2;}
-->
</style>
</head>
<body bgcolor=#FFFFFF link=blue vlink=purple class="Normal" lang=EN-US>
<div class=Section1> 
  <h2>Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)</h2>
  <h3><a name="_Toc421867127">Tags</a></h3>
  <ul type=disc>
    <li><b>Response tags </b></li>
  </ul>
  <p>Arguments for all response tags </p>
  <ul type=disc>
    <ul type=circle>
      <li><i>ID</i><span style='font-style:
      normal'>, if this isn't set it will be set during the publication step. 
        It is used to assign parameters names in a way that can be tracked if 
        an instructor modifies things by hand. </span></li>
      <li><i>name</i><span
      style='font-style:normal'> optional, if set, it will be used by the resource 
        assembly tool when one is modifying parameters. </span></li>
    </ul>
  </ul>
  <p>Implemented response tags </p>
  <ul type=disc>
    <ul type=circle>
      <li><b>&lt;responseparam&gt;</b><span
      style='font-weight:normal'> if it appears it should be inside of a &lt;*response&gt; 
        tag, defines an externally adjustable parameter for this question. Arguments: 
        </span></li>
      <ul type=square>
        <li><i>default</i><span
       style='font-style:normal'> required, specifies a default value for the 
          parameter </span></li>
        <li><i>name</i><span
       style='font-style:normal'> required, specifies an internal name for the 
          parameter </span></li>
        <li><i>type</i><span
       style='font-style:normal'> required specifies the type of parameter, one 
          of &quot;tolerance&quot;, &quot;int&quot;, &quot;float&quot;, &quot;string&quot;, 
          &quot;date&quot; (configuration of paramters is handled by lonparmset.pm 
          and parameter.html) </span></li>
        <li><i>description</i><span
       style='font-style:normal'> a string describing the parameter, this is what 
          is used to talk about a parameter outside of a problem </span></li>
      </ul>
      <li><b>&lt;parameter&gt;</b><span
      style='font-weight:normal'> exactly the same as &lt;responseparam&gt; currently, 
        but should not appear inside of a &lt;*response&gt; </span></li>
      <li><b>&lt;numericalresponse&gt;</b><span
      style='font-weight:normal'> implements a numerical answer, it needs an internal 
        </span><b>&lt;textline&gt;</b><span style='font-weight:normal'> for the 
        response to go in. It checks all styles of numerical supported in CAPA. 
        Possible args are: </span></li>
      <ul type=square>
        <li><i>answer</i><span
       style='font-style:normal'> required, specifies the correct answer, may 
          be either a perl list or scalar</span></li>
        <li><i>units</i><span
       style='font-style:normal'> optional, specifies unit of correct answer, 
          CAPA style</span></li>
      </ul>
      <li><b>&lt;stringresponse&gt;</b><span
      style='font-weight:normal'> implements a string answer, it needs an internal 
        </span><b>&lt;textline&gt;</b><span style='font-weight:normal'> for the 
        response to go in. It can check the string for either case or order. </span></li>
      <ul type=square>
        <li><i>answer</i><span
       style='font-style:normal'> required, specifies the correct answer, may 
          be either a perl list or scalar</span></li>
        <li><i>type</i><span
       style='font-style:normal'> optional, CAPA style str args, cs/ci/mc </span></li>
        <ul type=square>
          <li>cs - case senesitive, order important</li>
          <li>ci - case insenesitive, order important</li>
          <li>mc - case insenesitive, order unimportant</li>
        </ul>
      </ul>
      <li><b>&lt;essayresponse&gt;</b><span
      style='font-weight:normal'> implements a ungraded large text response, it 
        need an internal </span><b>&lt;textarea&gt;</b><span style='font-weight:
      normal'> for the response to go in. </span></li>
      <li><b>&lt;imageresponse&gt;</b><span
      style='font-weight:normal'> implements a image click style image submission, 
        uses the foil structure tags <a href="#foil">below</a>. Additional tags 
        that should appear in a &lt;foil&gt; are: </span></li>
      <ul type=square>
        <li><b>&lt;image&gt;</b><span
       style='font-weight:normal'> required, the contained text specifies a published 
          graphical resource that is the image used, should only appear once per 
          foil</span></li>
        <li><b>&lt;rectangle&gt;</b><span
       style='font-weight:normal'> required, the contained text specifies a rectangular 
          area that is correct, should look like (1,2)-(3,4), at least 1 required</span></li>
        <li><b>&lt;text&gt;</b><span
       style='font-weight:normal'> required, the contained text is printed on 
          top of the image.</span></li>
      </ul>
      <li><b>&lt;optionresponse&gt;</b><span
      style='font-weight:normal'> implements a &quot;select from these choices&quot; 
        style question, the choices are specified by the instructor, it uses the 
        foil structure tags <a href="#foil">below</a> with this additional args: 
        </span></li>
      <ul type=square>
        <li><b>&lt;foilgroup&gt;</b><span
       style='font-weight:normal'> is required to have <i>options</i></span> which 
          should be a perl list of possible options for the student. </li>
      </ul>
      <li><b>&lt;radiobuttonresponse&gt;</b><span
      style='font-weight:normal'> implements a true / false style question with 
        1 correct answer.it uses the foil structure tags <a href="#foil">below</a> 
        but the <i>value</i></span> of a &lt;foil&gt;can only be &quot;true&quot; 
        or &quot;false&quot; or &quot;unused&quot; </li>
      <li><b>&lt;dataresponse&gt;</b><span
      style='font-weight:normal'> implements a straight data storage entry idea, 
        needs and interveing input tag like &lt;textline&gt; to work correctly.<br>
        Arguments: </span></li>
      <ul type=square>
        <li><i>name</i><span
       style='font-style:normal'> internal name for the value, it will have the 
          part id and respose id added on to it </span></li>
        <li><i>type</i><span
       style='font-style:normal'> type of data stored in this response field, 
          should be one of the types supported by parameter.html </span></li>
        <li><i>display</i><span
       style='font-style:normal'> a string that will be used to describe the field 
          when interfacing with humans </span></li>
      </ul>
    </ul>
  </ul>
  <p> <span style='font-size:10.0pt;
font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <b>&lt;externalresponse&gt;</b><span style='font-weight:
normal'> implements the ability to have an external program grade a response, 
    expects either a &lt;textline&gt; or &lt;textfield&gt; inside the tag. </span></p>
  <p>Arguments: </p>
  <ul type=disc>
    <ul type=circle>
      <ul type=square>
        <li><i>url</i><span
       style='font-style:normal'> the url to submit the answer and form to, does 
          not need to be a LON-CAPA machine. </span></li>
        <li><i>answer</i><span
       style='font-style:normal'> a string or scalar variable that can encode 
          something that should encode the correct answer, in some cases this 
          may be nothing. </span></li>
        <li><i>form</i><span
       style='font-style:normal'> a hash variable name that will be submitted 
          to the remote site as a HTTP form. </span></li>
      </ul>
    </ul>
  </ul>
  <p>The response of the remote server needs to be in XML as follows. </p>
  <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>
  <ul type=disc>
    <ul type=circle>
      <ul type=square>
        <li><b>&lt;loncapagrade&gt;</b><span
       style='font-weight:normal'> no arguments but must surround the response. 
          </span></li>
        <li><b>&lt;awardetail&gt;</b><span
       style='font-weight:normal'> required inner tag, the response inside must 
          be one of the detailed responses that appears in the data storage documentation 
          (CVS:loncapa/doce/homework/datastorage) </span></li>
        <li><b>&lt;message&gt;</b><span
       style='font-weight:normal'> optional message to have shown to the student 
          </span></li>
      </ul>
    </ul>
  </ul>
  <ul type=disc>
    <li><a name=foil><b>Foil Structure Tags</b></a><b> </b></li>
  </ul>
  <p>All tags that implement a foil structure have an optional arg of <i>max</i><span style='font-style:normal'> 
    that controls the maximum number of total foils to show. </span></p>
  <ul type=disc>
    <ul type=circle>
      <li><b>&lt;foilgroup&gt;</b><span
      style='font-weight:normal'> required, must be the tag that surrounds all 
        foil definitions </span></li>
      <li><b>&lt;foil&gt;</b><span
      style='font-weight:normal'> required, all data inside is a possible foil 
        </span></li>
      <li><b>&lt;conceptgroup&gt;</b><span
      style='font-weight:normal'> optional, surrounds a collection of &lt;foil&gt;, 
        when a problem is displayed only one of the contained &lt;foil&gt;is selected 
        for display. It receives one required argument <i>concept</i></span>. 
      </li>
    </ul>
    <li><b>Hint structure </b></li>
  </ul>
  <p>All of these tags must appear inside a <b>&lt;*response&gt;</b><span
style='font-weight:normal'> tag. </span></p>
  <ul type=disc>
    <ul type=circle>
      <li><b>&lt;hintgroup&gt;</b><span
      style='font-weight:normal'> Tag that surrounds all of a hint. </span></li>
      <li><b>&lt;hintpart&gt;</b><span
      style='font-weight:normal'> required, Tag to implement conditional hints. 
        It has a required argument <i>on</i></span>. When a &lt;*hint&gt; tag 
        named the same as the value the on attribute evaluates to be correct the 
        &lt;hintpart&gt; will show. If no other &lt;hintpart&gt; are to show then 
        all hintparts with a <i>on</i><span style='font-style:normal'> of &quot;default&quot; 
        will show </span></li>
      <li><b>&lt;numericalhint&gt;</b><span
      style='font-weight:normal'> has all the arguments that &lt;numericalresponse&gt;, 
        does and the required attribute <i>name</i></span> which should be set 
        to the value of which &lt;hintpart&gt; will be shown. </li>
    </ul>
    <li><b>Input Tags </b></li>
  </ul>
  <p>This group of tags implement a mechanism for getting data for students, they 
    will usually be used by a &lt;*response&gt;. </p>
  <ul type=disc>
    <ul type=circle>
      <li><b>&lt;textarea&gt;</b><span
      style='font-weight:normal'> creates a Large text input box, If data appears 
        between the start and end tags, the data will appear i the textarea if 
        the student has not yet made a submission. Additionally it takes two arguments 
        <i>rows</i></span> and <i>cols</i><span
      style='font-style:normal'> which control the height and width of the area 
        respectively. It defaults to 10 and 80. </span></li>
      <li><b>&lt;textline&gt;</b><span
      style='font-weight:normal'> creates a single line of input element, it accepts 
        1 argument <i>size</i></span> which controls the width on the textline, 
        it defaults to 20. </li>
    </ul>
    <li><b>Output Tags </b></li>
  </ul>
  <p>This group of tags generate useful pieces of output. </p>
  <ul type=disc>
    <ul type=circle>
      <li><b>&lt;standalone&gt;</b><span
      style='font-weight:normal'> everything in between the start and end tag 
        is shown only on the web, and only if the resource is not part of a course. 
        </span></li>
      <li><b>&lt;displayduedate&gt;</b><span
      style='font-weight:normal'> this will insert the current duedate if one 
        is set into the document. It is generated to be inside a table of 1x1 
        elements </span></li>
      <li><b>&lt;displaytitle&gt;</b><span
      style='font-weight:normal'> this will insert the title of the problem from 
        the metadata of the problem </span></li>
      <li><b>&lt;window&gt;</b><span
      style='font-weight:normal'> the text in between is put in a popup javascript 
        window </span></li>
      <li><b>&lt;m&gt;</b><span
      style='font-weight:normal'> the inside text is LaTeX, and is converted to 
        HTML (or MathML) on the fly, if the argument <i>eval</i></span> is set 
        to &quot;on&quot; the intervening text will have a perl var expansion 
        done to it before being converted. </li>
      <li><b>&lt;randomlabel&gt;</b><span
      style='font-weight:normal'> shows a specified image with images or text 
        labels randomly assigned to a set of specific locations, those locations 
        may also have values assigned to them. There is a hash generated conating 
        the mapping of labels to locations, labels to values, and locations to 
        values. Example: </span></li>
    </ul>
  </ul>
  <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>
  <p>Arguments: </p>
  <ul type=disc>
    <ul type=circle>
      <ul type=square>
        <li><i>bgimg</i><span
       style='font-style:normal'> either a fully qualified URL for an external 
          image, or a loncapa resource, it supports relative references (../images/apicture.gif), 
          the image must either be a GIF or JPEG </span></li>
        <li><i>width</i><span
       style='font-style:normal'> the width of the image in pixels </span></li>
        <li><i>height</i><span
       style='font-style:normal'> the height of the image in pixels </span></li>
        <li><i>texwidth</i><span
       style='font-style:normal'> the width of the image in millimeters </span></li>
      </ul>
    </ul>
  </ul>
  <p>Internal tags: </p>
  <ul type=disc>
    <ul type=circle>
      <ul type=square>
        <li><b>&lt;labelgroup&gt;</b><span
       style='font-weight:normal'> 1 required, multiple allowed. Declares a group 
          of locations and labels associated with them. <br>
          Arguments: </span></li>
        <ul type=square>
          <li><i>name</i><span
        style='font-style:normal'> this is the name of the group, a hash with 
            this name will be generated holding the mappings for later use in 
            the problem. For each location a value will be set for which label 
            is there, (EX. $hash{'1'}=&quot;TEXT-2&quot;). For locations with 
            values the hash will contain 2 items, a location to value mapping 
            ($hash{'value_1'}=10), and a label to value mapping ($hash{'labelvalue_2'}=10). 
            For all image style of labels there will also be a label description 
            to label URL mapping ($hash{'image_2'}=IMG-URL). Also the entry 'numlocations 
            will be set to the total number of locations that exist. (Note that 
            locations and labels start counting from 1.) </span></li>
          <li><i>type</i><span
        style='font-style:normal'> the type of labels in this group, either 'image' 
            or 'text' </span></li>
        </ul>
        <li><b>&lt;location&gt;</b><span
       style='font-weight:normal'> declares a location on the image that a label 
          should appear at <br>
          Arguments: </span></li>
        <ul type=square>
          <li><i>x</i><span
        style='font-style:normal'> the x value of the location in pixels </span></li>
          <li><i>y</i><span
        style='font-style:normal'> the y value of the location in pixels </span></li>
          <li><i>value</i><span
        style='font-style:normal'> a scalar value to associate at this location 
            (optional) </span></li>
        </ul>
        <li><b>&lt;label&gt;</b><span
       style='font-weight:normal'> declaration of a label, if this is a text type 
          labelgroup the internal text should be the text of the label (HTML is 
          not currently supported), if this is an image type of label the internal 
          text must be a LON-CAPA resource specification, and the description 
          filed must be set. <br>
          Arguments: </span></li>
        <ul type=square>
          <li><i>description</i><span
        style='font-style:normal'> a required field for image labels, it will 
            be used when setting values in the hash. </span></li>
        </ul>
      </ul>
    </ul>
    <li><b>Scripting </b></li>
  </ul>
  <p>These tags allow the document to behave programatically </p>
  <ul type=disc>
    <ul type=circle>
      <li><b>&lt;display&gt;</b><span
      style='font-weight:normal'> the intervening perl script is evaluated in 
        the safe space and the return value of the script replaces the entire 
        tag </span></li>
      <li><b>&lt;import&gt;</b><span
      style='font-weight:normal'> causes the parse to read in the file named in 
        the body of the tag and parse it as if the entire text of the file had 
        existed at location of the tag </span></li>
      <li><b>&lt;parserlib&gt;</b><span
      style='font-weight:normal'> the enclosed filename contains definitions for 
        new tags </span></li>
      <li><b>&lt;script&gt;</b><span
      style='font-weight:normal'> if the argument <i>type</i></span> is set to 
        &quot;loncapa/perl&quot; the enclosed data is a perl script which is evaluated 
        inside the perl Safe space. The return value of the script is ignored. 
      </li>
      <li><b>&lt;scriptlib&gt;</b><span
      style='font-weight:normal'> the enclosed filename contains perl code to 
        run in the safe space </span></li>
      <li><b>&lt;block&gt;</b><span
      style='font-weight:normal'> has a required argument <i>condition</i></span> 
        that is evaluated, it the condition is true everything inside the tag 
        is evaluated, if it is false everything inside the block tag is skipped 
      </li>
      <li><b>&lt;notsolved&gt;</b><span
      style='font-weight:normal'> everything inside the tag is skipped if the 
        problem is &quot;solved&quot; </span></li>
      <li><b>&lt;postanswerdate&gt;</b><span
      style='font-weight:normal'> everything inside the tag is skipped if the 
        problem is before the answer date </span></li>
      <li><b>&lt;preduedate&gt;</b><span
      style='font-weight:normal'> everything inside the tag is skipped if the 
        problem is after the due date </span></li>
      <li><b>&lt;randomlist&gt;</b><span
      style='font-weight:normal'> the enclosed tags are parsed in a stable random 
        order, optional argument <i>show</i></span> restricts the number of tags 
        indie that are actually parsed the no more than <i>show</i><span
      style='font-style:normal'>. </span></li>
      <li><b>&lt;solved&gt;</b><span
      style='font-weight:normal'> everything inside the tag is skipped if the 
        problem is &quot;not solved&quot; </span></li>
      <li><b>&lt;while&gt;</b><span
      style='font-weight:normal'> implements a while loop, required argument <i>condition</i></span> 
        is a perl scriptlet that when evaluated results in a true or false value, 
        on true the entirety of the text between the whiles is parsed. The condition 
        is tested again, etc. If false it goes to the next node in the parse. 
      </li>
    </ul>
    <li><b>Structure Tags </b></li>
  </ul>
  <p>These tags give the problem a structure and take care of the recording of 
    data and giving the student messages. </p>
  <ul type=disc>
    <ul type=circle>
      <li><b>&lt;problem&gt;</b><span
      style='font-weight:normal'> must be the first tag in the file, this tag 
        sets up the header of the webpage and generates the submit buttons, it 
        also handles due dates properly </span></li>
      <li><b>&lt;part&gt;</b><span
      style='font-weight:normal'> must be below &lt;problem&gt; if it is going 
        to be used. It does many of the same tasks as &lt;problem&gt; but allows 
        multiple separate problems to exist in a single file. </span></li>
      <li><b>&lt;startouttext&gt;&lt;endouttext&gt;</b><span
      style='font-weight:normal'> these tags are somewhat special, they must have 
        no internal text and occur in pairs. Their use is to mark up the problem 
        so the web editor knows what sections should be edited in a plain text 
        block on the web. </span></li>
    </ul>
  </ul>
  <h3><a name="_Toc421867128">&lt;script&gt; Functions</a></h3>
  <p>A list of functions that have been written that are available in the Safe 
    space scripting environment inside a problem. </p>
  <ul type=disc>
    <li>sin(x), cos(x), tan(x)</li>
    <li>asin(x), acos(x), atan(x), atan2(y,x)</li>
    <li>log(x), log10(x)</li>
    <li>exp(), pow(x,y), sqrt(x)</li>
    <li>abs(x), sgn(x)</li>
    <li>erf(x), erfc(x)</li>
    <li>ceil(x), floor(x)</li>
    <li>min(...), max(...)</li>
    <li>factorial(n)</li>
    <li>N%M</li>
    <li>sinh(x), cosh(x), tanh(x)</li>
    <li>asinh(x), acosh(x), atanh(x)</li>
    <li>roundto(x,n)</li>
    <li>web(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;) or web(a,b,c)</li>
    <li>html(&quot;a&quot;) or html(a)</li>
    <li>j0(x), j1(x), jn(n,x), jv(y,x)</li>
    <li>y0(x), y1(x), yn(n,x), yv(y,x)</li>
    <li>random</li>
    <li>choose</li>
    <li>tex(&quot;a&quot;,&quot;b&quot;) or tex(a,b)</li>
    <li>var_in_tex(a)</li>
    <li>to_string(x), to_string(x,y)</li>
    <li>class(), section()</li>
    <li>name(), student_number()</li>
    <li>open_date(), due_date(), answer_date()</li>
    <li>sub_string()</li>
    <li>array_moments(array)</li>
    <li>format(x,y),prettyprint(x,y)</li>
    <li>map(...)</li>
    <li>caparesponse_check</li>
    <li>caparesponse_check_list</li>
  </ul>
  <h3><a name="_Toc421867129">Detailed descriptions of each function and comparison 
    with CAPA</a></h3>
  <table border=1 cellpadding=0>
    <tr> 
      <td width=131 valign=top class="Normal"> <p><b>CAPA Functions</b></p></td>
      <td width=134 valign=top class="Normal"> <p><b>LON-CAPA</b></p></td>
      <td width=147 valign=top class="Normal"> <p><b>Descriptions</b></p></td>
      <td width=101 valign=top class="Normal"> <p><b>Differences (if any)</b></p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>sin(x), cos(x), tan(x)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;sin($x), &amp;cos($x), 
          &amp;tan($x)</p></td>
      <td width=147 valign=top class="Normal"> <p>Trigonometric functions where 
          x is in radians. $x can be a pure number, i.e., you can call &amp;sin(3.1415)</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>asin(x), acos(x), atan(x), atan2(y,x)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;asin($x), &amp;acos($x), 
          &amp;atan($x), &amp;atan2($y,$x)</p></td>
      <td width=147 valign=top class="Normal"> <p>Inverse trigonometric functions. 
          Return value is in radians. For asin and acos the value of x must be 
          between -1 and 1. The atan2 returns a value between -pi and pi the sign 
          of which is determined by y. $x and $y can be pure numbers</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>log(x), log10(x)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;log($x), &amp;log10($x)</p></td>
      <td width=147 valign=top class="Normal"> <p>Natural and base-10 logarithm. 
          $x can be a pure number</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>exp(x), pow(x,y), sqrt(x)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;exp($x), &amp;pow($x,$y), 
          &amp;sqrt($x)</p></td>
      <td width=147 valign=top class="Normal"> <p>Exponential, power and square 
          root, i.e.,e<sup>x</sup>, x<sup>y</sup> and /x. $x and $y can be pure 
          numbers</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>abs(x), sgn(x)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;abs($x), &amp;sgn($x)</p></td>
      <td width=147 valign=top class="Normal"> <p>Abs takes the absolute value 
          of x while sgn(x) returns 1, 0 or -1 depending on the value of x. For 
          x&gt;0, sgn(x) = 1, for x=0, sgn(x) = 0 and for x&lt;0, sgn(x) = -1. 
          $x can be a pure number</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>erf(x), erfc(x)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;erf($x), &amp;erfc($x)</p></td>
      <td width=147 valign=top class="Normal"> <p>Error function.&nbsp; erf = 
          2/sqrt(pi) integral (0,x) e<sup>t-sq</sup> and <i>erfx(x)</i><span style='font-style:normal'> 
          = 1.0 - </span><i>erf(x)</i><span
  style='font-style:normal'>.&nbsp; $x can be a pure number</span></p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>ceil(x), floor(x)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;ceil($x), &amp;floor($x)</p></td>
      <td width=147 valign=top class="Normal"> <p>Ceil function returns an integer 
          rounded up whereas floor function returns and integer rounded down. 
          If x is an integer than it returns the value of the integer. $x can 
          be a pure number</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>min(...), max(...)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;min(...), &amp;max(...)</p></td>
      <td width=147 valign=top class="Normal"> <p>Returns the minimum/ maximum 
          value of a list of arguments if the arguments are numbers. If the arguments 
          are strings then it returns a string sorted according to the ASCII codes</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>factorial(n)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;factorial($n)</p></td>
      <td width=147 valign=top class="Normal"> <p>Argument (n) must be an integer 
          else it will round down. The largest value for n is 170. $n can be a 
          pure number</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>N%M</p></td>
      <td width=134 valign=top class="Normal"> <p>$N%$M</p></td>
      <td width=147 valign=top class="Normal"> <p>N and M are integers and returns 
          the remainder (in integer) of N/M. $N and $M can be pure numbers</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>sinh(x), cosh(x), tanh(x)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;sinh($x), &amp;cosh($x), 
          &amp;tanh($x)</p></td>
      <td width=147 valign=top class="Normal"> <p>Hyperbolic functions. $x can 
          be a pure number</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>asinh(x), acosh(x), atanh(x)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;asinh($x), &amp;acosh($x), 
          &amp;atanh($x)</p></td>
      <td width=147 valign=top class="Normal"> <p>Inverse hyperbolic functions. 
          $x can be a pure number</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>/DIS($x,&quot;nn&quot;)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;format($x,&quot;nn&quot;)</p></td>
      <td width=147 valign=top class="Normal"> <p>Display or format $x as nn where 
          nn is nF or nE and n is an integer.</p></td>
      <td width=101 valign=top class="Normal"> <p>&nbsp;The difference is obvious.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>Not in CAPA</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;prettyprint($x,&quot;nn&quot;)</p></td>
      <td width=147 valign=top class="Normal"> <p>Display or format $x as nn where 
          nn is nF or nE and n is an integer. In E mode it will attempt to generate 
          a pretty x10^3 rather than a E3 following the number</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>roundto(x,n)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;roundto($x,$n)</p></td>
      <td width=147 valign=top class="Normal"> <p>Rounds a real number to n decimal 
          points. $x and $n can be pure numbers</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>web(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;) 
          or web(a,b,c)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;web(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;) 
          or &amp;web($a,$b,$c)</p></td>
      <td width=147 valign=top class="Normal"> <p>Returns either a, b or c depending 
          on the output medium. a is for plain ASCII, b for tex output and c for 
          html output</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>html(&quot;a&quot;) or html(a)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;html(&quot;a&quot;) or 
          &amp;html($a)</p></td>
      <td width=147 valign=top class="Normal"> <p>Output only if the output mode 
          chosen is in html format</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>jn(m,x)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;j0($x), &amp;j1($x), &amp;jn($m,$x), 
          &amp;jv($y,$x)</p></td>
      <td width=147 valign=top class="Normal"> <p>Bessel functions of the first 
          kind with orders 0, 1 and m respectively. For jn(m,x), m must be an 
          integer whereas for jv(y,x), y is real. $x can be a pure number. $m 
          must be an integer and can be a pure integer number. $y can be a pure 
          real number</p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA, j0, j1 and jn are contained 
          in one function, jn(m,x) where m takes the value of 0, 1 or 2. jv(y,x) 
          is new to LON-CAPA.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>yn(m,x)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;y0($x), &amp;y1($x), &amp;yn($m,$x), 
          &amp;yv($y,$x)</p></td>
      <td width=147 valign=top class="Normal"> <p>Bessel functions of the second 
          kind with orders 0, 1 and m respectively. For yn(m,x), m must be an 
          integer whereas for yv(y,x), y is real. $x can be a pure number. $m 
          must be an integer and can be a pure integer number. $y can be a pure 
          real number</p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA, y0, y1 and yn are contained 
          in one function, yn(m,x) where m takes the value of 0, 1 or 2. yv(y,x) 
          is new to LON-CAPA.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>random(l,u,d)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;random($l,$u,$d)</p></td>
      <td width=147 valign=top class="Normal"> <p>Returns a uniformly distributed 
          random number between the lower bound, l and upper bound, u in steps 
          of d. $l, $u and $d can be pure numbers</p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA, all the 3 arguments 
          must be of the same type. However, now you can mix the type</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>choose(i,...)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;choose($i,...)</p></td>
      <td width=147 valign=top class="Normal"> <p>Choose the ith item from the 
          argument list. i must be an integer greater than 0 and the value of 
          i should not exceed the number of items. $i can be a pure integer</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>/MAP(seed;w,x,y,z;a,b,c,d)</p></td>
      <td width=134 valign=top class="Normal"> <p>Option 1 - &amp;map($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d]) 
          or <br>
          Option 2 - &amp;map($seed,\@mappedArray,[$a,$b,$c,$d]) <br>
          Option 3 - @mappedArray = &amp;map($seed,[$a,$b,$c,$d]) <br>
          Option 4 - ($w,$x,$y,$z) = &amp;map($seed,\@a) <br>
          where $a='A'<br>
          $b='B'<br>
          $c='B'<br>
          $d='B'<br>
          $w, $x, $y, and $z are variables</p></td>
      <td width=147 valign=top class="Normal"> <p>Assigns to the variables $w, 
          $x, $y and $z the values of the $a, $b, $c and $c (A, B, C and D). The 
          precise value for $w .. depends on the seed. (Option 1 of calling map). 
          In option 2, the values of $a, $b .. are mapped into the array, @mappedArray. 
          The two options illustrate the different grouping. Options 3 and 4 give 
          a consistent way (with other functions) of mapping the items. For each 
          option, the group can be passed as an array, for example, [$a,$b,$c,$d] 
          =&gt; \@a.</p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA, the arguments are divided 
          into three groups separated by a semicolon ;. In LON-CAPA, the separation 
          is done by using [] brackets or using an array @a. Note the backslash 
          (\) before the arguments in the second and third groups.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>rmap(seed;a,b,c,d;w,x,y,z)</p></td>
      <td width=134 valign=top class="Normal"> <p>Option 1 - &amp;rmap($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d]) 
          or <br>
          Option 2 - &amp;rmap($seed,\@rmappedArray,[$a,$b,$c,$d]) <br>
          Option 3 - @rmapped_array = &amp;rmap($seed,[$a,$b,$c,$d]) <br>
          Option 4 - ($w,$x,$y,$z) = &amp;rmap($seed,\@a) <br>
          where $a='A'<br>
          $b='B'<br>
          $c='B'<br>
          $d='B'<br>
          $w, $x, $y, and $z are variables</p></td>
      <td width=147 valign=top class="Normal"> <p>The rmap functions does the 
          reverse action of map if the same seed is used in calling map and rmap. 
        </p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA, the arguments are divided 
          into three groups separated by a semicolon ;. In LON-CAPA, the separation 
          is done by using [] brackets (with create an unamed vector reference) 
          or using an array @a. Note the backslash (\) before the arguments in 
          the second and third groups (Which cause Perl to send to variable locations 
          rather than the variable values, similar to a C pointer).</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
      <td width=134 valign=top class="Normal"> <p>$a=&amp;xmlparse($string) </p></td>
      <td width=147 valign=top class="Normal"> <p>Runs the internal parser over 
          the argument parsing for display. <b>Warning</b><span style='font-weight:normal'> 
          This will result in different strings in different targets. Don't use 
          the results of this function as an answer.</span></p></td>
      <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>tex(a,b), tex(&quot;a&quot;,&quot;b&quot;)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;tex($a,$b), &amp;tex(&quot;a&quot;,&quot;b&quot;)</p></td>
      <td width=147 valign=top class="Normal"> <p>Returns a if the output mode 
          is in tex otherwise returns b</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>var_in_tex(a)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;var_in_tex($a)</p></td>
      <td width=147 valign=top class="Normal"> <p>Equivalent to tex(&quot;a&quot;,&quot;&quot;)</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>to_string(x), to_string(x,y)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;to_string($x), &amp;to_string($x,$y)</p></td>
      <td width=147 valign=top class="Normal"> <p>If x is an integer, returns 
          a string. If x is real than the output is a string with format given 
          by y. For example, if x = 12.3456, &amp;to_string(x,&quot;.3F&quot;) 
          = 12.345 and &amp;to_string(x,&quot;.3E&quot;) = 1.234E+01.</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>capa_id(), class(), section(), 
          set(), problem()</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;class(), &amp;section()</p></td>
      <td width=147 valign=top class="Normal"> <p>Returns null string, class descriptive 
          name, section number, set number and null string.</p></td>
      <td width=101 valign=top class="Normal"> <p>capa_id(), set() and problem() 
          are no longer used. Currently, they return a null value.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>name(), student_number()</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;name(), &amp;student_number()</p></td>
      <td width=147 valign=top class="Normal"> <p>Return the full name in the 
          following format: lastname, firstname initial. Student_number returns 
          the student 9-alphanumeric string. If undefined, the functions return 
          null.</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>open_date(), due_date(), answer_date()</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;open_date(), &amp;due_date(), 
          &amp;answer_date()</p></td>
      <td width=147 valign=top class="Normal"> <p>Problem open date, due date 
          and answer date. The time is also included in 24-hr format.</p></td>
      <td width=101 valign=top class="Normal"> <p>Output format for time is changed 
          slightly. If pass noon, it displays ..pm else it displays ..am. So 23:59 
          is displayed as 11:59 pm.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>get_seed(), set_seed()</p></td>
      <td width=134 valign=top class="Normal"> <p>Not implemented</p></td>
      <td width=147 valign=top class="Normal"> <p>Get and set the random seed.</p></td>
      <td width=101 valign=top class="Normal">&nbsp; </td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>sub_string(a,b,c)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;sub_string($a,$b,$c) <br>
          perl&nbsp; substr function. However, note the differences</p></td>
      <td width=147 valign=top class="Normal"> <p>Retrieve a portion of string 
          a starting from b and length c. For example,&nbsp; $a = &quot;Welcome 
          to LON-CAPA&quot;; $result=&amp;sub_string($a,4,4); then $result is 
          &quot;come&quot;</p></td>
      <td width=101 valign=top class="Normal"> <p>Perl intrinsic function, substr(string,b,c) 
          starts counting from 0 (as opposed to 1). In the example to the left, 
          substr($a,4,4) returns &quot;ome &quot;.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>array[xx]</p></td>
      <td width=134 valign=top class="Normal"> <p>@arrayname <br>
          Array is intrinsic in perl. To access a specific element use $arrayname[$n] 
          where $n is the $n+1 element since the array count starts from 0</p></td>
      <td width=147 valign=top class="Normal"> <p>&quot;xx&quot; can be a variable 
          or a calculation.</p></td>
      <td width=101 valign=top class="Normal"> <p>In LON-CAPA, an array is defined 
          by @arrayname. It is not necessary to specify the dimension of the array.&nbsp;</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>array_moments(B,A)</p></td>
      <td width=134 valign=top class="Normal"> <p>@B=&amp;array_moments(@A)</p></td>
      <td width=147 valign=top class="Normal"> <p>Evaluates the moments of an 
          array A and place the result in array B[i] where i = 0 to 4. The contents 
          of B are as follows: B[0] = number of elements, B[1] = mean, B[2] = 
          variance, B[3] = skewness and B[4] = kurtosis.</p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA, the moments are passed 
          as an array in the first argument whereas in LON-CAPA, the array containing 
          the moments are set equal to the function.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>array_max(Name), array_min(Name)</p></td>
      <td width=134 valign=top class="Normal"> <p>&amp;min(@Name), &amp;max(@Name)</p></td>
      <td width=147 valign=top class="Normal"> <p>In LON-CAPA to find the maximum 
          value of an array, use &amp;max(@arrayname)&nbsp; and to find the minimum 
          value of an array, use &amp;min(@arrayname)</p></td>
      <td width=101 valign=top class="Normal"> <p>Combined with the min and max 
          functions defined earlier.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>init_array(Name)</p></td>
      <td width=134 valign=top class="Normal"> <p>undef @name</p></td>
      <td width=147 valign=top class="Normal"> <p>To destroy the contents of an 
          array, use</p></td>
      <td width=101 valign=top class="Normal"> <p>Use perl intrinsic undef function.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>random_normal (return_array,item_cnt,seed,av,std_dev)</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_normal 
          ($item_cnt,$seed,$av,$std_dev)</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          of normal distribution of average $av and standard deviation $std_dev. 
          The distribution is generated from seed $seed</p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
          as the first argument whereas in LON-CAPA the results are set equal 
          to the function.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>random_beta (return_array,item_cnt,seed,aa,bb)</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_beta 
          ($item_cnt,$seed,$aa,$bb) <br>
          NOTE: Both $aa and $bb MUST be greater than 1.0E-37.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          of beta distribution. The density of beta is: X^($aa-1) *(1-X)^($bb-1) 
          /B($aa,$bb) for 0&lt;X&lt;1.</p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
          as the first argument whereas in LON-CAPA the results are set equal 
          to the function.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>random_gamma (return_array,item_cnt,seed,a,r)</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_gamma 
          ($item_cnt,$seed,$a,$r) <br>
          NOTE: Both $a and $r MUST be positive.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          of gamma distribution. The density of gamma is: ($a**$r)/gamma($r) * 
          X**($r-1) * exp(-$a*X).</p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
          as the first argument whereas in LON-CAPA the results are set equal 
          to the function.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>random_exponential (return_array,item_cnt,seed,av)</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_exponential 
          ($item_cnt,$seed,$av) <br>
          NOTE: $av MUST be non-negative.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          of exponential distribution. </p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
          as the first argument whereas in LON-CAPA the results are set equal 
          to the function.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>random_poisson (return_array,item_cnt,seed,mu)</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_poisson 
          ($item_cnt,$seed,$mu) <br>
          NOTE: $mu MUST be non-negative.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          of poisson distribution. </p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
          as the first argument whereas in LON-CAPA the results are set equal 
          to the function.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>random_chi (return_array,item_cnt,seed,df)</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_chi 
          ($item_cnt,$seed,$df) <br>
          NOTE: $df MUST be positive.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          of chi_square distribution with $df degrees of freedom. </p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
          as the first argument whereas in LON-CAPA the results are set equal 
          to the function.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>random_noncentral_chi (return_array,item_cnt,seed,df,nonc)</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_noncentral_chi 
          ($item_cnt,$seed,$df,$nonc) <br>
          NOTE: $df MUST be at least 1 and $nonc MUST be non-negative.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          of noncentral_chi_square distribution with $df degrees of freedom and 
          noncentrality parameter $nonc. </p></td>
      <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed 
          as the first argument whereas in LON-CAPA the results are set equal 
          to the function.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_f 
          ($item_cnt,$seed,$dfn,$dfd) <br>
          NOTE: Both $dfn and $dfd MUST be positive.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          of F (variance ratio) distribution with degrees of freedom $dfn (numerator) 
          and $dfd (denominator). </p></td>
      <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_noncentral_f 
          ($item_cnt,$seed,$dfn,$dfd,$nonc) <br>
          NOTE: $dfn must be at least 1, $dfd MUST be positive, and $nonc must 
          be non-negative.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          of noncentral F (variance ratio) distribution with degrees of freedom 
          $dfn (numerator) and $dfd (denominator). $nonc is the noncentrality 
          parameter. </p></td>
      <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>NOT DOCUMENTED IN CAPA</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_multivariate_normal 
          ($item_cnt,$seed,\@mean,\@covar) <br>
          NOTE: @mean should be of length p array of real numbers. @covar should 
          be a length p array of references to length p arrays of real numbers 
          (i.e. a p by p matrix.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          of multivariate_normal distribution with mean vector @mean and variance-covariance 
          matrix. </p></td>
      <td width=101 valign=top class="Normal"> <p>Note the backslash before the 
          @mean and @covar arrays.</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_multinomial 
          ($item_cnt,$seed,@p) <br>
          NOTE: $item_cnt is rounded with int() and the result must be non-negative. 
          The number of elements in @p must be at least 2.</p></td>
      <td width=147 valign=top class="Normal"> <p>Returns single observation from 
          multinomial distribution with $item_cnt events classified into as many 
          categories as the length of @p. The probability of an event being classified 
          into category i is given by ith element of @p. The observation is an 
          array with length equal to @p, so when called in a scalar context it 
          returns the length of @p. The sum of the elements of the obervation 
          is equal to $item_cnt.</p></td>
      <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_permutation 
          ($item_cnt,@array) </p></td>
      <td width=147 valign=top class="Normal"> <p>Returns @array randomly permuted.</p></td>
      <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_uniform 
          ($item_cnt,$seed,$low,$high) <br>
          NOTE: $low must be less than or equal to $high.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          from a uniform distribution. </p></td>
      <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_uniform_integer 
          ($item_cnt,$seed,$low,$high) <br>
          NOTE: $low and $high are both passed through int(). $low must be less 
          than or equal to $high.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          from a uniform distribution in integers. </p></td>
      <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_binomial 
          ($item_cnt,$seed,$nt,$p) <br>
          NOTE: $nt is rounded using int() and the result must be non-negative. 
          $p must be between 0 and 1 inclusive.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates 
          from the binomial distribution with $nt trials and the probabilty of 
          an event in each trial is $p. </p></td>
      <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
    </tr>
    <tr> 
      <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
      <td width=134 valign=top class="Normal"> <p>@return_array=&amp;random_negative_binomial 
          ($item_cnt,$seed,$ne,$p) <br>
          NOTE: $ne is rounded using int() and the result must be positive. $p 
          must be between 0 and 1 exclusive.</p></td>
      <td width=147 valign=top class="Normal"> <p>Generate an array of $item_cnt 
          outcomes generated from negative binomial distribution with $ne events 
          and the probabilty of an event in each trial is $p. </p></td>
      <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
    </tr>
  </table>
  <h3><a name="_Toc421867130">&lt;script&gt; Variables</a></h3>
  <ul type=disc>
    <li>$external::target - set to the current target the xml parser is parsing 
      for </li>
    <li>$external::part - set to the <i>id</i><span style='font-style:normal'> 
      of the current problem &lt;part&gt;; zero if there are no &lt;part&gt; </span></li>
    <li>$external::gradestatus - set to the value of the current resource.partid.solved 
      value </li>
    <li>$external::datestatus - set to the current status of the clock either 
      CLOSED, CAN_ANSWER, CANNOT_ANSWER, SHOW_ANSWER, or UNCHECKEDOUT </li>
    <li>$external::randomseed - set to the number that was used to seed the random 
      number generator </li>
    <li>$pi - set to PI </li>
    <li>$rad2deg - converts radians to degrees </li>
    <li>$deg2rad - converts degrees to radians </li>
  </ul>
  <h3><a name="_Toc421867131">Form internals</a> </h3>
  <p>Form elements used for homework editing/response </p>
  <p>the form is named lonhomework </p>
  <h3><a name="_Toc421867132">Viewing a problem (either CSTR or RES space)</a></h3>
  <ul type=disc>
    <li>grade_target, grade_username, grade_domain, grade_symb - the vaules take 
      precedence over the the normal ENV settings of these, use &amp;Apache::lonxml::whichuser() 
      to get back the correct vaues of the items </li>
    <li>HWVAL_response:number - the name of the input elements for each response. 
      The response is the response's ID, and the :number part exists only for 
      response with multiple foils, and is a unique number in order of the submission 
    </li>
    <li>changerandseed - the 'Change' button, only exists right after the Change 
      button is clicked </li>
    <li>problemmode - in CSTR, it is either 'View','Edit','EditXML' or 'Analyze' 
      depending on the desired view </li>
    <li>rndseed - the currently requested random seed </li>
    <li>showallfoils - if it exists, and we are in CSTR space, the problem should 
      ignore &lt;conceptgroup&gt; and the response's max setting and show all 
      possible foils </li>
    <li>submit - the name of the Submit button </li>
    <li>submitted - a hidden form parameter that can be used to tell if the student 
      has submitted answers or not, if it is set, there should be answers to grade. 
    </li>
  </ul>
  <h3><a name="_Toc421867133">Editing a problem (Edit mode)</a></h3>
  <p>tagdepth referes to the current value of the xmlparsers tagdepth couter ($Apache::lonxml::currentdepth)</p>
  <p>Note: the file edit.pm has many helper functions for creating the standard 
    elements for editing a tag and it's attributes, all of those functions follow 
    these conventions </p>
  <ul type=disc>
    <li>tagdepth_argname - I.E. 1_3.max, a parameter editing value, max is the 
      name of the parameter and it is for the third tag inside the first tag </li>
    <li>delete_tagdepth - if set to yes, delete tag tagdepth and all tags inside 
      of it </li>
    <li>homework_edit_tagdepth - used by both &amp;Apache::edit::editline and 
      &amp;Apache::edit::editfield for the &lt;textarea&gt; and &lt;input&gt; 
      form elements they create </li>
    <li>insert_tagdepth - used to request an tag insert, it is set to the id number 
      of the requested tag in the %Apache::lonxml::insertlist </li>
  </ul>
  <ul type=disc>
    <li> &nbsp; </li>
  </ul>
  <h3><a name="_Toc421867134">Symbs</a></h3>
  <p>To identify a specific instance of a resource, LON-CAPA uses symbols or Òsymbs.Ó 
    These identifiers are built from the URL of the map, the resource number of 
    the resource in the map, and the URL of the resource itself. The latter is 
    somewhat redundant, but might help if maps change.</p>
  <p>An example is</p>
  <p class=MsoHeader><span style='font-family:"Courier New"'>&nbsp;msu/korte/parts/part1.sequence___19___msu/korte/tests/part12.problem</span></p>
  <p class=MsoHeader>The respective map entry is</p>
  <p class=MsoHeader><span style='font-family:"Courier New"'>&nbsp;&lt;resource 
    id=&quot;19&quot; src=&quot;/res/msu/korte/tests/part12.problem&quot;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></p>
  <p class=MsoHeader><span style='font-family:"Courier New"'>&nbsp; title=&quot;Problem 
    2&quot;&gt;</span></p>
  <p class=MsoHeader><span style='font-family:"Courier New"'>&nbsp;&lt;/resource&gt;</span></p>
  <p class=MsoHeader>Symbs are used by the random number generator, as well as 
    to store and restore data specific to a certain instance of for example a 
    problem.</p>
  <h3><a name="_Toc421867135">Store / Restore</a></h3>
  <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
style='color:black'> and </span><span style='font-family:"Courier New";
color:black'>&amp;Apache::lonnet:restore()</span><span style='color:black'> (and 
    </span><span style='font-family:"Courier New";color:black'>&amp;Apache::lonnet::store()</span><span
style='color:black'>, which is is the non-critical message twin of </span><span
style='font-family:"Courier New";color:black'>cstore</span><span
style='color:black'>). These functions are for handlers to store a perl hash to 
    a userÕs permanent data space in an easy manner, and to retrieve it again 
    on another call. It is expected that a handler would use this once at the 
    beginning to retrieve data, and then again once at the end to send only the 
    new data back. </span></p>
  <p><span style='color:black'>The data is stored in the userÕs data directory 
    on the userÕs homeserver under the ID of the course.</span></p>
  <p><span style='color:black'>The hash that is returned by </span><span
style='font-family:"Courier New";color:black'>restore</span><span
style='color:black'> will have all of the previous value for all of the elements 
    of the hash. </span></p>
  <p><span style='color:black'>Example: </span></p>
  <p><span style='font-family:"Courier New";color:black'>#creating a hash</span></p>
  <p><span style='font-family:"Courier New";color:black'>my %hash;</span></p>
  <p><span style='font-family:"Courier New";color:black'>$hash{'foo'}='bar';</span></p>
  <p><span style='font-family:"Courier New";color:black'>#storing it</span></p>
  <p><span style='font-family:"Courier New";color:black'>&amp;Apache::lonnet::cstore(\%hash);</span></p>
  <p><span style='font-family:"Courier New";color:black'>#changing a value </span></p>
  <p><span style='font-family:"Courier New";color:black'>$hash{'foo'}='notbar';</span></p>
  <p><span style='font-family:"Courier New";color:black'>#adding a new value</span></p>
  <p><span style='font-family:"Courier New";color:black'>$hash{'bar'}='foo';</span></p>
  <p><span style='font-family:"Courier New";color:black'>&amp;Apache::lonnet::cstore(\%hash);</span></p>
  <p><span style='font-family:"Courier New";color:black'>#retrieving the hash</span></p>
  <p><span style='font-family:"Courier New";color:black'>my %history=&amp;Apache::lonnet::restore();</span></p>
  <p><span style='font-family:"Courier New";color:black'>#print the hash</span></p>
  <p><span style='font-family:"Courier New";color:black'>foreach my $key (sort(keys(%history))) 
    {</span></p>
  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; print(&quot;\%history{$key} 
    = $history{$key}&quot;);</span></p>
  <p><span style='font-family:"Courier New";color:black'>}</span></p>
  <p><span style='color:black'>Will print out: </span></p>
  <p><span style='font-family:"Courier New";color:black'>%history{1:foo} = bar</span></p>
  <p><span style='font-family:"Courier New";color:black'>%history{1:keys} = foo:timestamp</span></p>
  <p><span style='font-family:"Courier New";color:black'>%history{1:timestamp} 
    = 990455579</span></p>
  <p><span style='font-family:"Courier New";color:black'>%history{2:bar} = foo</span></p>
  <p><span style='font-family:"Courier New";color:black'>%history{2:foo} = notbar</span></p>
  <p><span style='font-family:"Courier New";color:black'>%history{2:keys} = foo:bar:timestamp</span></p>
  <p><span style='font-family:"Courier New";color:black'>%history{2:timestamp} 
    = 990455580</span></p>
  <p><span style='font-family:"Courier New";color:black'>%history{bar} = foo</span></p>
  <p><span style='font-family:"Courier New";color:black'>%history{foo} = notbar</span></p>
  <p><span style='font-family:"Courier New";color:black'>%history{timestamp} = 
    990455580</span></p>
  <p><span style='font-family:"Courier New";color:black'>%history{version} = 2</span></p>
  <p><span style='color:black'>Note that the special hash entries <i>keys</i></span><span style='color:black'>, 
    <i>version</i></span><span
style='color:black'> and <i>timestamp</i></span><span style='color:black'> were 
    added to the hash. <i>version</i></span><span style='color:black'> will be 
    equal to the total number of versions of the data that have been stored. The 
    <i>timestamp</i></span><span
style='color:black'> attribute will be the UNIX time the hash was stored. <i>keys</i></span><span
style='color:black'> is available in every historical section to list which keys 
    were added or changed at a specific historical revision of a hash. </span></p>
  <p><span style='color:black'><b>Warning</b></span><span
style='color:black'> do not store the hash that restore returns directly. This 
    will cause a mess since it will restore the historical keys as if the were 
    new keys. I.E. </span><span style='font-family:"Courier New";color:black'>1:foo</span><span
style='color:black'> will become </span><span style='font-family:"Courier New";
color:black'>1:1:foo</span><span style='color:black'> etc. </span></p>
  <p><span style='color:black'><b>Calling convention: </b></span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New";
color:black'>&nbsp; my %record=&amp;Apache::lonnet::restore($symb,$courseid,$domain,$uname,$home);</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New";
color:black'>&nbsp; &amp;Apache::lonnet::cstore(\%newrecord,$symb,$courseid,$domain,$uname,$home);</span></p>
  <p><span style='color:black'><b>Arguments (only %newrecord is required the rest 
    are somewhat optional, read the details): </b></span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>$symb</i></span><span
style='color:black'> - a string containing the internal name of the specific instance 
    of a resource. Usually this value can be gotten from </span><span
style='font-family:"Courier New";color:black'>&amp;Apache::lonnet::symbread($filename)</span><span
style='color:black'>. If the argument is blank, it will attempt to use </span><span
style='font-family:"Courier New";color:black'>symbread()</span><span
style='color:black'> for it. If the result is ambiguous store/restore will fail. 
    </span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>$courseid</i></span><span
style='color:black'> - the internal name for a course, usually found in </span><span
style='font-family:"Courier New";color:black'>$ENV{'request.course.id'}</span><span
style='color:black'> which is what will be looked at if no value is passed to 
    the functions. </span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>$domain</i></span><span
style='color:black'> - the domain that the user belongs to, usually found in </span><span
style='font-family:"Courier New";color:black'>$ENV{'user.domain'}</span><span
style='color:black'> which is what will be looked at if no value is passed to 
    the functions. </span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>$uname</i></span><span
style='color:black'> - the login name for the user, usually found in </span><span
style='font-family:"Courier New";color:black'>$ENV{'user.name'}</span><span
style='color:black'> which is what will be looked at if no value is passed to 
    the functions. </span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>$home</i></span><span
style='color:black'> - the homeserver for the user, usually found in </span><span
style='font-family:"Courier New";color:black'>$ENV{'user.home'}</span><span
style='color:black'> but can be easily gotten from a domain and name through </span><span
style='font-family:"Courier New";color:black'>&amp;Apache::lonnet::homeserver($uname,$domain)</span><span
style='color:black'>. If no value is passed to store/restore the value in %ENV 
    will be used. </span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>%newrecord</i></span><span
style='color:black'> - the hash to store being passed by reference </span></p>
  <p><span style='color:black'><b>Return values: </b></span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>an empty string</i></span><span
style='color:black'> - the function was unable to determine exactly where to store 
    or restore from. At least one of the &quot;optional&quot; arguments was unable 
    to be determined. </span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>a hash</i></span><span
style='color:black'> - restore successfully read a old hash for this specific 
    user / resource instance. </span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>no_such_host</i></span><span
style='color:black'> - the <i>$home</i></span><span style='color:black'> specfied 
    desn't exist in the network. </span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>con_delayed</i></span><span
style='color:black'> - the <i>$home</i></span><span style='color:black'> was uncontactable 
    at this time. The store will be delayed until it is again available. </span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>con_failed</i></span><span
style='color:black'> - the <i>$home</i></span><span style='color:black'> was uncontactable 
    at this time and store was unable to delay the store until a later time. The 
    store failed. </span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>ok</i></span><span
style='color:black'> - the store completed succesfully </span></p>
  <p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span></span> <span style='color:black'><i>error:</i></span><span
style='color:black'> - remote server failied to store or restore the reason follows 
    the </span><span style='font-family:"Courier New";color:black'>:</span><span
style='color:black'> </span></p>
  <h3><a name="_Toc421867136">Mandatory Homework Data</a></h3>
  <pre>&nbsp;</pre>
  <pre><span
style='font-size:9.0pt'>&lt;Provided by &amp;EXT() and set external to the resource, required&gt;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.opendate&nbsp;&nbsp; #unix time of when the local machine should let the</span></pre>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.duedate&nbsp;&nbsp;&nbsp; #unix time of when the local machine should stop</span></pre>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.answerdate #unix time of when the local machine should</span></pre>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.weight&nbsp;&nbsp;&nbsp;&nbsp; # points the problem is worth</span></pre>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.maxtries&nbsp;&nbsp; # maximum number of attempts the student can have</span></pre>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.type&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;# type of problem homework can be:</span></pre>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>&lt;numerical/formula/response needed: (has a default if nonexistant)&gt;</span></pre>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.responseid.tol&nbsp;&nbsp; # lots of possibilities here</span></pre>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.responseid.sig&nbsp; # one or two comma sepearted integers,&nbsp;&nbsp;&nbsp; </span></pre>
  <pre><span
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>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>&lt;Problem sets using cstore (required):&gt;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.solved # if not set, problem yet to be viewed</span></pre>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>resource.partid.tries&nbsp; # positive integer of number of unsuccessful attempts</span></pre>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # on</span></pre>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.awarded # float between 0 and 1, percentage of</span></pre>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.award # final detailed award that was applied to the entire</span></pre>
  <pre><span
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>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.previous # boolean, is this submission a previous submission</span></pre>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.responseid.submissons</span></pre>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.responseid.awarddetail</span></pre>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.responseid.message (optional) (not yet supported)</span></pre>
  <pre><span
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>
  <pre><span
style='font-size:9.0pt'>&nbsp;</span></pre>
  <pre><span
style='font-size:9.0pt'>resource.partid.bonustries (optional) (not yet supported)</span></pre>
  <pre><span
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>
  <pre><span
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>
  <pre>&nbsp;</pre>
  <h3><a name="_Toc421867137">Sample Problems</a></h3>
  <p class=H5><span style='layout-grid-mode:
both'>A Simple Problem</span></p>
  <p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;problem&gt;</span></p>
  <p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &lt;script type=&quot;loncapa/perl&quot;&gt;</span></p>
  <p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>$length=&amp;random(10,99,.1);</span></p>
  <p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>$width=&amp;random(1,10,.01);</span></p>
  <p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>@area=($length*($width*10));</span></p>
  <p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &lt;/script&gt;</span></p>
  <p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>What 
    is the area of a box $length mm in length and </span></p>
  <p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;format($width,&quot;2E&quot;) 
    cm in width.</span></p>
  <p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &lt;numericalresponse id=&quot;11&quot; answer=&quot;@area&quot; units=&quot;mm^2&quot;&gt;</span></p>
  <p style='
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; 
    &lt;textline&gt;&lt;/textline&gt;</span></p>
  <p style='
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; 
    &lt;responseparam name=&quot;tol&quot; type=&quot;tolerance&quot; default=&quot;5%&quot;&gt;&lt;/responseparam&gt;</span></p>
  <p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &lt;/numericalresponse&gt;</span></p>
  <p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/problem&gt;</span></p>
  <p class=H5><span
style='layout-grid-mode:both'>A More Complex Problem</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;problem&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;displayduedate 
    /&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;p&gt;&lt;displaytitle 
    /&gt;&lt;/p&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;script type=&quot;loncapa/perl&quot;&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF=&quot;&lt;b&gt; 
    F&lt;sub&gt;1&lt;/sub&gt; &lt;/b&gt;&quot;;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF1=&quot;&lt;b&gt; 
    F&lt;sub&gt;1&lt;/sub&gt; &lt;/b&gt;&quot;;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF2=&quot;&lt;b&gt; 
    F&lt;sub&gt;2&lt;/sub&gt; &lt;/b&gt;&quot;;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>$mF=&quot;|&lt;b&gt;F&lt;/b&gt;|&quot;;</span></p>
  <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>
  <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>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq1mag=&quot;|&lt;b&gt; 
    &lt;font face=symbol&gt;t&lt;/font&gt;&lt;sub&gt;1&lt;/sub&gt;&lt;/b&gt;|&quot;;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq2mag=&quot;|&lt;b&gt; 
    &lt;font face=symbol&gt;t&lt;/font&gt;&lt;sub&gt;2&lt;/sub&gt;&lt;/b&gt;|&quot;;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>$Q1=&quot;Q&lt;sub&gt;1&lt;/sub&gt;&quot;;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>$Q2=&quot;Q&lt;sub&gt;2&lt;/sub&gt;&quot;;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>$tau=&quot;&lt;font 
    face=symbol&gt;t&lt;/font&gt;&quot;;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>$tau1=&quot;&lt;font 
    face=symbol&gt;&lt;b&gt;t&lt;/b&gt;&lt;/font&gt;&lt;sub&gt;1&lt;/sub&gt;&quot;;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp; $val=&amp;random(1,4,1);</span></p>
  <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>
  <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>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/script&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;startouttext 
    /&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq1mag and $trq2mag 
    are the magnitudes of the torques produced repectively by </span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>forces $vF1 and $vF2 
    with respect the pivot P. The magnitudes of $vF1 is </span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F1mag and that of 
    $vF2 is $F2mag. $Q1 and $Q2 are the locations </span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>on a rigid body where 
    $vF1 and $vF2 act.&nbsp; </span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;endouttext /&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;optionresponse 
    max=&quot;600&quot;&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &lt;foilgroup options=&quot;('Correct','Incorrect','Can not tell')&quot;&gt;</span></p>
  <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; 
    &lt;conceptgroup concept=&quot;Effect of the moment-arm on the torque&quot;&gt;</span></p>
  <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; 
    &lt;foil name=&quot;1a&quot; value=&quot;Incorrect&quot;&gt;</span></p>
  <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; 
    For $F1mag larger than $F2mag , $trq1mag is larger than $trq2mag</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;1b&quot; value=&quot;Incorrect&quot;&gt;</span></p>
  <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; 
    For $F1mag smaller than $F2mag , $trq1mag is smaller than $trq2mag</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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;&lt;foil 
    name=&quot;1c&quot; value=&quot;Correct&quot;&gt;</span></p>
  <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; 
    For $F1mag larger than $F2mag , $trq1mag can be less&nbsp; than $trq2mag</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;1d&quot; value=&quot;Correct&quot;&gt;</span></p>
  <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; 
    For $F1mag smaller than $F2mag , $trq1mag can be larger&nbsp; than $trq2mag</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;/conceptgroup&gt; </span></p>
  <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; 
    &lt;conceptgroup concept=&quot;For a given pivot, relation of force vector 
    to torque.&quot;&gt;</span></p>
  <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; 
    &lt;foil name=&quot;2a&quot; value=&quot;Correct&quot;&gt;</span></p>
  <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; 
    The moment-arm of $vF is the shortest distance from P to the line along $vF 
    .</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;2b&quot; value=&quot;Incorrect&quot;&gt;</span></p>
  <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; 
    The moment-arm of $vF is the shortest distance from P to $vF vector.</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;2c&quot; value=&quot;Correct&quot;&gt;</span></p>
  <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; 
    The moment-arm of $vF is not the distance from P to Q&lt;sub&gt;1&lt;/sub&gt;.</span></p>
  <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;&lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;2d&quot; value=&quot;Incorrect&quot;&gt;</span></p>
  <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; 
    The moment-arm of $vF is the distance from P to Q&lt;sub&gt;1&lt;/sub&gt;.</span></p>
  <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; 
    &lt;/foil&gt; </span></p>
  <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; 
    &lt;/conceptgroup&gt;</span></p>
  <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; 
    &lt;conceptgroup concept=&quot;Torque is force x moment-arm.&quot;&gt;</span></p>
  <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; 
    &lt;foil name=&quot;3a&quot; value=&quot;Correct&quot;&gt;</span></p>
  <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; 
    $trq1mag equals to the product of the moment-arm and $F1mag .</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;3b&quot; value=&quot;Incorrect&quot;&gt;</span></p>
  <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; 
    $trq1mag equals to $F1mag times the distance from Q&lt;sub&gt;1&lt;/sub&gt; 
    to P.</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;3c&quot; value=&quot;Correct&quot;&gt;</span></p>
  <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; 
    $trq1mag is not equal to the product of $F1mag and the distance from Q&lt;sub&gt;1&lt;/sub&gt; 
    to P.</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;3d&quot; value=&quot;Incorrect&quot;&gt;</span></p>
  <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; 
    $trq1mag is not equal to the product of the moment-arm and $F1mag .</span></p>
  <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;&lt;/foil&gt;</span></p>
  <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; 
    &lt;/conceptgroup&gt;</span></p>
  <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; 
    &lt;conceptgroup concept=&quot;Pivot point is required to calculate torque&quot;&gt;</span></p>
  <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; 
    &lt;foil name=&quot;4a&quot; value=&quot;Correct&quot;&gt;</span></p>
  <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; 
    $tau1 vector depends on the location of P.</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;4b&quot; value=&quot;Incorrect&quot;&gt;</span></p>
  <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; 
    $tau1 vector does not depend on the location of P.</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;4c&quot; value=&quot;Correct&quot;&gt;</span></p>
  <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; 
    $tau1 vector has no meaning unless a pivot is selected.</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;4d&quot; value=&quot;Incorrect&quot;&gt;</span></p>
  <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; 
    $tau1 vector can be determined without selecting P. </span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;/conceptgroup&gt; </span></p>
  <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; 
    &lt;conceptgroup concept=&quot;torque from 2 forces acting along same line&quot;&gt;</span></p>
  <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; 
    &lt;foil name=&quot;5a&quot; value=&quot;Correct&quot;&gt;</span></p>
  <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; 
    Two equal forces, acting on a body along the same line but at different positions, 
    produce equal torques with respect to a given pivot.&quot;</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;5b&quot; value=&quot;Incorrect&quot;&gt;</span></p>
  <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; 
    Two equal forces, along the same line, produce equal torques with respect 
    to a given pivot only if they act at the same point on a body.&quot;</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;foil name=&quot;5c&quot; value=&quot;Incorrect&quot;&gt;</span></p>
  <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; 
    Two equal forces acting on a body along the same line but at different positions, 
    produce equal torques for only one pivot.&quot;</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <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; 
    &lt;/conceptgroup&gt;</span></p>
  <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; 
    &lt;foil name=&quot;6&quot; value=&quot;unused&quot;&gt;</span></p>
  <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; 
    This foil will never display since it is unused.</span></p>
  <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; 
    &lt;/foil&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &lt;/foilgroup&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &lt;notsolved&gt;</span></p>
  <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; 
    &lt;hintgroup&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>Think the definition 
    of the torque. The force and the moment-arm respect to the pivot.&nbsp; </span></p>
  <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; 
    &lt;/hintgroup&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&lt;/notsolved&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/optionresponse&gt;</span></p>
  <p><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/problem&gt;</span></p>
  <h3>&nbsp; </h3>
  <p> <img border=0 width=432 height=370
src="Session%20On2_files/image003.png" v:shapes="_x0000_i1025"> </p>
  <p><span style='font-size:14.0pt'><b>Fig. 3.1.1</b></span><span
style='font-size:14.0pt'> Ð Internal Structure of Homework Handler</span></p>
</div>
<br
clear=ALL style='page-break-before:always;'>
<div class=Section2> </div>
</body>
</html>

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