File:  [LON-CAPA] / doc / homework / Attic / homework3.html
Revision 1.1: download - view: text, annotated - select for diffs
Tue Jun 20 19:27:56 2000 UTC (24 years ago) by albertel
Branches: MAIN
CVS tags: version_0_4, stable_2002_spring, stable_2002_july, stable_2002_april, stable_2001_fall, STABLE, HEAD
-adding homework documentation

    1: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
    2: <html>
    3:   <head>
    4:     <title>LON-CAPA Homework System</title>
    5:   </head>
    6: 
    7:   <body>
    8:     <h1>LON-CAPA Homework System</h1>
    9:     
   10:     <h2>Tags</h2>
   11:     <ul>
   12:       <li>
   13: 	Output Tags
   14: 	
   15: 	<p>
   16: 	  This set of tags control how and when data gets sent to the
   17: 	  student, it also provides hints to the data's markup and
   18: 	  when it should be autoconverted, and when it should be
   19: 	  ignored. All of these tags except <tag>outtext</tag> are
   20: 	  valid and parsed by &parsed() inside a <tag>script</tag>.
   21: 	</p>
   22: 	<p>
   23: 	  Additionaly any perl style variables are replaced with the
   24: 	  values of the variable in the problem namespace.
   25: 	</p>
   26: 	<ul>
   27: 
   28: 	  <li>
   29: 	    <tag>outtext</tag> all data inside is assumed to be valid
   30: 	    html, the handler will attempt to autoconvert to the
   31: 	    output type. The only thing tags allowed inside are the
   32: 	    ones listed below.
   33: 	  </li>
   34: 	  <li>
   35: 	    <tag>target</tag> This tag specifies data that is not in
   36: 	    HTMl format inside an <tag>outtext</tag>. Takes a required
   37: 	    argument <arg>type</arg> and an optional argument
   38: 	    <arg>dest</arg>. <arg>type</arg> specifies a known valid
   39: 	    output target which is the format of the
   40: 	    data. <arg>dest</arg> specifies a list of possible output
   41: 	    targets that the data should be autoconverted for. The
   42: 	    <arg>type</arg> of the data is assumed to be a
   43: 	    <arg>dest</arg>. If the current target is not a
   44: 	    <arg>dest</arg> then the data is ignored.
   45: 	  </li>
   46: 	  
   47: 	  <li>
   48: 	    <tag>tex</tag> shorthand for &lt;target type=``tex''&gt;
   49: 	    <arg>dest</arg> is a valid argument.
   50: 	  </li>
   51: 	  
   52: 	  <li>
   53: 	    <tag>ascii</tag> shorthand for &lt;target type=``ascii''&gt;
   54: 	    <arg>dest</arg> is a valid argument.
   55: 	  </li>
   56: 	  
   57: 	  <li>
   58: 	    <tag>web</tag> shorthand for &lt;target type=``web''&gt;
   59: 	    <arg>dest</arg> is a valid argument.
   60: 	  </li>
   61: 	  
   62: 	  <li>
   63: 	    <tag>mathml</tag> shorthand for &lt;target
   64: 	    type=``mathml''&gt; <arg>dest</arg> is a valid argument,
   65: 	    mathml may be passed along unconverted in a web output
   66: 	    target.
   67: 	  </li>
   68: 	  
   69: 	</ul>
   70:       </li>
   71:     <br>
   72:     <li>
   73:       Form Elements:
   74:       
   75:       <p>
   76: 	This set of tags soley generate a representation of the proper
   77: 	form element on the output device. Need to look at what should
   78: 	  be provided when an exam is wanted.
   79:       </p>
   80:       <ul>
   81: 	<li> 
   82: 	  <tag>radio</tag> 
   83: 	  
   84: 	  <p>
   85: 	    web - provides a single button to check on and off, when
   86: 	    checked on all other radio buttons in the current
   87: 	    <tag>answergroup</tag> level will be set to off.
   88: 	  </p>
   89: 	  
   90: 	  <p>
   91: 	    tex - generates a circle before the data inside
   92: 	  </p>
   93: 	</li>
   94: 	<li>
   95: 	  <tag>list</tag>
   96: 	  <p>
   97: 	    web - provides a drop down box of all the possible options
   98: 	  </p>
   99: 	  <p>
  100: 	    tex - the list is displayed an students can select the
  101: 	    correct option
  102: 	  </p>
  103: 	</li>
  104: 	<li>
  105: 	  <tag>textline</tag>
  106: 	  <p>
  107: 	    web - a single line of reponse is provided to type into.
  108: 	  </p>
  109: 	  <p>
  110: 	    tex - a line is provided.
  111: 	  </p>
  112: 	</li>
  113: 	<li>
  114: 	  <tag>textarea</tag>
  115: 	  <p>
  116: 	    web - a textarea form is provided allowing multiples
  117: 	    lines of response
  118: 	  </p>
  119: 	  <p>
  120: 	    tex - a configureable number of lines is provided,
  121: 	    configured through the argument numlines, defaults to 10
  122: 	  </p>
  123: 	</li>
  124: 	<li>
  125: 	  <tag>check</tag>
  126: 	  <p>
  127: 	    web - either a checkbutton, or two radio buttons are provided
  128: 	  </p>
  129: 	  <p>
  130: 	    tex - a small box that can be checked is provided.
  131: 	  </p>
  132: 	</li>
  133: 	<li>
  134: 	  <tag>button</tag> -  Not sure this is useful
  135: 	</li>
  136:       </ul>
  137:     </li>
  138:     <li>
  139:       Randomiztion
  140:       <ul>
  141: 	<li>
  142: 	  <tag>randomlist</tag> this tag will cause the parser to
  143: 	  randomly select the order that it parses the next level of
  144: 	  tags, tags another leveldown will be done in order
  145: 	  though. Example:
  146: 	  <pre>
  147: <tag>randomlist</tag>
  148:         <tag>tag1</tag>
  149: 		<tag>subtag1</tag>
  150: 		<tag>/subtag1</tag>
  151: 		<tag>subtag2</tag>
  152: 		<tag>/subtag2</tag>
  153: 	<tag>/tag1</tag>
  154: 	<tag>tag2</tag>
  155: 		<tag>subtag1</tag>
  156: 		<tag>/subtag1</tag>
  157: 		<tag>subtag2</tag>
  158: 		<tag>/subtag2</tag>
  159: 	<tag>/tag2</tag>
  160: <tag>/randomlist</tag>
  161: </pre>
  162: 	  In this example, <tag>tag1</tag> or <tag>tag2</tag> will be
  163: 	  done first, but <tag>subtag1</tag> will always happen before
  164: 	  <tag>subtag2</tag>.
  165: 	</li>
  166: 	<li>
  167: 	  <tag>foil</tag>, <tag>showfoil/</tag>,
  168: 	  <tag>showrandomfoil/</tag> These tags combine to allow the
  169: 	  user greater control over the exact placement of a
  170: 	  randomized problem text. a <tag>foil</tag> tag defines a
  171: 	  section of the problem that will appear in places a
  172: 	  <tag>showfoil/</tag> or <tag>showrandomfoil/</tag> mark.
  173: 	  Internally, the parser will make a pass over an entire
  174: 	  answer group and count the number of <tag>foil</tag>,
  175: 	  <tag>showfoil/</tag>, and <tag>showrandomfoil/</tag> tags
  176: 	  that are used it will then make another pass and parse all
  177: 	  of the <tag>foil</tag> storing the results of these parses,
  178: 	  while parsing for each <tag>show*</tag> tag it hits it will
  179: 	  send to the output device a foil, the <tag>show*</tag> it
  180: 	  hit was a <tag>showfoil</tag> and this was the nth
  181: 	  <tag>show*</tag> it hit, it will display the nth foil. For
  182: 	  each <tag>showrandomfoil</tag> it hits it will randomly pick
  183: 	  from the remaining foils a foil to send to the output. If
  184: 	  there are more <tag>show*</tag> tags than foils, the extra
  185: 	  <tag>show*</tag> will have nothing sent out. If there are
  186: 	  more <tag>foil</tag> tags, the extras won't appear.  When
  187: 	  mixing <tag>showfoil</tag> and <tag>showrandomfoil</tag> the
  188: 	  result is undefined.
  189: 	</li>
  190:       </ul>
  191:     </li>
  192:     <li>
  193:       Answer Section
  194:       <ul>
  195: 	<li>
  196: 	  <tag>answergroup</tag> this defines a grouping of
  197: 	  <tag>*response</tag> that when responded to must all be
  198: 	  right in order for any to be right, this also allows
  199: 	  subgroups to exist. For example 1 of N questions that have a
  200: 	  1 of N hint question for a leaf in the orginal 1of N
  201: 	  question. The closing tag in this group uses the results
  202: 	  from the <tag>*response</tag>s to decide whether this
  203: 	  grouping was correct, and assigns a grade, and provides any
  204: 	  feedback.  
  205: 
  206:           <br><arg>ID</arg>, if this isn't set it will be set during
  207:           the publication step. It is used to assign parameters names
  208:           in a way that can be tracked if an instructor modifies
  209:           things by hand.
  210: 
  211: 	  <br><arg>name</arg> optional, if set, it will be used by the
  212: 	  resource assembly tool when one is modfiying parameters.
  213: 
  214: 	</li>
  215: 	<li>
  216: 	  <tag>*response</tag> further documentation will be available
  217: 	  in the future. Roughly these will take a set of data from
  218: 	  the enclosed input structures, and one or more correct
  219: 	  answers and return a correct of incorrect result, it may
  220: 	  also suggest a consumption of a try, and may provide a
  221: 	  reason for the incorrectness.
  222: 
  223: 	  <br>Required possible arguments:
  224: 	  
  225:           <br><arg>ID</arg>, if this isn't set it will be set during
  226:           the publication step. It is used to assign parameters names
  227:           in a way that can be tracked if an instructor modifies
  228:           things by hand.
  229: 
  230: 	  <br><arg>name</arg> optional, if set, it will be used by the
  231: 	  resource assembly tool when one is modfiying parameters.
  232: 	</li>
  233: 	<li>
  234: 	  <tag>param</tag> can appear inside a <tag>*response</tag>,
  235: 	  they provided config options for the <tag>*response</tag>
  236: 	  
  237: 	  <br><arg>type</arg> specifies the parameter name, what are
  238: 	  possible values depends on the <tag>*response</tag>
  239: 
  240: 	  <br><arg>value</arg> specifies the possible values for this
  241: 	  type, possible arguments are: "option1|option2|option3" or
  242: 	  "numerictype,lownum-highnum" numeric type can be either int
  243: 	  or float
  244: 
  245: 	  <br><arg>default</arg> specifies the default value for this
  246: 	  parameter if the instructor doesn't specifiy it
  247: 
  248: 	  <br><arg>ID</arg>, if this isn't set it will be set during
  249: 	  the publication step. It is used to assign parameters names
  250: 	  in a way that can be tracked if an instructor modifies
  251: 	  things by hand.
  252: 	</li>
  253:       </ul>
  254:     </li>
  255:     <li>
  256:       Problem Contruction
  257:       <ul>
  258: 	<li>
  259: 	  <tag>problem</tag> highest level tag, tells the parser that
  260: 	  this is a problem file
  261: 
  262: 	  <br><arg>name</arg> optional, if set, it will be used by the
  263: 	  resource assembly tool when one is modfiying parameters.
  264: 	</li>
  265: 	<li>
  266: 	  <tag>part</tag> a problem can consist of multiple parts,
  267: 	  each of these parts can be included or not included through
  268: 	  the construction of a page using the RAT, 
  269: 
  270:           <br><arg>ID</arg>, if this isn't set it will be set during
  271:           the publication step. It is used to assign parameters names
  272:           in a way that can be tracked if an instructor modifies
  273:           things by hand.
  274: 
  275: 	  <br><arg>name</arg> optional, if set, it will be used by the
  276: 	  resource assembly tool when one is modfiying parameters.
  277: 	</li>
  278: 	<li>
  279: 	  <tag>block</tag> are section of the problem that can be
  280: 	  conditional, and provide visual grouping clues. The optional
  281: 	  arg <arg>condition</arg> is set to a perl snippet that
  282: 	  controls whether the parser will evaluate the
  283: 	  <tag>block</tag> or not. Helper function will be created for
  284: 	  making hints and other study aids easy to contruct.
  285: 	</li>
  286: 	<li>
  287: 	  <tag>import</tag> causes the parse to read an additional
  288: 	  file in and parse it as if the entire text of file had
  289: 	  existed at the location of the <tag>import</tag>
  290: 	</li>
  291: 	<li>
  292: 	  <tag>script</tag> the enclosed body of text is parsed
  293: 	  directly in a safe Perl enviroment. Variables set here are
  294: 	  available throught the rest of the problem code, but all
  295: 	  actions taken persit only for the scope of the
  296: 	  <tag>problem</tag>. Except values which are expressly saved
  297: 	  and restored
  298: 	</li>
  299: 	<li>
  300: 	  <tag>while</tag> implements a while loop, required argument
  301: 	  <arg>condition</arg> is a perl scriptlet that when evaluated
  302: 	  results in a true or false value, on true the entirty of the
  303: 	  text between the whiles is parsed. The condition is tested
  304: 	  again, etc. If false it goes to the next node in the parse.
  305: 	</li>
  306:       </ul>
  307:     </li>
  308:     <li>
  309:       Libraries
  310:       <ul>
  311: 	<li>
  312: 	  <tag>scriptlib</tag> the enclosed name is a file that
  313: 	  contains definition for new tags.
  314: 	</li>
  315: 	<li>
  316: 	  <tag>parserlib</tag> the enclosed name is a file that
  317: 	  contains extensions to the parser.
  318: 	</li>
  319:       </ul>
  320:     </li>
  321:   </ul>
  322: 
  323: 
  324:     <h2>CAPA compatability function Calls</h2> Please refer to the
  325:     CAPA manual for documentation on what these functions do.
  326:     <ul>
  327:       <li> random </li>
  328:       <li> random_normal </li>
  329:       <li> random_beta </li>
  330:       <li> random_gamma </li>
  331:       <li> random_poisson </li>
  332:       <li> random_exponential </li>
  333:       <li> random_chi </li>
  334:       <li> random_noncentral_chi </li>
  335:       <li> choose </li>
  336:       <li> var_in_tex </li>
  337:       <li> capa_id </li>
  338:       <li> class, section, set, problem, name, student_number </li>
  339:       <li> due_date, open_date, answer_date </li>
  340:       <li> to_string </li>
  341:       <li> sub_string </li>
  342:       <li> strlen </li>
  343:       <li> get_seed </li>
  344:       <li> set_seed </li>
  345:       <li> init_array </li>
  346:       <li> array_max, array_min </li>
  347:       <li> array_moments </li>
  348:       <li> to_int </li>
  349:       <li> format </li>
  350:       <li> pick </li>
  351:       <li> sin, cos, tan, asin, acos, atan, atan2 </li>
  352:       <li> sinh, cosh, tanh, asinh, acosh, atanh </li>
  353:       <li> j0, j1, jn, y0, y1, yn </li>
  354:       <li> log, log10 </li>
  355:       <li> exp, pow </li>
  356:       <li> erf, erfc </li>
  357:       <li> sqrt </li>
  358:       <li> min, max </li>
  359:       <li> abs, floor, ceil, sgn, mod, remainder </li>
  360:       <li> factorial </li>
  361:       <li> roundto </li>
  362:       <li> eval_formula </li>
  363:       <li> capa_id_plus </li>
  364:       <li> seat_number </li>
  365:       <li> duration </li>
  366:       <li> is_open, is_due, is_answer </li>
  367:       <li> managermode </li>
  368:     </ul>
  369: 
  370:     <hr>
  371:     <address><a href="mailto:albertel@marvin.lite.msu.edu">Guy Albertelli</a></address>
  372: <!-- Created: Mon Mar 27 16:14:28 EST 2000 -->
  373: <!-- hhmts start -->
  374: Last modified: Thu Jun  1 16:06:26 EDT 2000
  375: <!-- hhmts end -->
  376:   </body>
  377: </html>

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