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

<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>