[LON-CAPA-cvs] cvs: doc /gutshtml DifferentTypesofLON.html FastInstallation.html HardwarespecificationforLON.html SessionFiv1.html SessionFiv2.html SessionFive.html SessionFou1.html SessionFou2.html SessionFour.html SessionOn1.html SessionOn2.html SessionOne.html SessionThre1.html SessionThre2.html SessionThree.html SessionTw1.html SessionTw2.html SessionTwo.html

bowersj2 lon-capa-cvs@mail.lon-capa.org
Tue, 22 Jul 2003 14:47:00 -0000


This is a MIME encoded message

--bowersj21058885220
Content-Type: text/plain

bowersj2		Tue Jul 22 10:47:00 2003 EDT

  Modified files:              
    /doc/gutshtml	DifferentTypesofLON.html FastInstallation.html 
                 	HardwarespecificationforLON.html SessionFiv1.html 
                 	SessionFiv2.html SessionFive.html SessionFou1.html 
                 	SessionFou2.html SessionFour.html SessionOn1.html 
                 	SessionOn2.html SessionOne.html SessionThre1.html 
                 	SessionThre2.html SessionThree.html SessionTw1.html 
                 	SessionTw2.html SessionTwo.html 
  Log:
  Convert GUTs HTML to PROPER line endings.
  
  
--bowersj21058885220
Content-Type: text/plain
Content-Disposition: attachment; filename="bowersj2-20030722104700.txt"

Index: doc/gutshtml/DifferentTypesofLON.html
diff -u doc/gutshtml/DifferentTypesofLON.html:1.1 doc/gutshtml/DifferentTypesofLON.html:1.2
--- doc/gutshtml/DifferentTypesofLON.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/DifferentTypesofLON.html	Tue Jul 22 10:47:00 2003
@@ -1 +1,221 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:w="urn:schemas-microsoft-com:office:word"xmlns="http://www.w3.org/TR/REC-html40"><head><meta name=Title content=" Different Types of LON-CAPA Servers"><meta name=Keywords content=""><meta http-equiv=Content-Type content="text/html; charset=macintosh"><meta name=ProgId content=Word.Document><meta name=Generator content="Microsoft Word 10"><meta name=Originator content="Microsoft Word 10"><link rel=File-List href="Different%20Types%20of%20LON_files/filelist.xml"><title> Different Types of LON-CAPA Servers</title><!--[if gte mso 9]><xml> <o:DocumentProperties>  <o:Author>Gerd Kortemeyer</o:Author>  <o:Template>Normal</o:Template>  <o:Revision>1</o:Revision>  <o:TotalTime>0</o:TotalTime>  <o:Created>2002-06-27T21:54:00Z</o:Created>  <o:Pages>1</o:Pages>  <o:Words>215</o:Words>  <o:Characters>1226</o:Characters>  <o:Company>Michigan State University</o:Company>  <o:Lines>10</o:Lines>  <o:Paragraphs>2</o:Paragraphs>  <o:CharactersWithSpaces>1505</o:CharactersWithSpaces>  <o:Version>10.1412</o:Version> </o:DocumentProperties> <o:OfficeDocumentSettings>  <o:AllowPNG/>  <o:DownloadComponents>120</o:DownloadComponents>  <o:PixelsPerInch>1600x1200</o:PixelsPerInch> </o:OfficeDocumentSettings></xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument>  <w:Zoom>0</w:Zoom>  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>  <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery>  <w:UseMarginsForDrawingGridOrigin/> </w:WordDocument></xml><![endif]--><style><!-- /* Font Definitions */@font-face	{font-family:"Times New Roman";	panose-1:0 2 2 6 3 5 4 5 2 3;	mso-font-charset:0;	mso-generic-font-family:auto;	mso-font-pitch:variable;	mso-font-signature:50331648 0 0 0 1 0;}@font-face	{font-family:Arial;	panose-1:0 2 11 6 4 2 2 2 2 2;	mso-font-charset:0;	mso-generic-font-family:auto;	mso-font-pitch:variable;	mso-font-signature:50331648 0 0 0 1 0;}@font-face	{font-family:"Courier New";	panose-1:0 2 7 3 9 2 2 5 2 4;	mso-font-charset:0;	mso-generic-font-family:auto;	mso-font-pitch:variable;	mso-font-signature:50331648 0 0 0 1 0;}@font-face	{font-family:Wingdings;	panose-1:0 5 2 1 2 1 8 4 8 7;	mso-font-charset:2;	mso-generic-font-family:auto;	mso-font-pitch:variable;	mso-font-signature:0 16 0 0 -2147483648 0;} /* Style Definitions */p.MsoNormal, li.MsoNormal, div.MsoNormal	{mso-style-parent:"";	margin:0in;	margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:12.0pt;	font-family:Times;}h1	{mso-style-next:Normal;	margin:0in;	margin-bottom:.0001pt;	mso-pagination:widow-orphan;	page-break-after:avoid;	mso-outline-level:1;	font-size:14.0pt;	font-family:"Times New Roman";	mso-font-kerning:0pt;	font-weight:bold;}h2	{mso-style-next:Normal;	margin-top:12.0pt;	margin-right:0in;	margin-bottom:3.0pt;	margin-left:0in;	mso-pagination:widow-orphan;	page-break-after:avoid;	mso-outline-level:2;	font-size:12.0pt;	font-family:Arial;	font-weight:bold;	font-style:italic;}p	{margin-right:0in;	mso-margin-top-alt:auto;	mso-margin-bottom-alt:auto;	margin-left:0in;	mso-pagination:widow-orphan;	font-size:12.0pt;	font-family:"Times New Roman";}tt {}@page Section1	{size:8.5in 11.0in;	margin:1.0in 1.25in 1.0in 1.25in;	mso-header-margin:.5in;	mso-footer-margin:.5in;	mso-paper-source:0;}div.Section1	{page:Section1;}@page Section2	{size:8.5in 11.0in;	margin:1.0in 1.25in 1.0in 1.25in;	mso-header-margin:.5in;	mso-footer-margin:.5in;	mso-paper-source:0;}div.Section2	{page:Section2;} /* List Definitions */@list l0	{mso-list-id:915936857;	mso-list-type:hybrid;	mso-list-template-ids:327573464 1753628356 1403960406 -1635377814 -316785360 -1237056688 2126661908 -658203928 577807390 -1131145538;}@list l0:level1	{mso-level-number-format:bullet;	mso-level-text:\F0B7;	mso-level-tab-stop:.5in;	mso-level-number-position:left;	text-indent:-.25in;	font-size:10.0pt;	font-family:Symbol;}ol	{margin-bottom:0in;}ul	{margin-bottom:0in;}--></style></head><body bgcolor=white lang=EN-US style='tab-interval:.5in'><div class=Section1><span style='font-size:14.0pt;font-family:"Times New Roman";mso-ansi-language:EN-US'><b><br clear=ALL style='page-break-before:always'></b></span><h1><a name="_Toc421867148">Different Types of LON-CAPA Servers</a></h1><p><i>Scott Harrison, freeware volunteer, sharrison@sourceforge.net</i><spanstyle='font-style:normal'> </span></p><h2><a name="_Toc421867149">Introduction</a></h2><p>There are two different kinds of LON-CAPA servers, Library Servers andAccess Servers. On any LON-CAPA machine, you can look at the server type byviewing the file <tt><span style='font-family:"Courier New"'>/etc/httpd/conf/loncapa.conf</span></tt>and looking at the variable <strong>lonRole</strong>. </p><h2><a name="_Toc421867150">Library Servers</a></h2><p>Library Servers are repositories of authoritative educational resources.These servers also provide the construction space by which instructors assembletheir classroom online material. First-time installations of LON-CAPA at aninstitution should be for Library Servers (and not Access Servers). </p><p>Only Library Servers make use of a MySQL database. </p><p>On the filesystem, the following directories are used primarily by LibraryServers (and not Access Servers): </p><ul type=disc> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;     mso-list:l0 level1 lfo1;tab-stops:list .5in'><tt><span style='font-family:     "Courier New"'>/home/USERNAME/</span></tt> - authors are standard Linux     users that exist on Library Servers </li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;     mso-list:l0 level1 lfo1;tab-stops:list .5in'><tt><span style='font-family:     "Courier New"'>/home/httpd/lonUsers/</span></tt> - user profile     information is stored inside Library Servers </li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;     mso-list:l0 level1 lfo1;tab-stops:list .5in'><tt><span style='font-family:     "Courier New"'>/home/httpd/html/res/</span></tt></li></ul><p class=MsoNormal style='margin-left:.5in'>- Library Servers use this space tohold authoritative or cached versions of educational resources; Access Serversonly use this space to hold cached versions of educational resources </p><h2><a name="_Toc421867151">Access Servers</a></h2><p>Access Servers load-balance high-traffic delivery of educational resourcesover the world-wide web. Access Servers do not require a MySQL database and donot contain Linux user accounts. Several of the active directories on LibraryServers are not needed on an Access Servers. </p></div><span style='font-size:12.0pt;font-family:Times;mso-ansi-language:EN-US'><brclear=ALL style='page-break-before:always;mso-break-type:section-break'></span><div class=Section2><p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p></div></body></html>
\ No newline at end of file
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta name=Title content=" Different Types of LON-CAPA Servers">
+<meta name=Keywords content="">
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 10">
+<meta name=Originator content="Microsoft Word 10">
+<link rel=File-List href="Different%20Types%20of%20LON_files/filelist.xml">
+<title> Different Types of LON-CAPA Servers</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+  <o:Author>Gerd Kortemeyer</o:Author>
+  <o:Template>Normal</o:Template>
+  <o:Revision>1</o:Revision>
+  <o:TotalTime>0</o:TotalTime>
+  <o:Created>2002-06-27T21:54:00Z</o:Created>
+  <o:Pages>1</o:Pages>
+  <o:Words>215</o:Words>
+  <o:Characters>1226</o:Characters>
+  <o:Company>Michigan State University</o:Company>
+  <o:Lines>10</o:Lines>
+  <o:Paragraphs>2</o:Paragraphs>
+  <o:CharactersWithSpaces>1505</o:CharactersWithSpaces>
+  <o:Version>10.1412</o:Version>
+ </o:DocumentProperties>
+ <o:OfficeDocumentSettings>
+  <o:AllowPNG/>
+  <o:DownloadComponents>120</o:DownloadComponents>
+  <o:PixelsPerInch>1600x1200</o:PixelsPerInch>
+ </o:OfficeDocumentSettings>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:Zoom>0</w:Zoom>
+  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
+  <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery>
+  <w:UseMarginsForDrawingGridOrigin/>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+	{font-family:"Times New Roman";
+	panose-1:0 2 2 6 3 5 4 5 2 3;
+	mso-font-charset:0;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:50331648 0 0 0 1 0;}
+@font-face
+	{font-family:Arial;
+	panose-1:0 2 11 6 4 2 2 2 2 2;
+	mso-font-charset:0;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:50331648 0 0 0 1 0;}
+@font-face
+	{font-family:"Courier New";
+	panose-1:0 2 7 3 9 2 2 5 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:50331648 0 0 0 1 0;}
+@font-face
+	{font-family:Wingdings;
+	panose-1:0 5 2 1 2 1 8 4 8 7;
+	mso-font-charset:2;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:0 16 0 0 -2147483648 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:Times;}
+h1
+	{mso-style-next:Normal;
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:1;
+	font-size:14.0pt;
+	font-family:"Times New Roman";
+	mso-font-kerning:0pt;
+	font-weight:bold;}
+h2
+	{mso-style-next:Normal;
+	margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:2;
+	font-size:12.0pt;
+	font-family:Arial;
+	font-weight:bold;
+	font-style:italic;}
+p
+	{margin-right:0in;
+	mso-margin-top-alt:auto;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";}
+tt {}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+@page Section2
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section2
+	{page:Section2;}
+ /* List Definitions */
+@list l0
+	{mso-list-id:915936857;
+	mso-list-type:hybrid;
+	mso-list-template-ids:327573464 1753628356 1403960406 -1635377814 -316785360 -1237056688 2126661908 -658203928 577807390 -1131145538;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	font-size:10.0pt;
+	font-family:Symbol;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style>
+</head>
+
+<body bgcolor=white lang=EN-US style='tab-interval:.5in'>
+
+<div class=Section1><span style='font-size:14.0pt;font-family:"Times New Roman";
+mso-ansi-language:EN-US'><b><br clear=ALL style='page-break-before:always'>
+</b></span>
+
+<h1><a name="_Toc421867148">Different Types of LON-CAPA Servers</a></h1>
+
+<p><i>Scott Harrison, freeware volunteer, sharrison@sourceforge.net</i><span
+style='font-style:normal'> </span></p>
+
+<h2><a name="_Toc421867149">Introduction</a></h2>
+
+<p>There are two different kinds of LON-CAPA servers, Library Servers and
+Access Servers. On any LON-CAPA machine, you can look at the server type by
+viewing the file <tt><span style='font-family:"Courier New"'>/etc/httpd/conf/loncapa.conf</span></tt>
+and looking at the variable <strong>lonRole</strong>. </p>
+
+<h2><a name="_Toc421867150">Library Servers</a></h2>
+
+<p>Library Servers are repositories of authoritative educational resources.
+These servers also provide the construction space by which instructors assemble
+their classroom online material. First-time installations of LON-CAPA at an
+institution should be for Library Servers (and not Access Servers). </p>
+
+<p>Only Library Servers make use of a MySQL database. </p>
+
+<p>On the filesystem, the following directories are used primarily by Library
+Servers (and not Access Servers): </p>
+
+<ul type=disc>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo1;tab-stops:list .5in'><tt><span style='font-family:
+     "Courier New"'>/home/USERNAME/</span></tt> - authors are standard Linux
+     users that exist on Library Servers </li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo1;tab-stops:list .5in'><tt><span style='font-family:
+     "Courier New"'>/home/httpd/lonUsers/</span></tt> - user profile
+     information is stored inside Library Servers </li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo1;tab-stops:list .5in'><tt><span style='font-family:
+     "Courier New"'>/home/httpd/html/res/</span></tt></li>
+</ul>
+
+<p class=MsoNormal style='margin-left:.5in'>- Library Servers use this space to
+hold authoritative or cached versions of educational resources; Access Servers
+only use this space to hold cached versions of educational resources </p>
+
+<h2><a name="_Toc421867151">Access Servers</a></h2>
+
+<p>Access Servers load-balance high-traffic delivery of educational resources
+over the world-wide web. Access Servers do not require a MySQL database and do
+not contain Linux user accounts. Several of the active directories on Library
+Servers are not needed on an Access Servers. </p>
+
+</div>
+
+<span style='font-size:12.0pt;font-family:Times;mso-ansi-language:EN-US'><br
+clear=ALL style='page-break-before:always;mso-break-type:section-break'>
+</span>
+
+<div class=Section2>
+
+<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
+
+</div>
+
+</body>
+
+</html>
Index: doc/gutshtml/FastInstallation.html
diff -u doc/gutshtml/FastInstallation.html:1.1 doc/gutshtml/FastInstallation.html:1.2
--- doc/gutshtml/FastInstallation.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/FastInstallation.html	Tue Jul 22 10:47:00 2003
@@ -1 +1,479 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:w="urn:schemas-microsoft-com:office:word"xmlns="http://www.w3.org/TR/REC-html40"><head><meta name=Title content="Fast Installation: Setting up a Red Hat 7"><meta name=Keywords content=""><meta http-equiv=Content-Type content="text/html; charset=macintosh"><meta name=ProgId content=Word.Document><meta name=Generator content="Microsoft Word 10"><meta name=Originator content="Microsoft Word 10"><link rel=File-List href="Fast%20Installation_files/filelist.xml"><title>Fast Installation: Setting up a Red Hat 7</title><!--[if gte mso 9]><xml> <o:DocumentProperties>  <o:Author>Gerd Kortemeyer</o:Author>  <o:Template>Normal</o:Template>  <o:Revision>1</o:Revision>  <o:TotalTime>0</o:TotalTime>  <o:Created>2002-06-27T21:54:00Z</o:Created>  <o:Pages>1</o:Pages>  <o:Words>1010</o:Words>  <o:Characters>5762</o:Characters>  <o:Company>Michigan State University</o:Company>  <o:Lines>48</o:Lines>  <o:Paragraphs>11</o:Paragraphs>  <o:CharactersWithSpaces>7076</o:CharactersWithSpaces>  <o:Version>10.1412</o:Version> </o:DocumentProperties> <o:OfficeDocumentSettings>  <o:AllowPNG/>  <o:DownloadComponents>120</o:DownloadComponents>  <o:PixelsPerInch>1600x1200</o:PixelsPerInch> </o:OfficeDocumentSettings></xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument>  <w:Zoom>0</w:Zoom>  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>  <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery>  <w:UseMarginsForDrawingGridOrigin/> </w:WordDocument></xml><![endif]--><style><!-- /* Font Definitions */@font-face	{font-family:"Times New Roman";	panose-1:0 2 2 6 3 5 4 5 2 3;	mso-font-charset:0;	mso-generic-font-family:auto;	mso-font-pitch:variable;	mso-font-signature:50331648 0 0 0 1 0;}@font-face	{font-family:Arial;	panose-1:0 2 11 6 4 2 2 2 2 2;	mso-font-charset:0;	mso-generic-font-family:auto;	mso-font-pitch:variable;	mso-font-signature:50331648 0 0 0 1 0;}@font-face	{font-family:"Courier New";	panose-1:0 2 7 3 9 2 2 5 2 4;	mso-font-charset:0;	mso-generic-font-family:auto;	mso-font-pitch:variable;	mso-font-signature:50331648 0 0 0 1 0;}@font-face	{font-family:Wingdings;	panose-1:0 5 2 1 2 1 8 4 8 7;	mso-font-charset:2;	mso-generic-font-family:auto;	mso-font-pitch:variable;	mso-font-signature:0 16 0 0 -2147483648 0;} /* Style Definitions */p.MsoNormal, li.MsoNormal, div.MsoNormal	{mso-style-parent:"";	margin:0in;	margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:12.0pt;	font-family:Times;}h1	{mso-style-next:Normal;	margin:0in;	margin-bottom:.0001pt;	mso-pagination:widow-orphan;	page-break-after:avoid;	mso-outline-level:1;	font-size:14.0pt;	font-family:"Times New Roman";	mso-font-kerning:0pt;	font-weight:bold;}h2	{mso-style-next:Normal;	margin-top:12.0pt;	margin-right:0in;	margin-bottom:3.0pt;	margin-left:0in;	mso-pagination:widow-orphan;	page-break-after:avoid;	mso-outline-level:2;	font-size:12.0pt;	font-family:Arial;	font-weight:bold;	font-style:italic;}p	{margin-right:0in;	mso-margin-top-alt:auto;	mso-margin-bottom-alt:auto;	margin-left:0in;	mso-pagination:widow-orphan;	font-size:12.0pt;	font-family:"Times New Roman";}pre	{margin:0in;	margin-bottom:.0001pt;	mso-pagination:widow-orphan;	tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;	font-size:10.0pt;	font-family:"Courier New";}tt {}@page Section1	{size:8.5in 11.0in;	margin:1.0in 1.25in 1.0in 1.25in;	mso-header-margin:.5in;	mso-footer-margin:.5in;	mso-paper-source:0;}div.Section1	{page:Section1;}@page Section2	{size:8.5in 11.0in;	margin:1.0in 1.25in 1.0in 1.25in;	mso-header-margin:.5in;	mso-footer-margin:.5in;	mso-paper-source:0;}div.Section2	{page:Section2;} /* List Definitions */@list l0	{mso-list-id:526917976;	mso-list-type:hybrid;	mso-list-template-ids:-1331112906 -1406905024 -344398962 1467254890 -638782688 -1081826792 -637395960 -765828298 -2120437558 -454631360;}@list l0:level1	{mso-level-number-format:bullet;	mso-level-text:\F0B7;	mso-level-tab-stop:.5in;	mso-level-number-position:left;	text-indent:-.25in;	font-size:10.0pt;	font-family:Symbol;}@list l1	{mso-list-id:716245914;	mso-list-type:hybrid;	mso-list-template-ids:-1772223172 1239213712 -1405203140 -1939727986 -1001496134 -1507811686 436794448 1330569048 -202857512 871669244;}@list l1:level1	{mso-level-tab-stop:.5in;	mso-level-number-position:left;	text-indent:-.25in;}@list l2	{mso-list-id:1211651025;	mso-list-type:hybrid;	mso-list-template-ids:1720480662 -1156523330 764584900 693815576 577507578 -1668380266 -358728502 1637385602 869286030 86140684;}@list l2:level1	{mso-level-number-format:bullet;	mso-level-text:\F0B7;	mso-level-tab-stop:.5in;	mso-level-number-position:left;	text-indent:-.25in;	font-size:10.0pt;	font-family:Symbol;}@list l3	{mso-list-id:1738747246;	mso-list-type:hybrid;	mso-list-template-ids:589056050 295589242 -1260124096 -821652718 -1874822846 1139856888 962002586 434413380 -1859721930 -926639952;}@list l3:level1	{mso-level-number-format:bullet;	mso-level-text:\F0B7;	mso-level-tab-stop:.5in;	mso-level-number-position:left;	text-indent:-.25in;	font-size:10.0pt;	font-family:Symbol;}ol	{margin-bottom:0in;}ul	{margin-bottom:0in;}--></style></head><body bgcolor=white lang=EN-US style='tab-interval:.5in'><div class=Section1><h1>Fast Installation: Setting up a Red Hat 7.3 LON-CAPA Server</h1><h2><a name="_Toc421867176">Before you begin</a></h2><p>Installing Linux is getting easier and easier. However, it is still anon-trivial undertaking and experience with Red Hat Linux will make thisprocess easier. You will be required to log in to the machine and execute someroutine Unix commands. Some familiarity with Linux is assumed. </p><h2><a name="_Toc421867177">Installation Overview</a></h2><p>The installation process takes the following steps: </p><p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;tab-stops:list .5in'><![if !supportLists]>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;</span><![endif]>Obtain Red Hat 7.3 </p><p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;tab-stops:list .5in'><![if !supportLists]>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;</span><![endif]>Gather information for installing Red Hat </p><p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;tab-stops:list .5in'><![if !supportLists]>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;</span><![endif]>Install Red Hat 7.3 </p><p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;tab-stops:list .5in'><![if !supportLists]>4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;</span><![endif]>Determine your LON-CAPA Settings </p><p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;tab-stops:list .5in'><![if !supportLists]>5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;</span><![endif]>Install LON-CAPA </p><p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;tab-stops:list .5in'><![if !supportLists]>6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;</span><![endif]>Configure LON-CAPA </p><p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;tab-stops:list .5in'><![if !supportLists]>7.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;</span><![endif]>Pick a hosts.tab file </p><p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;tab-stops:list .5in'><![if !supportLists]>8.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;</span><![endif]>Create a Domain Coordinator </p><p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;tab-stops:list .5in'><![if !supportLists]>9.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;</span><![endif]>Start/Restart services </p><p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;tab-stops:list .5in'><![if !supportLists]>10.<span style='font:7.0pt "Times New Roman"'>&nbsp;</span><![endif]>Log in to LON-CAPA </p><h2><a name="_Toc421867178">Obtain the Red Hat 7.3 installation CDs</a></h2><p>If you like, you may contact the LON-CAPA development staff and we can mailthe CDs to you. Another option is to download the cd images and burn themyourself, or install from a mirror site using ftp or http. </p><h2><a name="_Toc421867179">Determine Network settings for your site</a></h2><p>You will need to have the following information for your site. You must havea static IP address (do not use DHCP). </p><ul style='margin-top:0in' type=disc> <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>ip     address </li> <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>netmask     </li> <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>network     </li> <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>broadcast     </li> <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>hostname     </li> <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>gateway     </li> <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>domain     name server(s) </li></ul><h2><a name="_Toc421867180">Install Red Hat 7.3</a></h2><p>When you install RedHat you will need to ensure the following (the listbelow is in the order the issues appear in the installation of Red Hat 7.3): </p><p class=MsoNormal>Installation Type </p><p class=MsoNormal style='margin-left:.5in'>You should definitely do a&quot;Server&quot; install. We do not recommend Trying to install LON-CAPA witha different installation type. </p><p class=MsoNormal>Partitioning your Drive </p><p class=MsoNormal style='margin-left:.5in'>You may want to use the automaticpartitioning feature of Red Hat, however you should review the results and beprepared to modify them. LON-CAPA resource files are stored in the /homedirectory, so the lion's share of the drive should be allocated here. If youhave 8 GB of space for Red Hat, /home should receive 4 to 6 gigs. Be sure toinclude adequate swap space. A minimum is 512 Megs, but you should typicallyhave 1 or 2x as much swap space as you do physical RAM. </p><p class=MsoNormal>Network Configuration </p><p class=MsoNormal style='margin-left:.5in'>LON-CAPA will <b>not</b><spanstyle='font-weight:normal'> work with a machine set up to use a dynamic IPaddress. When configuring your network card, be sure to unselect the DHCPoption and enter in your network information. </span></p><p class=MsoNormal>Firewall Configuration </p><p class=MsoNormal style='margin-left:.5in'>The installation script will removeand disable your firewall. </p><p class=MsoNormal>Package Group Selection </p><p class=MsoNormal style='margin-left:.5in'>At a minimum, install the followingpackages: </p><ul style='margin-top:0in' type=disc> <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'>NFS     File Server </li> <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'>Windows     File Server </li> <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'>Web     Server </li></ul><p class=MsoNormal style='margin-left:.5in'>Other packages can be installed asyou like. </p><p class=MsoNormal>X Windows Configuration </p><p class=MsoNormal style='margin-left:.5in'>If you chose to install theX-windows packages you will need to configure them. If you are unsure of thesupport for your video card you may wish to skip the configuration. </p><p class=MsoNormal>Other notes: </p><ul style='margin-top:0in' type=disc> <li class=MsoNormal style='mso-list:l3 level1 lfo4;tab-stops:list .5in'>Use     md5 and shadow passwords if you are given the choice (this is the     default). </li></ul><h2><a name="_Toc421867181">Determine LON-CAPA settings</a></h2><p>LON-CAPA requires a number of identifying parameters be set in order for itto function at all. Below is a list with descriptions. </p><p class=MsoNormal>Host Type (library or access) </p><p class=MsoNormal style='margin-left:.5in'>The server must be designated a'library' or an 'access' server. In general you should have a library serverfor your instructors to create their course content on and run their courses.Students should connect to access servers. If you are doing the first installof LON-CAPA at your site, or if you are playing with it for your ownedification, you should make your machine a 'library' server. </p><p class=MsoNormal>LON-CAPA domain </p><p class=MsoNormal style='margin-left:.5in'>Each site or school which installsLON-CAPA needs its own domain. Here at MSU we use 'msu'. You should choosesomething short but meaningful. <i>Restriction: One word, no hyphens,underscores, or special characters!</i><span style='font-style:normal'> </span></p><p class=MsoNormal>LON-CAPA host id </p><p class=MsoNormal style='margin-left:.5in'>Each LON-CAPA server requires aunique internal name. We use names such as &quot;msul1&quot; for the firstlibrary server. <i>Restriction: One word, no hyphens, underscores, or specialcharacters!</i><span style='font-style:normal'> </span></p><p class=MsoNormal>Host administrator email </p><p class=MsoNormal style='margin-left:.5in'>The amount of email sent to thisaddress is relatively minimal. Messages are sent every time the system startsup, or if the system is in serious trouble. On a laptop, make this <tt><spanstyle='font-family:"Courier New"'>root@localhost</span></tt>. </p><p class=MsoNormal>Root password for SQL database </p><p class=MsoNormal style='margin-left:.5in'>In order to keep people fromcorrupting the MYSQL database, a root password is needed. You'll need toremember this. </p><h2><a name="_Toc421867182">Install LON-CAPA</a></h2><p>Log in as root with the password you provided during the Red Hatinstallation process. </p><pre><span style="mso-spacerun: yes">&nbsp;</span>wget http://install.loncapa.org/versions/rh73install/loncapa-rh73install.tar tar xf loncapa-rh73install.tar cd install ./install.pl </pre><h2><a name="_Toc421867183">Configure LON-CAPA</a></h2><p>Execute the following commands </p><pre><span style="mso-spacerun: yes">&nbsp;</span>cd /root/loncapa/ ./UPDATE </pre><p class=MsoNormal>You will need to enter the LON-CAPA configurationinformation you requested above. Additionally, you will need to enter thefollowing information (options 5 and 6 in the menu, recommended settings): </p><p class=MsoNormal>Cache Expiration Time </p><p class=MsoNormal style='margin-left:.5in'>86400 </p><p class=MsoNormal>Server Load </p><p class=MsoNormal style='margin-left:.5in'>2.0 </p><p class=MsoNormal>You can deviate from the above settings if you know what youare doing. </p><h2><a name="_Toc421867184">Picking a hosts.tab file</a></h2><p class=MsoNormal>The &quot;hosts.tab&quot; file controls which LON-CAPA serversyour server attempts to access and which servers it will respond to. If this isyour first install of LON-CAPA on your network, we suggest choosing a'standalone' &quot;hosts.tab&quot;. On a laptop, you must choose 'standalone'.Please contact the support staff at www.loncapa.org for information aboutadding more hosts to your &quot;hosts.tab&quot; file. </p><p><b>Note:</b><span style='font-weight:normal'> for </span><b>non</b><spanstyle='font-weight:normal'>-standalone configurations, you do need to addyourself to the </span><tt><span style='font-family:"Courier New"'>/home/httpd/lonTabs/hosts.tab</span></tt>to initially test your configuration. Eventually, you will be added to thegeneral cluster tables by LON-CAPA staff, so this is temporary. A <tt><spanstyle='font-family:"Courier New"'>hosts.tab</span></tt> entry has the format </p><pre><span style="mso-spacerun: yes">&nbsp;</span>lonHostID:domain:hosttype:dns-name:ipaddress </pre><p class=MsoNormal>for example </p><pre><span style="mso-spacerun: yes">&nbsp;</span>103l5:library:s17.lite.msu.edu:35.8.63.27 </pre><p class=MsoNormal>Please edit this file with a UNIX editor, not a PC or Macone, so that the linebreaks are correct. </p><h2><a name="_Toc421867185">Creating a Domain Coordinator</a></h2><p>You will need at least one user at your site who has the role of 'domaincoordinator'. This user creates accounts for other users and grants themadditional privileges. The make_domain_coordinator.pl script invoked belowrequires that you enter the users password. The password will show in plaintextas you type it. Feel free to use the &quot;passwd username&quot; command tochange it later. Replace USERNAME and DOMAIN with an appropriate user name andyour domain. </p><pre><span style="mso-spacerun: yes">&nbsp;</span>cd /root/loncapa/loncom/build perl make_domain_coordinator.pl USERNAME DOMAIN (WILL PROMPT FOR PASSWORD HERE) mkdir ~USERNAME/public_html chown USERNAME:www ~USERNAME/public_html chmod 0775 ~USERNAME/public_html </pre><h2><a name="_Toc421867186">Start/Restart Services</a></h2><p>The services take about 10 minutes to start. </p><pre><span style="mso-spacerun: yes">&nbsp;</span>/etc/init.d/loncontrol start /etc/init.d/httpd restart </pre><h2><a name="_Toc421867187">Make Sure that Services Autostart on Boot</a></h2><p>On Redhat 7.3 it is not guaranteed that Apache and MySQL automaticallyrestart on boot, even when installing with &quot;server&quot; configuration.After logging in as root, check under &quot;Programs&quot; - &quot;System&quot;- &quot;Service Configuration&quot; that &quot;Start on Boot&quot; is checkedfor httpd and mysqld, save and restart.. </p><h2><a name="_Toc421867188">Log in to your LON-CAPA Machine</a></h2><p>Point a web browser at your new machine and log in as the domaincoordinator. Congratulations! </p></div><span style='font-size:12.0pt;font-family:Times;mso-ansi-language:EN-US'><brclear=ALL style='page-break-before:always;mso-break-type:section-break'></span><div class=Section2><p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p></div></body></html>
\ No newline at end of file
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta name=Title content="Fast Installation: Setting up a Red Hat 7">
+<meta name=Keywords content="">
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 10">
+<meta name=Originator content="Microsoft Word 10">
+<link rel=File-List href="Fast%20Installation_files/filelist.xml">
+<title>Fast Installation: Setting up a Red Hat 7</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+  <o:Author>Gerd Kortemeyer</o:Author>
+  <o:Template>Normal</o:Template>
+  <o:Revision>1</o:Revision>
+  <o:TotalTime>0</o:TotalTime>
+  <o:Created>2002-06-27T21:54:00Z</o:Created>
+  <o:Pages>1</o:Pages>
+  <o:Words>1010</o:Words>
+  <o:Characters>5762</o:Characters>
+  <o:Company>Michigan State University</o:Company>
+  <o:Lines>48</o:Lines>
+  <o:Paragraphs>11</o:Paragraphs>
+  <o:CharactersWithSpaces>7076</o:CharactersWithSpaces>
+  <o:Version>10.1412</o:Version>
+ </o:DocumentProperties>
+ <o:OfficeDocumentSettings>
+  <o:AllowPNG/>
+  <o:DownloadComponents>120</o:DownloadComponents>
+  <o:PixelsPerInch>1600x1200</o:PixelsPerInch>
+ </o:OfficeDocumentSettings>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:Zoom>0</w:Zoom>
+  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
+  <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery>
+  <w:UseMarginsForDrawingGridOrigin/>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+	{font-family:"Times New Roman";
+	panose-1:0 2 2 6 3 5 4 5 2 3;
+	mso-font-charset:0;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:50331648 0 0 0 1 0;}
+@font-face
+	{font-family:Arial;
+	panose-1:0 2 11 6 4 2 2 2 2 2;
+	mso-font-charset:0;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:50331648 0 0 0 1 0;}
+@font-face
+	{font-family:"Courier New";
+	panose-1:0 2 7 3 9 2 2 5 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:50331648 0 0 0 1 0;}
+@font-face
+	{font-family:Wingdings;
+	panose-1:0 5 2 1 2 1 8 4 8 7;
+	mso-font-charset:2;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:0 16 0 0 -2147483648 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:Times;}
+h1
+	{mso-style-next:Normal;
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:1;
+	font-size:14.0pt;
+	font-family:"Times New Roman";
+	mso-font-kerning:0pt;
+	font-weight:bold;}
+h2
+	{mso-style-next:Normal;
+	margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:2;
+	font-size:12.0pt;
+	font-family:Arial;
+	font-weight:bold;
+	font-style:italic;}
+p
+	{margin-right:0in;
+	mso-margin-top-alt:auto;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";}
+pre
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
+	font-size:10.0pt;
+	font-family:"Courier New";}
+tt {}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+@page Section2
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section2
+	{page:Section2;}
+ /* List Definitions */
+@list l0
+	{mso-list-id:526917976;
+	mso-list-type:hybrid;
+	mso-list-template-ids:-1331112906 -1406905024 -344398962 1467254890 -638782688 -1081826792 -637395960 -765828298 -2120437558 -454631360;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	font-size:10.0pt;
+	font-family:Symbol;}
+@list l1
+	{mso-list-id:716245914;
+	mso-list-type:hybrid;
+	mso-list-template-ids:-1772223172 1239213712 -1405203140 -1939727986 -1001496134 -1507811686 436794448 1330569048 -202857512 871669244;}
+@list l1:level1
+	{mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;}
+@list l2
+	{mso-list-id:1211651025;
+	mso-list-type:hybrid;
+	mso-list-template-ids:1720480662 -1156523330 764584900 693815576 577507578 -1668380266 -358728502 1637385602 869286030 86140684;}
+@list l2:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	font-size:10.0pt;
+	font-family:Symbol;}
+@list l3
+	{mso-list-id:1738747246;
+	mso-list-type:hybrid;
+	mso-list-template-ids:589056050 295589242 -1260124096 -821652718 -1874822846 1139856888 962002586 434413380 -1859721930 -926639952;}
+@list l3:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	font-size:10.0pt;
+	font-family:Symbol;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style>
+</head>
+
+<body bgcolor=white lang=EN-US style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h1>Fast Installation: Setting up a Red Hat 7.3 LON-CAPA Server</h1>
+
+<h2><a name="_Toc421867176">Before you begin</a></h2>
+
+<p>Installing Linux is getting easier and easier. However, it is still a
+non-trivial undertaking and experience with Red Hat Linux will make this
+process easier. You will be required to log in to the machine and execute some
+routine Unix commands. Some familiarity with Linux is assumed. </p>
+
+<h2><a name="_Toc421867177">Installation Overview</a></h2>
+
+<p>The installation process takes the following steps: </p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
+</span><![endif]>Obtain Red Hat 7.3 </p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
+</span><![endif]>Gather information for installing Red Hat </p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
+</span><![endif]>Install Red Hat 7.3 </p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]>4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
+</span><![endif]>Determine your LON-CAPA Settings </p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]>5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
+</span><![endif]>Install LON-CAPA </p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]>6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
+</span><![endif]>Configure LON-CAPA </p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]>7.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
+</span><![endif]>Pick a hosts.tab file </p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]>8.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
+</span><![endif]>Create a Domain Coordinator </p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]>9.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
+</span><![endif]>Start/Restart services </p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]>10.<span style='font:7.0pt "Times New Roman"'>&nbsp;
+</span><![endif]>Log in to LON-CAPA </p>
+
+<h2><a name="_Toc421867178">Obtain the Red Hat 7.3 installation CDs</a></h2>
+
+<p>If you like, you may contact the LON-CAPA development staff and we can mail
+the CDs to you. Another option is to download the cd images and burn them
+yourself, or install from a mirror site using ftp or http. </p>
+
+<h2><a name="_Toc421867179">Determine Network settings for your site</a></h2>
+
+<p>You will need to have the following information for your site. You must have
+a static IP address (do not use DHCP). </p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>ip
+     address </li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>netmask
+     </li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>network
+     </li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>broadcast
+     </li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>hostname
+     </li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>gateway
+     </li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list .5in'>domain
+     name server(s) </li>
+</ul>
+
+<h2><a name="_Toc421867180">Install Red Hat 7.3</a></h2>
+
+<p>When you install RedHat you will need to ensure the following (the list
+below is in the order the issues appear in the installation of Red Hat 7.3): </p>
+
+<p class=MsoNormal>Installation Type </p>
+
+<p class=MsoNormal style='margin-left:.5in'>You should definitely do a
+&quot;Server&quot; install. We do not recommend Trying to install LON-CAPA with
+a different installation type. </p>
+
+<p class=MsoNormal>Partitioning your Drive </p>
+
+<p class=MsoNormal style='margin-left:.5in'>You may want to use the automatic
+partitioning feature of Red Hat, however you should review the results and be
+prepared to modify them. LON-CAPA resource files are stored in the /home
+directory, so the lion's share of the drive should be allocated here. If you
+have 8 GB of space for Red Hat, /home should receive 4 to 6 gigs. Be sure to
+include adequate swap space. A minimum is 512 Megs, but you should typically
+have 1 or 2x as much swap space as you do physical RAM. </p>
+
+<p class=MsoNormal>Network Configuration </p>
+
+<p class=MsoNormal style='margin-left:.5in'>LON-CAPA will <b>not</b><span
+style='font-weight:normal'> work with a machine set up to use a dynamic IP
+address. When configuring your network card, be sure to unselect the DHCP
+option and enter in your network information. </span></p>
+
+<p class=MsoNormal>Firewall Configuration </p>
+
+<p class=MsoNormal style='margin-left:.5in'>The installation script will remove
+and disable your firewall. </p>
+
+<p class=MsoNormal>Package Group Selection </p>
+
+<p class=MsoNormal style='margin-left:.5in'>At a minimum, install the following
+packages: </p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'>NFS
+     File Server </li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'>Windows
+     File Server </li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'>Web
+     Server </li>
+</ul>
+
+<p class=MsoNormal style='margin-left:.5in'>Other packages can be installed as
+you like. </p>
+
+<p class=MsoNormal>X Windows Configuration </p>
+
+<p class=MsoNormal style='margin-left:.5in'>If you chose to install the
+X-windows packages you will need to configure them. If you are unsure of the
+support for your video card you may wish to skip the configuration. </p>
+
+<p class=MsoNormal>Other notes: </p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo4;tab-stops:list .5in'>Use
+     md5 and shadow passwords if you are given the choice (this is the
+     default). </li>
+</ul>
+
+<h2><a name="_Toc421867181">Determine LON-CAPA settings</a></h2>
+
+<p>LON-CAPA requires a number of identifying parameters be set in order for it
+to function at all. Below is a list with descriptions. </p>
+
+<p class=MsoNormal>Host Type (library or access) </p>
+
+<p class=MsoNormal style='margin-left:.5in'>The server must be designated a
+'library' or an 'access' server. In general you should have a library server
+for your instructors to create their course content on and run their courses.
+Students should connect to access servers. If you are doing the first install
+of LON-CAPA at your site, or if you are playing with it for your own
+edification, you should make your machine a 'library' server. </p>
+
+<p class=MsoNormal>LON-CAPA domain </p>
+
+<p class=MsoNormal style='margin-left:.5in'>Each site or school which installs
+LON-CAPA needs its own domain. Here at MSU we use 'msu'. You should choose
+something short but meaningful. <i>Restriction: One word, no hyphens,
+underscores, or special characters!</i><span style='font-style:normal'> </span></p>
+
+<p class=MsoNormal>LON-CAPA host id </p>
+
+<p class=MsoNormal style='margin-left:.5in'>Each LON-CAPA server requires a
+unique internal name. We use names such as &quot;msul1&quot; for the first
+library server. <i>Restriction: One word, no hyphens, underscores, or special
+characters!</i><span style='font-style:normal'> </span></p>
+
+<p class=MsoNormal>Host administrator email </p>
+
+<p class=MsoNormal style='margin-left:.5in'>The amount of email sent to this
+address is relatively minimal. Messages are sent every time the system starts
+up, or if the system is in serious trouble. On a laptop, make this <tt><span
+style='font-family:"Courier New"'>root@localhost</span></tt>. </p>
+
+<p class=MsoNormal>Root password for SQL database </p>
+
+<p class=MsoNormal style='margin-left:.5in'>In order to keep people from
+corrupting the MYSQL database, a root password is needed. You'll need to
+remember this. </p>
+
+<h2><a name="_Toc421867182">Install LON-CAPA</a></h2>
+
+<p>Log in as root with the password you provided during the Red Hat
+installation process. </p>
+
+<pre><span style="mso-spacerun: yes">&nbsp;</span>wget http://install.loncapa.org/versions/rh73install/loncapa-rh73install.tar tar xf loncapa-rh73install.tar cd install ./install.pl </pre>
+
+<h2><a name="_Toc421867183">Configure LON-CAPA</a></h2>
+
+<p>Execute the following commands </p>
+
+<pre><span style="mso-spacerun: yes">&nbsp;</span>cd /root/loncapa/ ./UPDATE </pre>
+
+<p class=MsoNormal>You will need to enter the LON-CAPA configuration
+information you requested above. Additionally, you will need to enter the
+following information (options 5 and 6 in the menu, recommended settings): </p>
+
+<p class=MsoNormal>Cache Expiration Time </p>
+
+<p class=MsoNormal style='margin-left:.5in'>86400 </p>
+
+<p class=MsoNormal>Server Load </p>
+
+<p class=MsoNormal style='margin-left:.5in'>2.0 </p>
+
+<p class=MsoNormal>You can deviate from the above settings if you know what you
+are doing. </p>
+
+<h2><a name="_Toc421867184">Picking a hosts.tab file</a></h2>
+
+<p class=MsoNormal>The &quot;hosts.tab&quot; file controls which LON-CAPA servers
+your server attempts to access and which servers it will respond to. If this is
+your first install of LON-CAPA on your network, we suggest choosing a
+'standalone' &quot;hosts.tab&quot;. On a laptop, you must choose 'standalone'.
+Please contact the support staff at www.loncapa.org for information about
+adding more hosts to your &quot;hosts.tab&quot; file. </p>
+
+<p><b>Note:</b><span style='font-weight:normal'> for </span><b>non</b><span
+style='font-weight:normal'>-standalone configurations, you do need to add
+yourself to the </span><tt><span style='font-family:"Courier New"'>/home/httpd/lonTabs/hosts.tab</span></tt>
+to initially test your configuration. Eventually, you will be added to the
+general cluster tables by LON-CAPA staff, so this is temporary. A <tt><span
+style='font-family:"Courier New"'>hosts.tab</span></tt> entry has the format </p>
+
+<pre><span style="mso-spacerun: yes">&nbsp;</span>lonHostID:domain:hosttype:dns-name:ipaddress </pre>
+
+<p class=MsoNormal>for example </p>
+
+<pre><span style="mso-spacerun: yes">&nbsp;</span>103l5:library:s17.lite.msu.edu:35.8.63.27 </pre>
+
+<p class=MsoNormal>Please edit this file with a UNIX editor, not a PC or Mac
+one, so that the linebreaks are correct. </p>
+
+<h2><a name="_Toc421867185">Creating a Domain Coordinator</a></h2>
+
+<p>You will need at least one user at your site who has the role of 'domain
+coordinator'. This user creates accounts for other users and grants them
+additional privileges. The make_domain_coordinator.pl script invoked below
+requires that you enter the users password. The password will show in plaintext
+as you type it. Feel free to use the &quot;passwd username&quot; command to
+change it later. Replace USERNAME and DOMAIN with an appropriate user name and
+your domain. </p>
+
+<pre><span style="mso-spacerun: yes">&nbsp;</span>cd /root/loncapa/loncom/build perl make_domain_coordinator.pl USERNAME DOMAIN (WILL PROMPT FOR PASSWORD HERE) mkdir ~USERNAME/public_html chown USERNAME:www ~USERNAME/public_html chmod 0775 ~USERNAME/public_html </pre>
+
+<h2><a name="_Toc421867186">Start/Restart Services</a></h2>
+
+<p>The services take about 10 minutes to start. </p>
+
+<pre><span style="mso-spacerun: yes">&nbsp;</span>/etc/init.d/loncontrol start /etc/init.d/httpd restart </pre>
+
+<h2><a name="_Toc421867187">Make Sure that Services Autostart on Boot</a></h2>
+
+<p>On Redhat 7.3 it is not guaranteed that Apache and MySQL automatically
+restart on boot, even when installing with &quot;server&quot; configuration.
+After logging in as root, check under &quot;Programs&quot; - &quot;System&quot;
+- &quot;Service Configuration&quot; that &quot;Start on Boot&quot; is checked
+for httpd and mysqld, save and restart.. </p>
+
+<h2><a name="_Toc421867188">Log in to your LON-CAPA Machine</a></h2>
+
+<p>Point a web browser at your new machine and log in as the domain
+coordinator. Congratulations! </p>
+
+</div>
+
+<span style='font-size:12.0pt;font-family:Times;mso-ansi-language:EN-US'><br
+clear=ALL style='page-break-before:always;mso-break-type:section-break'>
+</span>
+
+<div class=Section2>
+
+<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
+
+</div>
+
+</body>
+
+</html>
Index: doc/gutshtml/HardwarespecificationforLON.html
diff -u doc/gutshtml/HardwarespecificationforLON.html:1.1 doc/gutshtml/HardwarespecificationforLON.html:1.2
--- doc/gutshtml/HardwarespecificationforLON.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/HardwarespecificationforLON.html	Tue Jul 22 10:47:00 2003
@@ -1 +1,226 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:w="urn:schemas-microsoft-com:office:word"xmlns="http://www.w3.org/TR/REC-html40"><head><meta name=Title content="Hardware specification for LON-CAPA servers"><meta name=Keywords content=""><meta http-equiv=Content-Type content="text/html; charset=macintosh"><meta name=ProgId content=Word.Document><meta name=Generator content="Microsoft Word 10"><meta name=Originator content="Microsoft Word 10"><link rel=File-List href="Hardware%20specification%20fo_files/filelist.xml"><title>Hardware specification for LON-CAPA servers</title><!--[if gte mso 9]><xml> <o:DocumentProperties>  <o:Author>Gerd Kortemeyer</o:Author>  <o:Template>Normal</o:Template>  <o:Revision>1</o:Revision>  <o:TotalTime>0</o:TotalTime>  <o:Created>2002-06-27T21:54:00Z</o:Created>  <o:Pages>1</o:Pages>  <o:Words>274</o:Words>  <o:Characters>1566</o:Characters>  <o:Company>Michigan State University</o:Company>  <o:Lines>13</o:Lines>  <o:Paragraphs>3</o:Paragraphs>  <o:CharactersWithSpaces>1923</o:CharactersWithSpaces>  <o:Version>10.1412</o:Version> </o:DocumentProperties> <o:OfficeDocumentSettings>  <o:AllowPNG/>  <o:DownloadComponents>120</o:DownloadComponents>  <o:PixelsPerInch>1600x1200</o:PixelsPerInch> </o:OfficeDocumentSettings></xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument>  <w:Zoom>0</w:Zoom>  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>  <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery>  <w:UseMarginsForDrawingGridOrigin/> </w:WordDocument></xml><![endif]--><style><!-- /* Font Definitions */@font-face	{font-family:"Times New Roman";	panose-1:0 2 2 6 3 5 4 5 2 3;	mso-font-charset:0;	mso-generic-font-family:auto;	mso-font-pitch:variable;	mso-font-signature:50331648 0 0 0 1 0;}@font-face	{font-family:Arial;	panose-1:0 2 11 6 4 2 2 2 2 2;	mso-font-charset:0;	mso-generic-font-family:auto;	mso-font-pitch:variable;	mso-font-signature:50331648 0 0 0 1 0;}@font-face	{font-family:"Courier New";	panose-1:0 2 7 3 9 2 2 5 2 4;	mso-font-charset:0;	mso-generic-font-family:auto;	mso-font-pitch:variable;	mso-font-signature:50331648 0 0 0 1 0;}@font-face	{font-family:Wingdings;	panose-1:0 5 2 1 2 1 8 4 8 7;	mso-font-charset:2;	mso-generic-font-family:auto;	mso-font-pitch:variable;	mso-font-signature:0 16 0 0 -2147483648 0;} /* Style Definitions */p.MsoNormal, li.MsoNormal, div.MsoNormal	{mso-style-parent:"";	margin:0in;	margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:12.0pt;	font-family:Times;}h1	{mso-style-next:Normal;	margin:0in;	margin-bottom:.0001pt;	mso-pagination:widow-orphan;	page-break-after:avoid;	mso-outline-level:1;	font-size:14.0pt;	font-family:"Times New Roman";	mso-font-kerning:0pt;	font-weight:bold;}h2	{mso-style-next:Normal;	margin-top:12.0pt;	margin-right:0in;	margin-bottom:3.0pt;	margin-left:0in;	mso-pagination:widow-orphan;	page-break-after:avoid;	mso-outline-level:2;	font-size:12.0pt;	font-family:Arial;	font-weight:bold;	font-style:italic;}p	{margin-right:0in;	mso-margin-top-alt:auto;	mso-margin-bottom-alt:auto;	margin-left:0in;	mso-pagination:widow-orphan;	font-size:12.0pt;	font-family:"Times New Roman";}@page Section1	{size:8.5in 11.0in;	margin:1.0in 1.25in 1.0in 1.25in;	mso-header-margin:.5in;	mso-footer-margin:.5in;	mso-paper-source:0;}div.Section1	{page:Section1;}@page Section2	{size:8.5in 11.0in;	margin:1.0in 1.25in 1.0in 1.25in;	mso-header-margin:.5in;	mso-footer-margin:.5in;	mso-paper-source:0;}div.Section2	{page:Section2;} /* List Definitions */@list l0	{mso-list-id:801534295;	mso-list-type:hybrid;	mso-list-template-ids:-1039494676 1841749556 -101014218 -1296512168 1967937480 46431572 -1478200866 -1398355040 780157168 -1123748844;}@list l0:level1	{mso-level-number-format:bullet;	mso-level-text:\F0B7;	mso-level-tab-stop:.5in;	mso-level-number-position:left;	text-indent:-.25in;	font-size:10.0pt;	font-family:Symbol;}ol	{margin-bottom:0in;}ul	{margin-bottom:0in;}--></style></head><body bgcolor=white lang=EN-US style='tab-interval:.5in'><div class=Section1><h1>Hardware specification for LON-CAPA servers</h1><p><i>Scott Harrison, freeware volunteer, sharrison@sourceforge.net</i><spanstyle='font-style:normal'> </span></p><h2><a name="_Toc421867153">General information on LON-CAPA Server HardwareRequirements</a></h2><p>For full-time, classroom usage, an adequate LON-CAPA server should be/have: </p><ul type=disc> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;     mso-list:l0 level1 lfo1;tab-stops:list .5in'>a multiprocessor machine,</li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;     mso-list:l0 level1 lfo1;tab-stops:list .5in'>a CPU speed of 1 gigahertz,</li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;     mso-list:l0 level1 lfo1;tab-stops:list .5in'>a gigabyte of memory,</li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;     mso-list:l0 level1 lfo1;tab-stops:list .5in'>and at least 40 to 80     gigabytes of hard disk space.</li></ul><p>A lesser machine can be used for toying around with LON-CAPA (LON-CAPA willrun for a single user on most any machine). </p><p>LON-CAPA servers experience significant peaks of activity before a homeworksubmission deadline. To support these critical peaks of activity, it isstrongly advised that LON-CAPA machines fit the above recommendation. </p><p>If thousands of students start accessing the box as a web server... well youmay want to consider more options. The design of the LON-CAPA system is tonaturally and transparently load-balance on multiple computer clusters. So, asimple solution for running an entire college campus is to just have an adequateplurality of LON-CAPA servers rather than a single, particularly monstrousserver. </p><p>We like to think of high web server usage as &quot;a good problem&quot;though.... </p><h2><a name="_Toc421867154">Additional Information on LON-CAPA Server HardwareRequirements</a></h2><p>LON-CAPA works nicely (for development purposes) on a Pentium II, 20gigabytes of hard-disk space, 256M RAM, and 400MHz. The consensus is though,that this may only be adequate for a class of a dozen students. </p><p>If you are making a serious investment, you should join the LON-CAPA mailinglist by visiting http://mail.lon-capa.org/mailman/listinfo/lon-capa-users. Byposting to this mailing list, you can learn about the solutions have worked forothers. </p><p>LON-CAPA works on any Intel-based RedHat-compatible hardware. Unlike othere-learning software systems, it works comparatively well on dusty old crippledmachines without much RAM or processing. </p><p><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p></div><span style='font-size:12.0pt;font-family:Times;mso-ansi-language:EN-US'><brclear=ALL style='page-break-before:always;mso-break-type:section-break'></span><div class=Section2><p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p></div></body></html>
\ No newline at end of file
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta name=Title content="Hardware specification for LON-CAPA servers">
+<meta name=Keywords content="">
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 10">
+<meta name=Originator content="Microsoft Word 10">
+<link rel=File-List href="Hardware%20specification%20fo_files/filelist.xml">
+<title>Hardware specification for LON-CAPA servers</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+  <o:Author>Gerd Kortemeyer</o:Author>
+  <o:Template>Normal</o:Template>
+  <o:Revision>1</o:Revision>
+  <o:TotalTime>0</o:TotalTime>
+  <o:Created>2002-06-27T21:54:00Z</o:Created>
+  <o:Pages>1</o:Pages>
+  <o:Words>274</o:Words>
+  <o:Characters>1566</o:Characters>
+  <o:Company>Michigan State University</o:Company>
+  <o:Lines>13</o:Lines>
+  <o:Paragraphs>3</o:Paragraphs>
+  <o:CharactersWithSpaces>1923</o:CharactersWithSpaces>
+  <o:Version>10.1412</o:Version>
+ </o:DocumentProperties>
+ <o:OfficeDocumentSettings>
+  <o:AllowPNG/>
+  <o:DownloadComponents>120</o:DownloadComponents>
+  <o:PixelsPerInch>1600x1200</o:PixelsPerInch>
+ </o:OfficeDocumentSettings>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:Zoom>0</w:Zoom>
+  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
+  <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery>
+  <w:UseMarginsForDrawingGridOrigin/>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+	{font-family:"Times New Roman";
+	panose-1:0 2 2 6 3 5 4 5 2 3;
+	mso-font-charset:0;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:50331648 0 0 0 1 0;}
+@font-face
+	{font-family:Arial;
+	panose-1:0 2 11 6 4 2 2 2 2 2;
+	mso-font-charset:0;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:50331648 0 0 0 1 0;}
+@font-face
+	{font-family:"Courier New";
+	panose-1:0 2 7 3 9 2 2 5 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:50331648 0 0 0 1 0;}
+@font-face
+	{font-family:Wingdings;
+	panose-1:0 5 2 1 2 1 8 4 8 7;
+	mso-font-charset:2;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:0 16 0 0 -2147483648 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:Times;}
+h1
+	{mso-style-next:Normal;
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:1;
+	font-size:14.0pt;
+	font-family:"Times New Roman";
+	mso-font-kerning:0pt;
+	font-weight:bold;}
+h2
+	{mso-style-next:Normal;
+	margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:2;
+	font-size:12.0pt;
+	font-family:Arial;
+	font-weight:bold;
+	font-style:italic;}
+p
+	{margin-right:0in;
+	mso-margin-top-alt:auto;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+@page Section2
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section2
+	{page:Section2;}
+ /* List Definitions */
+@list l0
+	{mso-list-id:801534295;
+	mso-list-type:hybrid;
+	mso-list-template-ids:-1039494676 1841749556 -101014218 -1296512168 1967937480 46431572 -1478200866 -1398355040 780157168 -1123748844;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	font-size:10.0pt;
+	font-family:Symbol;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style>
+</head>
+
+<body bgcolor=white lang=EN-US style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h1>Hardware specification for LON-CAPA servers</h1>
+
+<p><i>Scott Harrison, freeware volunteer, sharrison@sourceforge.net</i><span
+style='font-style:normal'> </span></p>
+
+<h2><a name="_Toc421867153">General information on LON-CAPA Server Hardware
+Requirements</a></h2>
+
+<p>For full-time, classroom usage, an adequate LON-CAPA server should be/have: </p>
+
+<ul type=disc>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo1;tab-stops:list .5in'>a multiprocessor machine,</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo1;tab-stops:list .5in'>a CPU speed of 1 gigahertz,</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo1;tab-stops:list .5in'>a gigabyte of memory,</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo1;tab-stops:list .5in'>and at least 40 to 80
+     gigabytes of hard disk space.</li>
+</ul>
+
+<p>A lesser machine can be used for toying around with LON-CAPA (LON-CAPA will
+run for a single user on most any machine). </p>
+
+<p>LON-CAPA servers experience significant peaks of activity before a homework
+submission deadline. To support these critical peaks of activity, it is
+strongly advised that LON-CAPA machines fit the above recommendation. </p>
+
+<p>If thousands of students start accessing the box as a web server... well you
+may want to consider more options. The design of the LON-CAPA system is to
+naturally and transparently load-balance on multiple computer clusters. So, a
+simple solution for running an entire college campus is to just have an adequate
+plurality of LON-CAPA servers rather than a single, particularly monstrous
+server. </p>
+
+<p>We like to think of high web server usage as &quot;a good problem&quot;
+though.... </p>
+
+<h2><a name="_Toc421867154">Additional Information on LON-CAPA Server Hardware
+Requirements</a></h2>
+
+<p>LON-CAPA works nicely (for development purposes) on a Pentium II, 20
+gigabytes of hard-disk space, 256M RAM, and 400MHz. The consensus is though,
+that this may only be adequate for a class of a dozen students. </p>
+
+<p>If you are making a serious investment, you should join the LON-CAPA mailing
+list by visiting http://mail.lon-capa.org/mailman/listinfo/lon-capa-users. By
+posting to this mailing list, you can learn about the solutions have worked for
+others. </p>
+
+<p>LON-CAPA works on any Intel-based RedHat-compatible hardware. Unlike other
+e-learning software systems, it works comparatively well on dusty old crippled
+machines without much RAM or processing. </p>
+
+<p><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
+
+</div>
+
+<span style='font-size:12.0pt;font-family:Times;mso-ansi-language:EN-US'><br
+clear=ALL style='page-break-before:always;mso-break-type:section-break'>
+</span>
+
+<div class=Section2>
+
+<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
+
+</div>
+
+</body>
+
+</html>
Index: doc/gutshtml/SessionFiv1.html
diff -u doc/gutshtml/SessionFiv1.html:1.1 doc/gutshtml/SessionFiv1.html:1.2
--- doc/gutshtml/SessionFiv1.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionFiv1.html	Tue Jul 22 10:47:00 2003
@@ -1,22 +1,44 @@
-<html>
-<head>
-<meta name=Title content="Session Five: Worktime (Guy)">
-<meta http-equiv=Content-Type content="text/html; charset=macintosh">
-<title>Session Five: Worktime (Guy)</title>
-<style><!--
-.Section1
-	{page:Section1;}
-.Section2
-	{page:Section2;}
--->
-</style>
-</head>
-<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
-<div class=Section1> 
-  <h2>Session Five: Worktime (Guy)</h2>
-</div>
-<br
-clear=ALL style='page-break-before:always;'>
-<div class=Section2> </div>
-</body>
-</html>
+<html>
+
+<head>
+
+<meta name=Title content="Session Five: Worktime (Guy)">
+
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+
+<title>Session Five: Worktime (Guy)</title>
+
+<style><!--
+
+.Section1
+
+	{page:Section1;}
+
+.Section2
+
+	{page:Section2;}
+
+-->
+
+</style>
+
+</head>
+
+<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
+
+<div class=Section1> 
+
+  <h2>Session Five: Worktime (Guy)</h2>
+
+</div>
+
+<br
+
+clear=ALL style='page-break-before:always;'>
+
+<div class=Section2> </div>
+
+</body>
+
+</html>
+
Index: doc/gutshtml/SessionFiv2.html
diff -u doc/gutshtml/SessionFiv2.html:1.1 doc/gutshtml/SessionFiv2.html:1.2
--- doc/gutshtml/SessionFiv2.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionFiv2.html	Tue Jul 22 10:47:00 2003
@@ -1,22 +1,44 @@
-<html>
-<head>
-<meta name=Title content="Session Five: Open Worktime">
-<meta http-equiv=Content-Type content="text/html; charset=macintosh">
-<title>Session Five: Open Worktime</title>
-<style><!--
-.Section1
-	{page:Section1;}
-.Section2
-	{page:Section2;}
--->
-</style>
-</head>
-<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
-<div class=Section1> 
-  <h2>Session Five: Open Worktime</h2>
-</div>
-<br
-clear=ALL style='page-break-before:always;'>
-<div class=Section2> </div>
-</body>
-</html>
+<html>
+
+<head>
+
+<meta name=Title content="Session Five: Open Worktime">
+
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+
+<title>Session Five: Open Worktime</title>
+
+<style><!--
+
+.Section1
+
+	{page:Section1;}
+
+.Section2
+
+	{page:Section2;}
+
+-->
+
+</style>
+
+</head>
+
+<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
+
+<div class=Section1> 
+
+  <h2>Session Five: Open Worktime</h2>
+
+</div>
+
+<br
+
+clear=ALL style='page-break-before:always;'>
+
+<div class=Section2> </div>
+
+</body>
+
+</html>
+
Index: doc/gutshtml/SessionFive.html
diff -u doc/gutshtml/SessionFive.html:1.1 doc/gutshtml/SessionFive.html:1.2
--- doc/gutshtml/SessionFive.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionFive.html	Tue Jul 22 10:47:00 2003
@@ -1,23 +1,46 @@
-<html>
-<head>
-<meta name=Title
-content="Session Five: Worktime (make new handler, debugging/testing) (Guy)">
-<meta http-equiv=Content-Type content="text/html; charset=macintosh">
-<title>Session Five: Worktime (make new handler, debugging/testing) (Guy)</title>
-<style><!--
-.Section1
-	{page:Section1;}
-.Section2
-	{page:Section2;}
--->
-</style>
-</head>
-<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
-<div class=Section1> 
-  <h2>Session Five: Worktime (make new handler, debugging/testing) (Guy)</h2>
-</div>
-<br
-clear=ALL style='page-break-before:always;'>
-<div class=Section2> </div>
-</body>
-</html>
+<html>
+
+<head>
+
+<meta name=Title
+
+content="Session Five: Worktime (make new handler, debugging/testing) (Guy)">
+
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+
+<title>Session Five: Worktime (make new handler, debugging/testing) (Guy)</title>
+
+<style><!--
+
+.Section1
+
+	{page:Section1;}
+
+.Section2
+
+	{page:Section2;}
+
+-->
+
+</style>
+
+</head>
+
+<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
+
+<div class=Section1> 
+
+  <h2>Session Five: Worktime (make new handler, debugging/testing) (Guy)</h2>
+
+</div>
+
+<br
+
+clear=ALL style='page-break-before:always;'>
+
+<div class=Section2> </div>
+
+</body>
+
+</html>
+
Index: doc/gutshtml/SessionFou1.html
diff -u doc/gutshtml/SessionFou1.html:1.1 doc/gutshtml/SessionFou1.html:1.2
--- doc/gutshtml/SessionFou1.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionFou1.html	Tue Jul 22 10:47:00 2003
@@ -1,430 +1,860 @@
-<html>
-<head>
-<meta name=Title
-content="Session Four: XML Handler (Simple tags, Globals, Multiple Targets, Style Files) (Guy)">
-<meta http-equiv=Content-Type content="text/html; charset=macintosh">
-<link rel=Edit-Time-Data href="Session%20Fou1_files/editdata.mso">
-<title>Session Four: XML Handler (Simple tags, Globals, Multiple Targets, Style 
-Files) (Guy)</title>
-<style><!--
-.MsoHeader
-	{tab-stops:center 3.0in right 6.0in;
-	font-size:10.0pt;
-	font-family:"Times New Roman";}
-.MsoPlainText
-	{font-size:10.0pt;
-	font-family:"Courier New";}
-.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 Four: XML Handler (Simple tags, Globals, Multiple Targets, Style 
-    Files) (Guy)</h2>
-  <h3><a name="_Toc421867121">XML Files</a></h3>
-  <p><span style='color:black'>All HTML / XML files are run through the lonxml 
-    handler before being served to a user. This allows us to rewrite many portion 
-    of a document and to support serverside tags. There are 2 ways to add new 
-    tags to the xml parsing engine, either through LON-CAPA style files or by 
-    writing Perl tag handlers for the desired tags. </span></p>
-  <p><span style='color:black'><b>Global Variables</b></span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>$Apache::lonxml::debug</i></span><span
-style='color:black'> - debugging control </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>@Apache::lonxml::pwd</i></span><span
-style='color:black'> - path to the directory containing the file currently being 
-    processed </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>@Apache::lonxml::outputstack</i></span><span
-style='color:black'> </span></p>
-  <p><span style='color:black'><i>$Apache::lonxml::redirection</i></span><span
-style='color:black'> - these two are used for capturing a subset of the output 
-    for later processing, don't touch them directly use &amp;startredirection 
-    and &amp;endredirection </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>$Apache::lonxml::import</i></span><span
-style='color:black'> - controls whether the &lt;import&gt; tag actually does anything 
-    </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>@Apache::lonxml::extlinks</i></span><span
-style='color:black'> - a list of URLs that the user is allowed to look at because 
-    of the current resource (images, and links) </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>$Apache::lonxml::metamode</i></span><span
-style='color:black'> - some output is turned off, the meta target wants a specific 
-    subset, use &lt;output&gt; to guarentee that the catianed data will be in 
-    the parsing output </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>$Apache::lonxml::evaluate</i></span><span
-style='color:black'> - controls whether run::evaluate actually derefences variable 
-    references </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>%Apache::lonxml::insertlist</i></span><span
-style='color:black'> - data structure for edit mode, determines what tags can 
-    go into what other tags </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>@Apache::lonxml::namespace</i></span><span
-style='color:black'> - stores the list of tag namespaces used in the insertlist.tab 
-    file that are currently active, used only in edit mode. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>$Apache::lonxml::registered</i></span><span
-style='color:black'> - set to 1 once the remote has been updated to know what 
-    resource we are looking at. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>$Apache::lonxml::request</i></span><span
-style='color:black'> - current Apache request object, or undef </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>$Apache::lonxml::curdepth</i></span><span
-style='color:black'> - current depth of the overall parse depth. Will be a string 
-    like: 2_3_1 (first tag in the third second level tag in the second toplevel 
-    tag). It gets set by callsub, and can be used in Perl tag implementations. 
-    It relies upon the internal globals: <i>@Apache::lonxml::depthcounter</i></span><span
-style='color:black'>, <i>$Apache::lonxml::depth</i></span><span
-style='color:black'>, <i>$Apache::lonxml::olddepth</i></span><span
-style='color:black'> </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>$Apache::lonxml::prevent_entity_encode</i></span><span
-style='color:black'> - By default the xmlparser will try to rencode any 8-bit 
-    characters into HTMLEntity Codes, If this is set to a true value it will be 
-    prevented. </span></p>
-  <p><span style='color:black'>In common usage, <i>$Apache::lonxml::prevent_entity_encode</i></span><span
-style='color:black'>, <i>$Apache::lonxml::evaluate</i></span><span
-style='color:black'>, <i>$Apache::lonxml::metamode</i></span><span
-style='color:black'>, <i>$Apache::lonxml::import</i></span><span
-style='color:black'>, should never be set to a value directly, but rather incremented 
-    when you want the effect on, and decremented when you want the effect off. 
-    </span></p>
-  <p><span style='color:black'><b>Notable Perl subroutines</b></span></p>
-  <p><span style='color:black'>If not specified these functions are in Apache::lonxml 
-    </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>xmlparse</i></span><span
-style='color:black'> - see the XMLPARSE figure - also not callable from inside 
-    a tag, if one needs to restart parsing, either create add a new LCParser to 
-    the parser stack parser using the newparser function, or call inner_xmlparser, 
-    see the xmlparse function in scripttag.pm </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>recurse</i></span><span
-style='color:black'> - acts just like <i>xmlparse</i></span><span
-style='color:black'>, except it doesn't do the style definition check it always 
-    calls <i>callsub</i></span><span style='color:black'> </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>callsub</i></span><span
-style='color:black'> - callsub looks if a perl subroutine is defined for the current 
-    tag and calls. Otherwise it just returns the tag as it was read in. It also 
-    will throw on a default editing interface unless the tag has a defined subroutine 
-    that either returns something or requests that call sub not add the editing 
-    interface. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>afterburn</i></span><span
-style='color:black'> - called on the output of xmlparse, it can add highlights, 
-    anchors, and links to regular expersion matches to the output. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>register_insert</i></span><span
-style='color:black'> - builds the %Apache::lonxml::insertlist structure of what 
-    tags can have what other tags inside. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>whichuser</i></span><span
-style='color:black'> - returns a list of $symb, $courseid, $domain, $name that 
-    is correct for calls to lonnet functions for this setup. Uses form.grade_ 
-    parameters, if the user is allowed to mgr in the course </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>setup_globals</i></span><span
-style='color:black'> - initializes all lonxml globals when xmlparse is called. 
-    If you intend to create a new target you will likely need to tweak how the 
-    globals are setup upon start up. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>init_safespace</i></span><span
-style='color:black'> - creates Holes to external functions, creates some global 
-    variables, and set the permitted operators of the global Safespace intepreter. 
-    </span></p>
-  <p><span style='color:black'><b>Functions Tag Handlers can use</b></span></p>
-  <p><span style='color:black'>If not specified these functions are in Apache::lonxml 
-    </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>debug</i></span><span
-style='color:black'> - a function to call to printout debugging messages. Will 
-    only print when Apache::lonxml::debug is set to 1 </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>warning</i></span><span
-style='color:black'> - a function to use for warning messages. The message will 
-    appear at the top of a resource when it is viewed in construction space only. 
-    </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>error</i></span><span
-style='color:black'> - a function to use for error messages. The message will 
-    appear at the top of a resource when it is viewed in construction space, and 
-    will message the resource author and course instructor, while informing the 
-    student that an error has occured otherwise. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>get_all_text</i></span><span
-style='color:black'> - 2 args, tag to look for (need to use /tag to look for an 
-    end tag) and a HTML::TokeParser reference, it will repedelyt get text from 
-    the TokeParser until the requested tag is found. It will return all of the 
-    document it pulled form the TokeParser. (See Apache::scripttag::start_script 
-    for an example of usage.) </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>get_param</i></span><span
-style='color:black'> - 4 arguments, first is a scaler sting of the argument needed, 
-    second is a reference to the parser arguments stack, third is a reference 
-    to the Safe space, and fourth is an optional &quot;context&quot; value. This 
-    subroutine allows a tag to get a tag argument, after being interpolated inside 
-    the Safe space. This should be used if the tag might use a safe space variable 
-    reference for the tag argument. (See Apache::scripttag::start_script for an 
-    example.) This version only handles scalar variables. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>get_param_var</i></span><span
-style='color:black'> - 4 arguments, first is a scaler sting of the argument needed, 
-    second is a reference to the parser arguments stack, third is a reference 
-    to the Safe space, and fourth is an optional &quot;context&quot; value. This 
-    subroutine allows a tag to get a tag argument, after being interpolated inside 
-    the Safe space. This should be used if the tag might use a safe space variable 
-    reference for the tag argument. (See Apache::scripttag::start_script for an 
-    example.) This version can handle list or hash variables properly. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>description</i></span><span
-style='color:black'> - 1 argument, the token object. This will return the textual 
-    decription of the current tag from the insertlist.tab file. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>whichuser</i></span><span
-style='color:black'> - 0 arguments. This will take a look at the current environment 
-    setting and return the current $symb, $courseid, $udom, $uname. You should 
-    always use this function if you want to determine who the current user is. 
-    (Since a instructor might be trying to view a students version of a resource.) 
-    </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>inner_xmlparse</i></span><span
-style='color:black'> - 6 arguments, the target, an array pointer to the current 
-    stack of tags, and array pointer to the current stack of tag arguments, an 
-    array pointer to the current stack of LCParser's, a pointer to the current 
-    Safe space, a pointer to the hash of current style definitions </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>newparser</i></span><span
-style='color:black'> - 3 args, first is a reference to the parser stack, second 
-    should be a reference to a string scaler containg the text the newparser should 
-    run over, third should be a scaler of the directory path the file the parser 
-    is parsing was in. (See Apache::scripttag::start_import for an example.) </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>register</i></span><span
-style='color:black'> - should be called in a file's BEGIN block. 2 arguments, 
-    a scaler string, and a list of strings. This allows a file to register what 
-    tags it handles, and what the namespace of those tags are. Example: </span></p>
-  <p><span style='font-family:"Courier New";color:black'>sub BEGIN {</span></p>
-  <p><span style='font-family:"Courier New";color:black'>&nbsp; &amp;Apache::lonxml::register('Apache::scripttag',('script','display'));</span></p>
-  <p><span style='font-family:"Courier New";color:black'>}</span></p>
-  <p><span style='color:black'>Would tell xmlparse that in Apache::scripttag it 
-    can find handlers for &lt;script&gt; and &lt;display&gt;, if one regsiters 
-    a tag that was already registered the previous one is remembered and will 
-    be restored on a deregister. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>deregister</i></span><span
-style='color:black'> - used to remove a previously registered tag implementation. 
-    It will restore the previous registration if there was one. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>startredirection</i></span><span
-style='color:black'> - used when a tag wants to save a portion of the document 
-    for its end tag to use, but wants the intervening document to be normally 
-    processed. (See Apache::scripttag::start_window for an example.) </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>endredirection</i></span><span
-style='color:black'> - used to stop preventing xmlparse from hiding output. The 
-    return value is everthing that xmlparse has processed since the corresponding 
-    startredirection. (See Apache::scripttag::end_window for an example.) </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>Apache::run::evaluate</i></span><span
-style='color:black'> - 3 args, first a string, second a reference to the Safe 
-    space, 3 a string to be evaluated before the first arg. This subroutine will 
-    do variable interpolation and simple function interpolations on the first 
-    argument. (See Apache::lonxml::inner_xmlparse for an example.) </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <i>Apache::run::run</i></span><span
-style='color:black'> - 2 args, first a string, second a reference to the Safe 
-    space. This handles passing the passed string into the Safe space for evaluation 
-    and then returns the result. (See Apache::scripttag::start_script for an example.)</span></p>
-  <h3><a name="_Toc421867122">Style Files</a></h3>
-  <p><span style='color:black'> <img width=432 height=255
-src="Session%20Fou1_files/image002.jpg" v:shapes="_x0000_i1025"> </span></p>
-  <p><span style='font-size:14.0pt;color:black'><b>Fig. 2.4.1</b></span><span
-style='font-size:14.0pt;color:black'> Ð Using a style file</span></p>
-  <p><span style='color:black'><b>Style File specific tags</b></span></p>
-  <p><span style='color:black'><b>&lt;definetag&gt;</b></span><span
-style='color:black'> - 2 arguments, <i>name</i></span><span style='color:black'> 
-    name of new tag being defined, if proceeded with a / defining an end tag, 
-    required; <i>parms</i></span><span style='color:black'> parameters of the 
-    new tag, the value of these parameters can be accesed by $parametername. </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <b>&lt;render&gt;</b></span><span
-style='color:black'> - define what the new tag does for a non meta target </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <b>&lt;meta&gt;</b></span><span
-style='color:black'> - define what the new tag does for a meta target </span></p>
-  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    <b>&lt;tex&gt; / &lt;web&gt; / &lt;latexsource&gt;</b></span><span style='color:black'> 
-    - define what a new tag does for a specific no meta target, all data inside 
-    a &lt;render&gt; is render to all targets except when surrounded by a specific 
-    target tags.</span><span style='font-size:16.0pt;color:black'> </span></p>
-  <p class=MsoHeader> <img width=432 height=243
-src="Session%20Fou1_files/image005.png" v:shapes="_x0000_i1026"> </p>
-  <p><span style='font-size:14.0pt'><b>Fig. 2.4.2</b></span><span
-style='font-size:14.0pt'> Ð The parser</span></p>
-  <h3><a name="_Toc421867123">HTML::LCParser - Alternative HTML::Parser interface</a></h3>
-  <p class=MsoPlainText>SYNOPSIS</p>
-  <p class=MsoPlainText>&nbsp;require HTML::LCParser;</p>
-  <p class=MsoPlainText>&nbsp;$p = HTML::LCParser-&gt;new(&quot;index.html&quot;) 
-    || die &quot;Can't open: $!&quot;;</p>
-  <p class=MsoPlainText>&nbsp;while (my $token = $p-&gt;get_token) {</p>
-  <p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp; #...</p>
-  <p class=MsoPlainText>&nbsp;}</p>
-  <p class=MsoPlainText>DESCRIPTION</p>
-  <p class=MsoPlainText>The C&lt;HTML::LCParser&gt; is an alternative interface 
-    to the</p>
-  <p class=MsoPlainText>C&lt;HTML::Parser&gt; class.&nbsp; It is an C&lt;HTML::PullParser&gt; 
-    subclass.</p>
-  <p class=MsoPlainText>The following methods are available:</p>
-  <p class=MsoPlainText>* $p = HTML::LCParser-&gt;new( $file_or_doc );</p>
-  <p class=MsoPlainText>The object constructor argument is either a file name, 
-    a file handle</p>
-  <p class=MsoPlainText>object, or the complete document to be parsed.</p>
-  <p class=MsoPlainText>If the argument is a plain scalar, then it is taken as 
-    the name of a</p>
-  <p class=MsoPlainText>file to be opened and parsed.&nbsp; If the file can't 
-    be opened for</p>
-  <p class=MsoPlainText>reading, then the constructor will return an undefined 
-    value and $!</p>
-  <p class=MsoPlainText>will tell you why it failed.</p>
-  <p class=MsoPlainText>If the argument is a reference to a plain scalar, then 
-    this scalar is</p>
-  <p class=MsoPlainText>taken to be the literal document to parse.&nbsp; The value 
-    of this</p>
-  <p class=MsoPlainText>scalar should not be changed before all tokens have been 
-    extracted.</p>
-  <p class=MsoPlainText>Otherwise the argument is taken to be some object that 
-    the</p>
-  <p class=MsoPlainText>C&lt;HTML::LCParser&gt; can read() from when it needs 
-    more data.&nbsp; Typically</p>
-  <p class=MsoPlainText>it will be a filehandle of some kind.&nbsp; The stream 
-    will be read() until</p>
-  <p class=MsoPlainText>EOF, but not closed.</p>
-  <p class=MsoPlainText>It also will turn attr_encoded on by default.</p>
-  <p class=MsoPlainText>* $p-&gt;get_token</p>
-  <p class=MsoPlainText>This method will return the next I&lt;token&gt; found 
-    in the HTML document,</p>
-  <p class=MsoPlainText>or C&lt;undef&gt; at the end of the document.&nbsp; The 
-    token is returned as an</p>
-  <p class=MsoPlainText>array reference.&nbsp; The first element of the array 
-    will be a (mostly)</p>
-  <p class=MsoPlainText>single character string denoting the type of this token: 
-    &quot;S&quot; for start</p>
-  <p class=MsoPlainText>tag, &quot;E&quot; for end tag, &quot;T&quot; for text, 
-    &quot;C&quot; for comment, &quot;D&quot; for</p>
-  <p class=MsoPlainText>declaration, and &quot;PI&quot; for process instructions.&nbsp; 
-    The rest of the array</p>
-  <p class=MsoPlainText>is the same as the arguments passed to the corresponding 
-    HTML::Parser</p>
-  <p class=MsoPlainText>v2 compatible callbacks (see L&lt;HTML::Parser&gt;).&nbsp; 
-    In summary, returned</p>
-  <p class=MsoPlainText>tokens look like this:</p>
-  <p class=MsoPlainText>&nbsp; [&quot;S&quot;,&nbsp; $tag, $attr, $attrseq, $text, 
-    $line]</p>
-  <p class=MsoPlainText>&nbsp; [&quot;E&quot;,&nbsp; $tag, $text, $line]</p>
-  <p class=MsoPlainText>&nbsp; [&quot;T&quot;,&nbsp; $text, $is_data, $line]</p>
-  <p class=MsoPlainText>&nbsp; [&quot;C&quot;,&nbsp; $text, $line]</p>
-  <p class=MsoPlainText>&nbsp; [&quot;D&quot;,&nbsp; $text, $line]</p>
-  <p class=MsoPlainText>&nbsp; [&quot;PI&quot;, $token0, $text, $line]</p>
-  <p class=MsoPlainText>where $attr is a hash reference, $attrseq is an array 
-    reference and</p>
-  <p class=MsoPlainText>the rest are plain scalars.</p>
-  <p class=MsoPlainText>* $p-&gt;unget_token($token,...)</p>
-  <p class=MsoPlainText>If you find out you have read too many tokens you can 
-    push them back,</p>
-  <p class=MsoPlainText>so that they are returned the next time $p-&gt;get_token 
-    is called.</p>
-  <p class=MsoPlainText>* $p-&gt;get_tag( [$tag, ...] )</p>
-  <p class=MsoPlainText>This method returns the next start or end tag (skipping 
-    any other</p>
-  <p class=MsoPlainText>tokens), or C&lt;undef&gt; if there are no more tags in 
-    the document.&nbsp; If</p>
-  <p class=MsoPlainText>one or more arguments are given, then we skip tokens until 
-    one of the</p>
-  <p class=MsoPlainText>specified tag types is found.&nbsp; For example:</p>
-  <p class=MsoPlainText>&nbsp;&nbsp; $p-&gt;get_tag(&quot;font&quot;, &quot;/font&quot;);</p>
-  <p class=MsoPlainText>will find the next start or end tag for a font-element.</p>
-  <p class=MsoPlainText>The tag information is returned as an array reference 
-    in the same form</p>
-  <p class=MsoPlainText>as for $p-&gt;get_token above, but the type code (first 
-    element) is</p>
-  <p class=MsoPlainText>missing. A start tag will be returned like this:</p>
-  <p class=MsoPlainText>&nbsp; [$tag, $attr, $attrseq, $text]</p>
-  <p class=MsoPlainText>The tagname of end tags are prefixed with &quot;/&quot;, 
-    i.e. end tag is</p>
-  <p class=MsoPlainText>returned like this:</p>
-  <p class=MsoPlainText>&nbsp; [&quot;/$tag&quot;, $text]</p>
-  <p class=MsoPlainText>* $p-&gt;get_text( [$endtag] )</p>
-  <p class=MsoPlainText>This method returns all text found at the current position. 
-    It will</p>
-  <p class=MsoPlainText>return a zero length string if the next token is not text.&nbsp; 
-    The</p>
-  <p class=MsoPlainText>optional $endtag argument specifies that any text occurring 
-    before the</p>
-  <p class=MsoPlainText>given tag is to be returned. All entities are unmodified.</p>
-  <p class=MsoPlainText>The $p-&gt;{textify} attribute is a hash that defines 
-    how certain tags can</p>
-  <p class=MsoPlainText>be treated as text.&nbsp; If the name of a start tag matches 
-    a key in this</p>
-  <p class=MsoPlainText>hash then this tag is converted to text.&nbsp; The hash 
-    value is used to</p>
-  <p class=MsoPlainText>specify which tag attribute to obtain the text from.&nbsp; 
-    If this tag</p>
-  <p class=MsoPlainText>attribute is missing, then the upper case name of the 
-    tag enclosed in</p>
-  <p class=MsoPlainText>brackets is returned, e.g. &quot;[IMG]&quot;.&nbsp; The 
-    hash value can also be a</p>
-  <p class=MsoPlainText>subroutine reference.&nbsp; In this case the routine is 
-    called with the</p>
-  <p class=MsoPlainText>start tag token content as its argument and the return 
-    value is treated</p>
-  <p class=MsoPlainText>as the text.</p>
-  <p class=MsoPlainText>The default $p-&gt;{textify} value is:</p>
-  <p class=MsoPlainText>&nbsp; {img =&gt; &quot;alt&quot;, applet =&gt; &quot;alt&quot;}</p>
-  <p class=MsoPlainText>This means that &lt;IMG&gt; and &lt;APPLET&gt; tags are 
-    treated as text, and that</p>
-  <p class=MsoPlainText>the text to substitute can be found in the ALT attribute.</p>
-  <p class=MsoPlainText>* $p-&gt;get_trimmed_text( [$endtag] )</p>
-  <p class=MsoPlainText>Same as $p-&gt;get_text above, but will collapse any sequences 
-    of white</p>
-  <p class=MsoPlainText>space to a single space character.&nbsp; Leading and trailing 
-    white space is</p>
-  <p class=MsoPlainText>removed.</p>
-  <p class=MsoPlainText>EXAMPLES</p>
-  <p class=MsoPlainText>This example extracts all links from a document.&nbsp; 
-    It will print one</p>
-  <p class=MsoPlainText>line for each link, containing the URL and the textual 
-    description</p>
-  <p class=MsoPlainText>between the &lt;A&gt;...&lt;/A&gt; tags:</p>
-  <p class=MsoPlainText>&nbsp; use HTML::LCParser;</p>
-  <p class=MsoPlainText>&nbsp; $p = HTML::LCParser-&gt;new(shift||&quot;index.html&quot;);</p>
-  <p class=MsoPlainText>&nbsp; while (my $token = $p-&gt;get_tag(&quot;a&quot;)) 
-    {</p>
-  <p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $url = $token-&gt;[1]{href} 
-    || &quot;-&quot;;</p>
-  <p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $text = $p-&gt;get_trimmed_text(&quot;/a&quot;);</p>
-  <p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;$url\t$text\n&quot;;</p>
-  <p class=MsoPlainText>&nbsp; }</p>
-  <p class=MsoPlainText>This example extract the &lt;TITLE&gt; from the document:</p>
-  <p class=MsoPlainText>&nbsp; use HTML::LCParser;</p>
-  <p class=MsoPlainText>&nbsp; $p = HTML::LCParser-&gt;new(shift||&quot;index.html&quot;);</p>
-  <p class=MsoPlainText>&nbsp; if ($p-&gt;get_tag(&quot;title&quot;)) {</p>
-  <p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $title = $p-&gt;get_trimmed_text;</p>
-  <p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;Title: $title\n&quot;;</p>
-  <p class=MsoPlainText>&nbsp; }</p>
-</div>
-<br
-clear=ALL style='page-break-before:always;'>
-<div class=Section2> </div>
-</body>
-</html>
+<html>
+
+<head>
+
+<meta name=Title
+
+content="Session Four: XML Handler (Simple tags, Globals, Multiple Targets, Style Files) (Guy)">
+
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+
+<link rel=Edit-Time-Data href="Session%20Fou1_files/editdata.mso">
+
+<title>Session Four: XML Handler (Simple tags, Globals, Multiple Targets, Style 
+
+Files) (Guy)</title>
+
+<style><!--
+
+.MsoHeader
+
+	{tab-stops:center 3.0in right 6.0in;
+
+	font-size:10.0pt;
+
+	font-family:"Times New Roman";}
+
+.MsoPlainText
+
+	{font-size:10.0pt;
+
+	font-family:"Courier New";}
+
+.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 Four: XML Handler (Simple tags, Globals, Multiple Targets, Style 
+
+    Files) (Guy)</h2>
+
+  <h3><a name="_Toc421867121">XML Files</a></h3>
+
+  <p><span style='color:black'>All HTML / XML files are run through the lonxml 
+
+    handler before being served to a user. This allows us to rewrite many portion 
+
+    of a document and to support serverside tags. There are 2 ways to add new 
+
+    tags to the xml parsing engine, either through LON-CAPA style files or by 
+
+    writing Perl tag handlers for the desired tags. </span></p>
+
+  <p><span style='color:black'><b>Global Variables</b></span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>$Apache::lonxml::debug</i></span><span
+
+style='color:black'> - debugging control </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>@Apache::lonxml::pwd</i></span><span
+
+style='color:black'> - path to the directory containing the file currently being 
+
+    processed </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>@Apache::lonxml::outputstack</i></span><span
+
+style='color:black'> </span></p>
+
+  <p><span style='color:black'><i>$Apache::lonxml::redirection</i></span><span
+
+style='color:black'> - these two are used for capturing a subset of the output 
+
+    for later processing, don't touch them directly use &amp;startredirection 
+
+    and &amp;endredirection </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>$Apache::lonxml::import</i></span><span
+
+style='color:black'> - controls whether the &lt;import&gt; tag actually does anything 
+
+    </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>@Apache::lonxml::extlinks</i></span><span
+
+style='color:black'> - a list of URLs that the user is allowed to look at because 
+
+    of the current resource (images, and links) </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>$Apache::lonxml::metamode</i></span><span
+
+style='color:black'> - some output is turned off, the meta target wants a specific 
+
+    subset, use &lt;output&gt; to guarentee that the catianed data will be in 
+
+    the parsing output </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>$Apache::lonxml::evaluate</i></span><span
+
+style='color:black'> - controls whether run::evaluate actually derefences variable 
+
+    references </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>%Apache::lonxml::insertlist</i></span><span
+
+style='color:black'> - data structure for edit mode, determines what tags can 
+
+    go into what other tags </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>@Apache::lonxml::namespace</i></span><span
+
+style='color:black'> - stores the list of tag namespaces used in the insertlist.tab 
+
+    file that are currently active, used only in edit mode. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>$Apache::lonxml::registered</i></span><span
+
+style='color:black'> - set to 1 once the remote has been updated to know what 
+
+    resource we are looking at. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>$Apache::lonxml::request</i></span><span
+
+style='color:black'> - current Apache request object, or undef </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>$Apache::lonxml::curdepth</i></span><span
+
+style='color:black'> - current depth of the overall parse depth. Will be a string 
+
+    like: 2_3_1 (first tag in the third second level tag in the second toplevel 
+
+    tag). It gets set by callsub, and can be used in Perl tag implementations. 
+
+    It relies upon the internal globals: <i>@Apache::lonxml::depthcounter</i></span><span
+
+style='color:black'>, <i>$Apache::lonxml::depth</i></span><span
+
+style='color:black'>, <i>$Apache::lonxml::olddepth</i></span><span
+
+style='color:black'> </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>$Apache::lonxml::prevent_entity_encode</i></span><span
+
+style='color:black'> - By default the xmlparser will try to rencode any 8-bit 
+
+    characters into HTMLEntity Codes, If this is set to a true value it will be 
+
+    prevented. </span></p>
+
+  <p><span style='color:black'>In common usage, <i>$Apache::lonxml::prevent_entity_encode</i></span><span
+
+style='color:black'>, <i>$Apache::lonxml::evaluate</i></span><span
+
+style='color:black'>, <i>$Apache::lonxml::metamode</i></span><span
+
+style='color:black'>, <i>$Apache::lonxml::import</i></span><span
+
+style='color:black'>, should never be set to a value directly, but rather incremented 
+
+    when you want the effect on, and decremented when you want the effect off. 
+
+    </span></p>
+
+  <p><span style='color:black'><b>Notable Perl subroutines</b></span></p>
+
+  <p><span style='color:black'>If not specified these functions are in Apache::lonxml 
+
+    </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>xmlparse</i></span><span
+
+style='color:black'> - see the XMLPARSE figure - also not callable from inside 
+
+    a tag, if one needs to restart parsing, either create add a new LCParser to 
+
+    the parser stack parser using the newparser function, or call inner_xmlparser, 
+
+    see the xmlparse function in scripttag.pm </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>recurse</i></span><span
+
+style='color:black'> - acts just like <i>xmlparse</i></span><span
+
+style='color:black'>, except it doesn't do the style definition check it always 
+
+    calls <i>callsub</i></span><span style='color:black'> </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>callsub</i></span><span
+
+style='color:black'> - callsub looks if a perl subroutine is defined for the current 
+
+    tag and calls. Otherwise it just returns the tag as it was read in. It also 
+
+    will throw on a default editing interface unless the tag has a defined subroutine 
+
+    that either returns something or requests that call sub not add the editing 
+
+    interface. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>afterburn</i></span><span
+
+style='color:black'> - called on the output of xmlparse, it can add highlights, 
+
+    anchors, and links to regular expersion matches to the output. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>register_insert</i></span><span
+
+style='color:black'> - builds the %Apache::lonxml::insertlist structure of what 
+
+    tags can have what other tags inside. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>whichuser</i></span><span
+
+style='color:black'> - returns a list of $symb, $courseid, $domain, $name that 
+
+    is correct for calls to lonnet functions for this setup. Uses form.grade_ 
+
+    parameters, if the user is allowed to mgr in the course </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>setup_globals</i></span><span
+
+style='color:black'> - initializes all lonxml globals when xmlparse is called. 
+
+    If you intend to create a new target you will likely need to tweak how the 
+
+    globals are setup upon start up. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>init_safespace</i></span><span
+
+style='color:black'> - creates Holes to external functions, creates some global 
+
+    variables, and set the permitted operators of the global Safespace intepreter. 
+
+    </span></p>
+
+  <p><span style='color:black'><b>Functions Tag Handlers can use</b></span></p>
+
+  <p><span style='color:black'>If not specified these functions are in Apache::lonxml 
+
+    </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>debug</i></span><span
+
+style='color:black'> - a function to call to printout debugging messages. Will 
+
+    only print when Apache::lonxml::debug is set to 1 </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>warning</i></span><span
+
+style='color:black'> - a function to use for warning messages. The message will 
+
+    appear at the top of a resource when it is viewed in construction space only. 
+
+    </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>error</i></span><span
+
+style='color:black'> - a function to use for error messages. The message will 
+
+    appear at the top of a resource when it is viewed in construction space, and 
+
+    will message the resource author and course instructor, while informing the 
+
+    student that an error has occured otherwise. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>get_all_text</i></span><span
+
+style='color:black'> - 2 args, tag to look for (need to use /tag to look for an 
+
+    end tag) and a HTML::TokeParser reference, it will repedelyt get text from 
+
+    the TokeParser until the requested tag is found. It will return all of the 
+
+    document it pulled form the TokeParser. (See Apache::scripttag::start_script 
+
+    for an example of usage.) </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>get_param</i></span><span
+
+style='color:black'> - 4 arguments, first is a scaler sting of the argument needed, 
+
+    second is a reference to the parser arguments stack, third is a reference 
+
+    to the Safe space, and fourth is an optional &quot;context&quot; value. This 
+
+    subroutine allows a tag to get a tag argument, after being interpolated inside 
+
+    the Safe space. This should be used if the tag might use a safe space variable 
+
+    reference for the tag argument. (See Apache::scripttag::start_script for an 
+
+    example.) This version only handles scalar variables. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>get_param_var</i></span><span
+
+style='color:black'> - 4 arguments, first is a scaler sting of the argument needed, 
+
+    second is a reference to the parser arguments stack, third is a reference 
+
+    to the Safe space, and fourth is an optional &quot;context&quot; value. This 
+
+    subroutine allows a tag to get a tag argument, after being interpolated inside 
+
+    the Safe space. This should be used if the tag might use a safe space variable 
+
+    reference for the tag argument. (See Apache::scripttag::start_script for an 
+
+    example.) This version can handle list or hash variables properly. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>description</i></span><span
+
+style='color:black'> - 1 argument, the token object. This will return the textual 
+
+    decription of the current tag from the insertlist.tab file. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>whichuser</i></span><span
+
+style='color:black'> - 0 arguments. This will take a look at the current environment 
+
+    setting and return the current $symb, $courseid, $udom, $uname. You should 
+
+    always use this function if you want to determine who the current user is. 
+
+    (Since a instructor might be trying to view a students version of a resource.) 
+
+    </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>inner_xmlparse</i></span><span
+
+style='color:black'> - 6 arguments, the target, an array pointer to the current 
+
+    stack of tags, and array pointer to the current stack of tag arguments, an 
+
+    array pointer to the current stack of LCParser's, a pointer to the current 
+
+    Safe space, a pointer to the hash of current style definitions </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>newparser</i></span><span
+
+style='color:black'> - 3 args, first is a reference to the parser stack, second 
+
+    should be a reference to a string scaler containg the text the newparser should 
+
+    run over, third should be a scaler of the directory path the file the parser 
+
+    is parsing was in. (See Apache::scripttag::start_import for an example.) </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>register</i></span><span
+
+style='color:black'> - should be called in a file's BEGIN block. 2 arguments, 
+
+    a scaler string, and a list of strings. This allows a file to register what 
+
+    tags it handles, and what the namespace of those tags are. Example: </span></p>
+
+  <p><span style='font-family:"Courier New";color:black'>sub BEGIN {</span></p>
+
+  <p><span style='font-family:"Courier New";color:black'>&nbsp; &amp;Apache::lonxml::register('Apache::scripttag',('script','display'));</span></p>
+
+  <p><span style='font-family:"Courier New";color:black'>}</span></p>
+
+  <p><span style='color:black'>Would tell xmlparse that in Apache::scripttag it 
+
+    can find handlers for &lt;script&gt; and &lt;display&gt;, if one regsiters 
+
+    a tag that was already registered the previous one is remembered and will 
+
+    be restored on a deregister. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>deregister</i></span><span
+
+style='color:black'> - used to remove a previously registered tag implementation. 
+
+    It will restore the previous registration if there was one. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>startredirection</i></span><span
+
+style='color:black'> - used when a tag wants to save a portion of the document 
+
+    for its end tag to use, but wants the intervening document to be normally 
+
+    processed. (See Apache::scripttag::start_window for an example.) </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>endredirection</i></span><span
+
+style='color:black'> - used to stop preventing xmlparse from hiding output. The 
+
+    return value is everthing that xmlparse has processed since the corresponding 
+
+    startredirection. (See Apache::scripttag::end_window for an example.) </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>Apache::run::evaluate</i></span><span
+
+style='color:black'> - 3 args, first a string, second a reference to the Safe 
+
+    space, 3 a string to be evaluated before the first arg. This subroutine will 
+
+    do variable interpolation and simple function interpolations on the first 
+
+    argument. (See Apache::lonxml::inner_xmlparse for an example.) </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <i>Apache::run::run</i></span><span
+
+style='color:black'> - 2 args, first a string, second a reference to the Safe 
+
+    space. This handles passing the passed string into the Safe space for evaluation 
+
+    and then returns the result. (See Apache::scripttag::start_script for an example.)</span></p>
+
+  <h3><a name="_Toc421867122">Style Files</a></h3>
+
+  <p><span style='color:black'> <img width=432 height=255
+
+src="Session%20Fou1_files/image002.jpg" v:shapes="_x0000_i1025"> </span></p>
+
+  <p><span style='font-size:14.0pt;color:black'><b>Fig. 2.4.1</b></span><span
+
+style='font-size:14.0pt;color:black'> Ð Using a style file</span></p>
+
+  <p><span style='color:black'><b>Style File specific tags</b></span></p>
+
+  <p><span style='color:black'><b>&lt;definetag&gt;</b></span><span
+
+style='color:black'> - 2 arguments, <i>name</i></span><span style='color:black'> 
+
+    name of new tag being defined, if proceeded with a / defining an end tag, 
+
+    required; <i>parms</i></span><span style='color:black'> parameters of the 
+
+    new tag, the value of these parameters can be accesed by $parametername. </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <b>&lt;render&gt;</b></span><span
+
+style='color:black'> - define what the new tag does for a non meta target </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <b>&lt;meta&gt;</b></span><span
+
+style='color:black'> - define what the new tag does for a meta target </span></p>
+
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    <b>&lt;tex&gt; / &lt;web&gt; / &lt;latexsource&gt;</b></span><span style='color:black'> 
+
+    - define what a new tag does for a specific no meta target, all data inside 
+
+    a &lt;render&gt; is render to all targets except when surrounded by a specific 
+
+    target tags.</span><span style='font-size:16.0pt;color:black'> </span></p>
+
+  <p class=MsoHeader> <img width=432 height=243
+
+src="Session%20Fou1_files/image005.png" v:shapes="_x0000_i1026"> </p>
+
+  <p><span style='font-size:14.0pt'><b>Fig. 2.4.2</b></span><span
+
+style='font-size:14.0pt'> Ð The parser</span></p>
+
+  <h3><a name="_Toc421867123">HTML::LCParser - Alternative HTML::Parser interface</a></h3>
+
+  <p class=MsoPlainText>SYNOPSIS</p>
+
+  <p class=MsoPlainText>&nbsp;require HTML::LCParser;</p>
+
+  <p class=MsoPlainText>&nbsp;$p = HTML::LCParser-&gt;new(&quot;index.html&quot;) 
+
+    || die &quot;Can't open: $!&quot;;</p>
+
+  <p class=MsoPlainText>&nbsp;while (my $token = $p-&gt;get_token) {</p>
+
+  <p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp; #...</p>
+
+  <p class=MsoPlainText>&nbsp;}</p>
+
+  <p class=MsoPlainText>DESCRIPTION</p>
+
+  <p class=MsoPlainText>The C&lt;HTML::LCParser&gt; is an alternative interface 
+
+    to the</p>
+
+  <p class=MsoPlainText>C&lt;HTML::Parser&gt; class.&nbsp; It is an C&lt;HTML::PullParser&gt; 
+
+    subclass.</p>
+
+  <p class=MsoPlainText>The following methods are available:</p>
+
+  <p class=MsoPlainText>* $p = HTML::LCParser-&gt;new( $file_or_doc );</p>
+
+  <p class=MsoPlainText>The object constructor argument is either a file name, 
+
+    a file handle</p>
+
+  <p class=MsoPlainText>object, or the complete document to be parsed.</p>
+
+  <p class=MsoPlainText>If the argument is a plain scalar, then it is taken as 
+
+    the name of a</p>
+
+  <p class=MsoPlainText>file to be opened and parsed.&nbsp; If the file can't 
+
+    be opened for</p>
+
+  <p class=MsoPlainText>reading, then the constructor will return an undefined 
+
+    value and $!</p>
+
+  <p class=MsoPlainText>will tell you why it failed.</p>
+
+  <p class=MsoPlainText>If the argument is a reference to a plain scalar, then 
+
+    this scalar is</p>
+
+  <p class=MsoPlainText>taken to be the literal document to parse.&nbsp; The value 
+
+    of this</p>
+
+  <p class=MsoPlainText>scalar should not be changed before all tokens have been 
+
+    extracted.</p>
+
+  <p class=MsoPlainText>Otherwise the argument is taken to be some object that 
+
+    the</p>
+
+  <p class=MsoPlainText>C&lt;HTML::LCParser&gt; can read() from when it needs 
+
+    more data.&nbsp; Typically</p>
+
+  <p class=MsoPlainText>it will be a filehandle of some kind.&nbsp; The stream 
+
+    will be read() until</p>
+
+  <p class=MsoPlainText>EOF, but not closed.</p>
+
+  <p class=MsoPlainText>It also will turn attr_encoded on by default.</p>
+
+  <p class=MsoPlainText>* $p-&gt;get_token</p>
+
+  <p class=MsoPlainText>This method will return the next I&lt;token&gt; found 
+
+    in the HTML document,</p>
+
+  <p class=MsoPlainText>or C&lt;undef&gt; at the end of the document.&nbsp; The 
+
+    token is returned as an</p>
+
+  <p class=MsoPlainText>array reference.&nbsp; The first element of the array 
+
+    will be a (mostly)</p>
+
+  <p class=MsoPlainText>single character string denoting the type of this token: 
+
+    &quot;S&quot; for start</p>
+
+  <p class=MsoPlainText>tag, &quot;E&quot; for end tag, &quot;T&quot; for text, 
+
+    &quot;C&quot; for comment, &quot;D&quot; for</p>
+
+  <p class=MsoPlainText>declaration, and &quot;PI&quot; for process instructions.&nbsp; 
+
+    The rest of the array</p>
+
+  <p class=MsoPlainText>is the same as the arguments passed to the corresponding 
+
+    HTML::Parser</p>
+
+  <p class=MsoPlainText>v2 compatible callbacks (see L&lt;HTML::Parser&gt;).&nbsp; 
+
+    In summary, returned</p>
+
+  <p class=MsoPlainText>tokens look like this:</p>
+
+  <p class=MsoPlainText>&nbsp; [&quot;S&quot;,&nbsp; $tag, $attr, $attrseq, $text, 
+
+    $line]</p>
+
+  <p class=MsoPlainText>&nbsp; [&quot;E&quot;,&nbsp; $tag, $text, $line]</p>
+
+  <p class=MsoPlainText>&nbsp; [&quot;T&quot;,&nbsp; $text, $is_data, $line]</p>
+
+  <p class=MsoPlainText>&nbsp; [&quot;C&quot;,&nbsp; $text, $line]</p>
+
+  <p class=MsoPlainText>&nbsp; [&quot;D&quot;,&nbsp; $text, $line]</p>
+
+  <p class=MsoPlainText>&nbsp; [&quot;PI&quot;, $token0, $text, $line]</p>
+
+  <p class=MsoPlainText>where $attr is a hash reference, $attrseq is an array 
+
+    reference and</p>
+
+  <p class=MsoPlainText>the rest are plain scalars.</p>
+
+  <p class=MsoPlainText>* $p-&gt;unget_token($token,...)</p>
+
+  <p class=MsoPlainText>If you find out you have read too many tokens you can 
+
+    push them back,</p>
+
+  <p class=MsoPlainText>so that they are returned the next time $p-&gt;get_token 
+
+    is called.</p>
+
+  <p class=MsoPlainText>* $p-&gt;get_tag( [$tag, ...] )</p>
+
+  <p class=MsoPlainText>This method returns the next start or end tag (skipping 
+
+    any other</p>
+
+  <p class=MsoPlainText>tokens), or C&lt;undef&gt; if there are no more tags in 
+
+    the document.&nbsp; If</p>
+
+  <p class=MsoPlainText>one or more arguments are given, then we skip tokens until 
+
+    one of the</p>
+
+  <p class=MsoPlainText>specified tag types is found.&nbsp; For example:</p>
+
+  <p class=MsoPlainText>&nbsp;&nbsp; $p-&gt;get_tag(&quot;font&quot;, &quot;/font&quot;);</p>
+
+  <p class=MsoPlainText>will find the next start or end tag for a font-element.</p>
+
+  <p class=MsoPlainText>The tag information is returned as an array reference 
+
+    in the same form</p>
+
+  <p class=MsoPlainText>as for $p-&gt;get_token above, but the type code (first 
+
+    element) is</p>
+
+  <p class=MsoPlainText>missing. A start tag will be returned like this:</p>
+
+  <p class=MsoPlainText>&nbsp; [$tag, $attr, $attrseq, $text]</p>
+
+  <p class=MsoPlainText>The tagname of end tags are prefixed with &quot;/&quot;, 
+
+    i.e. end tag is</p>
+
+  <p class=MsoPlainText>returned like this:</p>
+
+  <p class=MsoPlainText>&nbsp; [&quot;/$tag&quot;, $text]</p>
+
+  <p class=MsoPlainText>* $p-&gt;get_text( [$endtag] )</p>
+
+  <p class=MsoPlainText>This method returns all text found at the current position. 
+
+    It will</p>
+
+  <p class=MsoPlainText>return a zero length string if the next token is not text.&nbsp; 
+
+    The</p>
+
+  <p class=MsoPlainText>optional $endtag argument specifies that any text occurring 
+
+    before the</p>
+
+  <p class=MsoPlainText>given tag is to be returned. All entities are unmodified.</p>
+
+  <p class=MsoPlainText>The $p-&gt;{textify} attribute is a hash that defines 
+
+    how certain tags can</p>
+
+  <p class=MsoPlainText>be treated as text.&nbsp; If the name of a start tag matches 
+
+    a key in this</p>
+
+  <p class=MsoPlainText>hash then this tag is converted to text.&nbsp; The hash 
+
+    value is used to</p>
+
+  <p class=MsoPlainText>specify which tag attribute to obtain the text from.&nbsp; 
+
+    If this tag</p>
+
+  <p class=MsoPlainText>attribute is missing, then the upper case name of the 
+
+    tag enclosed in</p>
+
+  <p class=MsoPlainText>brackets is returned, e.g. &quot;[IMG]&quot;.&nbsp; The 
+
+    hash value can also be a</p>
+
+  <p class=MsoPlainText>subroutine reference.&nbsp; In this case the routine is 
+
+    called with the</p>
+
+  <p class=MsoPlainText>start tag token content as its argument and the return 
+
+    value is treated</p>
+
+  <p class=MsoPlainText>as the text.</p>
+
+  <p class=MsoPlainText>The default $p-&gt;{textify} value is:</p>
+
+  <p class=MsoPlainText>&nbsp; {img =&gt; &quot;alt&quot;, applet =&gt; &quot;alt&quot;}</p>
+
+  <p class=MsoPlainText>This means that &lt;IMG&gt; and &lt;APPLET&gt; tags are 
+
+    treated as text, and that</p>
+
+  <p class=MsoPlainText>the text to substitute can be found in the ALT attribute.</p>
+
+  <p class=MsoPlainText>* $p-&gt;get_trimmed_text( [$endtag] )</p>
+
+  <p class=MsoPlainText>Same as $p-&gt;get_text above, but will collapse any sequences 
+
+    of white</p>
+
+  <p class=MsoPlainText>space to a single space character.&nbsp; Leading and trailing 
+
+    white space is</p>
+
+  <p class=MsoPlainText>removed.</p>
+
+  <p class=MsoPlainText>EXAMPLES</p>
+
+  <p class=MsoPlainText>This example extracts all links from a document.&nbsp; 
+
+    It will print one</p>
+
+  <p class=MsoPlainText>line for each link, containing the URL and the textual 
+
+    description</p>
+
+  <p class=MsoPlainText>between the &lt;A&gt;...&lt;/A&gt; tags:</p>
+
+  <p class=MsoPlainText>&nbsp; use HTML::LCParser;</p>
+
+  <p class=MsoPlainText>&nbsp; $p = HTML::LCParser-&gt;new(shift||&quot;index.html&quot;);</p>
+
+  <p class=MsoPlainText>&nbsp; while (my $token = $p-&gt;get_tag(&quot;a&quot;)) 
+
+    {</p>
+
+  <p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $url = $token-&gt;[1]{href} 
+
+    || &quot;-&quot;;</p>
+
+  <p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $text = $p-&gt;get_trimmed_text(&quot;/a&quot;);</p>
+
+  <p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;$url\t$text\n&quot;;</p>
+
+  <p class=MsoPlainText>&nbsp; }</p>
+
+  <p class=MsoPlainText>This example extract the &lt;TITLE&gt; from the document:</p>
+
+  <p class=MsoPlainText>&nbsp; use HTML::LCParser;</p>
+
+  <p class=MsoPlainText>&nbsp; $p = HTML::LCParser-&gt;new(shift||&quot;index.html&quot;);</p>
+
+  <p class=MsoPlainText>&nbsp; if ($p-&gt;get_tag(&quot;title&quot;)) {</p>
+
+  <p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $title = $p-&gt;get_trimmed_text;</p>
+
+  <p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;Title: $title\n&quot;;</p>
+
+  <p class=MsoPlainText>&nbsp; }</p>
+
+</div>
+
+<br
+
+clear=ALL style='page-break-before:always;'>
+
+<div class=Section2> </div>
+
+</body>
+
+</html>
+
Index: doc/gutshtml/SessionFou2.html
diff -u doc/gutshtml/SessionFou2.html:1.1 doc/gutshtml/SessionFou2.html:1.2
--- doc/gutshtml/SessionFou2.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionFou2.html	Tue Jul 22 10:47:00 2003
@@ -1,22 +1,44 @@
-<html>
-<head>
-<meta name=Title content="Session Four: CVS/Bugzilla Intro (Guy)">
-<meta http-equiv=Content-Type content="text/html; charset=macintosh">
-<title>Session Four: CVS/Bugzilla Intro (Guy)</title>
-<style><!--
-.Section1
-	{page:Section1;}
-.Section2
-	{page:Section2;}
--->
-</style>
-</head>
-<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
-<div class=Section1> 
-  <h2>Session Four: CVS/Bugzilla Intro (Guy)</h2>
-</div>
-<br
-clear=ALL style='page-break-before:always;'>
-<div class=Section2> </div>
-</body>
-</html>
+<html>
+
+<head>
+
+<meta name=Title content="Session Four: CVS/Bugzilla Intro (Guy)">
+
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+
+<title>Session Four: CVS/Bugzilla Intro (Guy)</title>
+
+<style><!--
+
+.Section1
+
+	{page:Section1;}
+
+.Section2
+
+	{page:Section2;}
+
+-->
+
+</style>
+
+</head>
+
+<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
+
+<div class=Section1> 
+
+  <h2>Session Four: CVS/Bugzilla Intro (Guy)</h2>
+
+</div>
+
+<br
+
+clear=ALL style='page-break-before:always;'>
+
+<div class=Section2> </div>
+
+</body>
+
+</html>
+
Index: doc/gutshtml/SessionFour.html
diff -u doc/gutshtml/SessionFour.html:1.1 doc/gutshtml/SessionFour.html:1.2
--- doc/gutshtml/SessionFour.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionFour.html	Tue Jul 22 10:47:00 2003
@@ -1,513 +1,1026 @@
-<html>
-<head>
-<meta name=Title
-content="Session Four: How to install, Proper Debug Cycle for Handlers, Coding/Documentation Guidelines (Guy)">
-<meta http-equiv=Content-Type content="text/html; charset=macintosh">
-<title>Session Four: How to install, Proper Debug Cycle for Handlers, Coding/Documentation 
-Guidelines (Guy)</title>
-<style><!--
-.MsoPlainText
-	{font-size:10.0pt;
-	font-family:"Courier New";}
-.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 Four: How to install, Proper Debug Cycle for Handlers, Coding/Documentation 
-    Guidelines (Guy)</h2>
-  <h3><a name="_Toc421867078">lpml.dtd</a></h3>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!--</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Linux Packaging Markup Language version 1.0.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Date: May 3, 2001</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Author: Scott Harrison</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Linux Packaging Markup Language aims to capture</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    a source code development tree and effectively map</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    that to a compilation and installation process for</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    generating software packages and updating a run-time</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    system.&nbsp; This language helps handle dependency information,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    file globbing, file permissions, file ownerships,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    different targets for different linux distributions,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    preservation of configuration information, directory</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    permissions, directory ownerships, compilation commands,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;and, 
-    ultimately, system software status reports.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!--</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>Copyright Michigan State 
-    University Board of Trustees</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>This file is part of the 
-    LearningOnline Network with CAPA (LON-CAPA).</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>LON-CAPA is free software; 
-    you can redistribute it and/or modify</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>it under the terms of the 
-    GNU General Public License as published by</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>the Free Software Foundation; 
-    either version 2 of the License, or</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>(at your option) any later 
-    version.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>LON-CAPA is distributed 
-    in the hope that it will be useful,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>but WITHOUT ANY WARRANTY; 
-    without even the implied warranty of</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>MERCHANTABILITY or FITNESS 
-    FOR A PARTICULAR PURPOSE.&nbsp; See the</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>GNU General Public License 
-    for more details.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>You should have received 
-    a copy of the GNU General Public License</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>along with LON-CAPA; if 
-    not, write to the Free Software</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>Foundation, Inc., 59 Temple 
-    Place, Suite 330, Boston, MA&nbsp; 02111-1307&nbsp; USA</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>/home/httpd/html/adm/gpl.txt</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>http://www.lon-capa.org/</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ENTITY % lpml.Version</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &quot;-//TUX//DTD lpml 1.0 Final//EN&quot;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- Typical usage: --&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- &lt;!DOCTYPE lpml 
-    PUBLIC &quot;-//TUX/DTD LPML 1.0 Final//EN&quot;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &quot;http://lpml.sourceforge.net/DTD/lpml.dtd&quot;&gt; --&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- &lt;lpml&gt; --&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- ... --&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- &lt;/lpml&gt; --&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT categoryname 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT targetroot 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT sourceroot 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT target (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST target</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT source (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT targetdir (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST targetdir</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT sourcedir (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT glob (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT build (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT buildlink (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- </span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>The trigger attribute of 
-    the build element is meant</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>to only have one of two 
-    possible values:</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp; &quot;always run&quot;, 
-    or</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp; &quot;run if dependencies 
-    change&quot;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>Note that you must type 
-    this text exactly in for the</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>attribute value to be understood 
-    and processed correctly</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>by the lpml &quot;make build&quot; 
-    parser.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT lpml</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;(targetroot|sourceroot|specialnotices|files|categories|directories|rpm)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST build</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp; trigger CDATA 
-    #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT specialnotices 
-    (specialnotice)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT categories 
-    (category)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT directories 
-    (directory)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT files (file|fileglob|link)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT dependencies 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT note (#PCDATA|table|b|br)*&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT b (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT specialnotice 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST specialnotice</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT category (chmod,chown,abbreviation)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST category</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; type 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; name 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT chown (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST chown</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT chmod (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST chmod</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT abbreviation 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT br EMPTY&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT nobr EMPTY&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT table (#PCDATA|tr)*&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST table</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; cellpadding 
-    CDATA #IMPLIED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; cellspacing 
-    CDATA #IMPLIED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; border 
-    CDATA #IMPLIED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT tr (#PCDATA|td)*&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT td (#PCDATA|br|ul|tt|nobr)*&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT description 
-    (#PCDATA|br|tt|u)*&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT ul (#PCDATA|li)*&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT li (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT tt (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT u (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT status (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT linkto (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT directory (targetdir+,categoryname,description?)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST directory</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT file (source,target+,categoryname,description?,buildlink?,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    note?,build?,status?,dependencies?)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT link (linkto,target,categoryname,description?,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    note?,build?,status?,dependencies?)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT fileglob (glob,sourcedir,targetdir,categoryname,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    description?,note?,build?,buildlink?,status?,dependencies?,filenames?)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT filenames (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpm (rpmSummary,rpmName,rpmVersion,rpmRelease,rpmVendor,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    rpmBuildRoot,rpmCopyright,rpmGroup,rpmSource,rpmAutoReqProv,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    rpmdescription,rpmpre,rpmRequires)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmSummary 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmName (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmVersion 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmRelease 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmVendor (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmBuildRoot 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmCopyright 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmGroup (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmSource (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmAutoReqProv 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmdescription 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmpre (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmRequires 
-    (item)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT item (#PCDATA)&gt;</span></p>
-  <h3><a name="_Toc421867079">piml.dtd</a></h3>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!--</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Post Installation Markup Language version 1.0.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Date: January 24, 2002</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Author: Scott Harrison</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Post Installation Markup Language works to perform</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    'intelligent' modifications of existing files on</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    a software system.&nbsp; This allows for the reconfiguring</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    of existing configuration files without having the</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    overlap of files between software packages.&nbsp; PIML</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    also allows you to have file permission/ownership</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    specifications different than that specified by the</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    original software package.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    For instance, Apache web server configuration files</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    are a popular target for many different software applications.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    A preferred approach is to simply append an 'Include ...'</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    line to the Apache web server configuration files.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Post Installation Markup Language is meant to be</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    a natural wrapper to target installations generated</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    by LPML (Linux Packaging Markup Language).</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Usages of Post Installation Markup Language are:</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    * immediately after installation with LPML</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    * generating '%post' syntax for RPMs</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    * generating post-installation syntax for Debian packages.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Dependency checking is supported as a poor man's probing....</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    There is no point in reconfiguring a file that isn't installed,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    or is missing a system component for successful operation.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Another neat use of PIML is to allow for invocation of various</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    processes after installation.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!--</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>Copyright Michigan State 
-    University Board of Trustees</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>This file is part of the 
-    LearningOnline Network with CAPA (LON-CAPA).</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>LON-CAPA is free software; 
-    you can redistribute it and/or modify</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>it under the terms of the 
-    GNU General Public License as published by</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>the Free Software Foundation; 
-    either version 2 of the License, or</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>(at your option) any later 
-    version.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>LON-CAPA is distributed 
-    in the hope that it will be useful,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>but WITHOUT ANY WARRANTY; 
-    without even the implied warranty of</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>MERCHANTABILITY or FITNESS 
-    FOR A PARTICULAR PURPOSE.&nbsp; See the</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>GNU General Public License 
-    for more details.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>You should have received 
-    a copy of the GNU General Public License</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>along with LON-CAPA; if 
-    not, write to the Free Software</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>Foundation, Inc., 59 Temple 
-    Place, Suite 330, Boston, MA&nbsp; 02111-1307&nbsp; USA</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>/home/httpd/html/adm/gpl.txt</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>http://www.lon-capa.org/</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ENTITY % piml.Version</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &quot;-//TUX//DTD piml 1.0 Final//EN&quot;&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- Typical usage:</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &lt;!DOCTYPE piml PUBLIC &quot;-//TUX//DTD PIML 1.0 Final//EN&quot;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &nbsp;&nbsp;&nbsp; &quot;http://lpml.sourceforge.net/DTD/piml.dtd&quot;&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &lt;piml&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &lt;/piml&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;--&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT categoryname 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT targetroot 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT target (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST target</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT piml (targetroot|specialnotices|files|categories)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT specialnotices 
-    (specialnotice)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT categories 
-    (category)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT files (file)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT dependencies 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST dependencies</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT note (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT specialnotice 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT category (chmod,chown,abbreviation)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST category</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; type 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; name 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT chown (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST chown</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT chmod (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST chmod</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT abbreviation 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT file (target,categoryname?,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    note?,status?,dependencies?,perlscript)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT TARGET EMPTY&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT perlscript 
-    (#PCDATA|TARGET)*&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST perlscript</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; mode 
-    CDATA #REQUIRED</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
-  <h3><a name="_Toc421867080">xfml.dtd</a></h3>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!--</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    XML Filter Markup Language version 1.0.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;Date: 
-    January 27, 2002</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    Author: Scott Harrison</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    XML Filter Markup Language works to extract those sections</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    of an XML document matching certain conditions.&nbsp; This, in some</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    respects, relies on functionality similar to that expected</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    with XSL-type files.&nbsp; (I do not use standard XSL syntax because</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    I am not convinced that it would be simple and elegant for</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    this particular task).</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    This is anticipated to be a very important feature associated</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    with a larger Makefile-ish type approach involving the XML dtds:</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    LPML and PIML.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    LPML (Linux Packaging Markup Language) can work to install files</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    on a single computer or a distributed network of computers with</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    pre-configured ssh accessibility (.ssh/authorized_keys, etc).</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    PIML (Post Installation Markup Language) works to coordinate the</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    last little scripts that need to be run after an installation.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    With all this make-&quot;power&quot;, wouldn't it be nice to only pass through</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;portions 
-    of an LPML specification?</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!--</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>Copyright Michigan State 
-    University Board of Trustees</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>This file is part of the 
-    LearningOnline Network with CAPA (LON-CAPA).</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>LON-CAPA is free software; 
-    you can redistribute it and/or modify</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>it under the terms of the 
-    GNU General Public License as published by</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>the Free Software Foundation; 
-    either version 2 of the License, or</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>(at your option) any later 
-    version.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>LON-CAPA is distributed 
-    in the hope that it will be useful,</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>but WITHOUT ANY WARRANTY; 
-    without even the implied warranty of</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>MERCHANTABILITY or FITNESS 
-    FOR A PARTICULAR PURPOSE.&nbsp; See the</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>GNU General Public License 
-    for more details.</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>You should have received 
-    a copy of the GNU General Public License</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>along with LON-CAPA; if 
-    not, write to the Free Software</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>Foundation, Inc., 59 Temple 
-    Place, Suite 330, Boston, MA&nbsp; 02111-1307&nbsp; USA</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>/home/httpd/html/adm/gpl.txt</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>http://www.lon-capa.org/</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- Note: current status 
-    is that choice:include is currently unsupported and</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp; 
-    all matching statements REQUIRE two levels of 'when' statements;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp; 
-    not one or more than two...&nbsp; okay.. this will be fixed soon --&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ENTITY % xfml.Version</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &quot;-//TUX//DTD piml 1.0 Final//EN&quot;&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- Typical usage:</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &lt;!DOCTYPE xfml PUBLIC &quot;-//TUX//DTD PIML 1.0 Final//EN&quot;&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;xfml&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &lt;/xfml&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT choice:include 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT choice:exclude 
-    (#PCDATA)&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT xfml (clause)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT clause (when:cdata|when:name|when:attribute|choice:exclude)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT when:name</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;(when:cdata|when:name|when:attribute|choice:include|choice:exclude)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT when:attribute 
-    </span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp; (when:cdata|when:name|when:attribute|choice:include|</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp; choice:exclude)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT when:cdata 
-    </span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp; (when:cdata|when:name|when:attribute|choice:include|</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp; choice:exclude)+&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST when:name</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; match 
-    CDATA #REQUIRED&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST when:attribute</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; match 
-    CDATA #REQUIRED&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST when:cdata</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; match 
-    CDATA #REQUIRED&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST choice:include</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; nodename 
-    CDATA #REQUIRED&gt;</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST choice:exclude</span></p>
-  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; nodename 
-    CDATA #REQUIRED&gt;</span></p>
-</div>
-<br
-clear=ALL style='page-break-before:always;'>
-<div class=Section2> </div>
-</body>
-</html>
+<html>
+
+<head>
+
+<meta name=Title
+
+content="Session Four: How to install, Proper Debug Cycle for Handlers, Coding/Documentation Guidelines (Guy)">
+
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+
+<title>Session Four: How to install, Proper Debug Cycle for Handlers, Coding/Documentation 
+
+Guidelines (Guy)</title>
+
+<style><!--
+
+.MsoPlainText
+
+	{font-size:10.0pt;
+
+	font-family:"Courier New";}
+
+.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 Four: How to install, Proper Debug Cycle for Handlers, Coding/Documentation 
+
+    Guidelines (Guy)</h2>
+
+  <h3><a name="_Toc421867078">lpml.dtd</a></h3>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!--</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Linux Packaging Markup Language version 1.0.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Date: May 3, 2001</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Author: Scott Harrison</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Linux Packaging Markup Language aims to capture</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    a source code development tree and effectively map</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    that to a compilation and installation process for</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    generating software packages and updating a run-time</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    system.&nbsp; This language helps handle dependency information,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    file globbing, file permissions, file ownerships,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    different targets for different linux distributions,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    preservation of configuration information, directory</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    permissions, directory ownerships, compilation commands,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;and, 
+
+    ultimately, system software status reports.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!--</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>Copyright Michigan State 
+
+    University Board of Trustees</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>This file is part of the 
+
+    LearningOnline Network with CAPA (LON-CAPA).</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>LON-CAPA is free software; 
+
+    you can redistribute it and/or modify</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>it under the terms of the 
+
+    GNU General Public License as published by</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>the Free Software Foundation; 
+
+    either version 2 of the License, or</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>(at your option) any later 
+
+    version.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>LON-CAPA is distributed 
+
+    in the hope that it will be useful,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>but WITHOUT ANY WARRANTY; 
+
+    without even the implied warranty of</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>MERCHANTABILITY or FITNESS 
+
+    FOR A PARTICULAR PURPOSE.&nbsp; See the</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>GNU General Public License 
+
+    for more details.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>You should have received 
+
+    a copy of the GNU General Public License</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>along with LON-CAPA; if 
+
+    not, write to the Free Software</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>Foundation, Inc., 59 Temple 
+
+    Place, Suite 330, Boston, MA&nbsp; 02111-1307&nbsp; USA</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>/home/httpd/html/adm/gpl.txt</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>http://www.lon-capa.org/</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ENTITY % lpml.Version</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &quot;-//TUX//DTD lpml 1.0 Final//EN&quot;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- Typical usage: --&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- &lt;!DOCTYPE lpml 
+
+    PUBLIC &quot;-//TUX/DTD LPML 1.0 Final//EN&quot;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &quot;http://lpml.sourceforge.net/DTD/lpml.dtd&quot;&gt; --&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- &lt;lpml&gt; --&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- ... --&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- &lt;/lpml&gt; --&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT categoryname 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT targetroot 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT sourceroot 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT target (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST target</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT source (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT targetdir (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST targetdir</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT sourcedir (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT glob (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT build (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT buildlink (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- </span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>The trigger attribute of 
+
+    the build element is meant</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>to only have one of two 
+
+    possible values:</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp; &quot;always run&quot;, 
+
+    or</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp; &quot;run if dependencies 
+
+    change&quot;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>Note that you must type 
+
+    this text exactly in for the</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>attribute value to be understood 
+
+    and processed correctly</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>by the lpml &quot;make build&quot; 
+
+    parser.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT lpml</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;(targetroot|sourceroot|specialnotices|files|categories|directories|rpm)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST build</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp; trigger CDATA 
+
+    #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT specialnotices 
+
+    (specialnotice)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT categories 
+
+    (category)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT directories 
+
+    (directory)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT files (file|fileglob|link)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT dependencies 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT note (#PCDATA|table|b|br)*&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT b (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT specialnotice 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST specialnotice</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT category (chmod,chown,abbreviation)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST category</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; type 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; name 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT chown (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST chown</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT chmod (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST chmod</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT abbreviation 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT br EMPTY&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT nobr EMPTY&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT table (#PCDATA|tr)*&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST table</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; cellpadding 
+
+    CDATA #IMPLIED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; cellspacing 
+
+    CDATA #IMPLIED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; border 
+
+    CDATA #IMPLIED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT tr (#PCDATA|td)*&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT td (#PCDATA|br|ul|tt|nobr)*&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT description 
+
+    (#PCDATA|br|tt|u)*&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT ul (#PCDATA|li)*&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT li (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT tt (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT u (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT status (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT linkto (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT directory (targetdir+,categoryname,description?)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST directory</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT file (source,target+,categoryname,description?,buildlink?,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    note?,build?,status?,dependencies?)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT link (linkto,target,categoryname,description?,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    note?,build?,status?,dependencies?)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT fileglob (glob,sourcedir,targetdir,categoryname,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    description?,note?,build?,buildlink?,status?,dependencies?,filenames?)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT filenames (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpm (rpmSummary,rpmName,rpmVersion,rpmRelease,rpmVendor,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    rpmBuildRoot,rpmCopyright,rpmGroup,rpmSource,rpmAutoReqProv,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    rpmdescription,rpmpre,rpmRequires)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmSummary 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmName (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmVersion 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmRelease 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmVendor (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmBuildRoot 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmCopyright 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmGroup (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmSource (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmAutoReqProv 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmdescription 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmpre (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT rpmRequires 
+
+    (item)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT item (#PCDATA)&gt;</span></p>
+
+  <h3><a name="_Toc421867079">piml.dtd</a></h3>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!--</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Post Installation Markup Language version 1.0.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Date: January 24, 2002</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Author: Scott Harrison</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Post Installation Markup Language works to perform</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    'intelligent' modifications of existing files on</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    a software system.&nbsp; This allows for the reconfiguring</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    of existing configuration files without having the</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    overlap of files between software packages.&nbsp; PIML</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    also allows you to have file permission/ownership</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    specifications different than that specified by the</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    original software package.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    For instance, Apache web server configuration files</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    are a popular target for many different software applications.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    A preferred approach is to simply append an 'Include ...'</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    line to the Apache web server configuration files.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Post Installation Markup Language is meant to be</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    a natural wrapper to target installations generated</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    by LPML (Linux Packaging Markup Language).</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Usages of Post Installation Markup Language are:</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    * immediately after installation with LPML</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    * generating '%post' syntax for RPMs</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    * generating post-installation syntax for Debian packages.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Dependency checking is supported as a poor man's probing....</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    There is no point in reconfiguring a file that isn't installed,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    or is missing a system component for successful operation.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Another neat use of PIML is to allow for invocation of various</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    processes after installation.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!--</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>Copyright Michigan State 
+
+    University Board of Trustees</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>This file is part of the 
+
+    LearningOnline Network with CAPA (LON-CAPA).</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>LON-CAPA is free software; 
+
+    you can redistribute it and/or modify</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>it under the terms of the 
+
+    GNU General Public License as published by</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>the Free Software Foundation; 
+
+    either version 2 of the License, or</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>(at your option) any later 
+
+    version.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>LON-CAPA is distributed 
+
+    in the hope that it will be useful,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>but WITHOUT ANY WARRANTY; 
+
+    without even the implied warranty of</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>MERCHANTABILITY or FITNESS 
+
+    FOR A PARTICULAR PURPOSE.&nbsp; See the</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>GNU General Public License 
+
+    for more details.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>You should have received 
+
+    a copy of the GNU General Public License</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>along with LON-CAPA; if 
+
+    not, write to the Free Software</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>Foundation, Inc., 59 Temple 
+
+    Place, Suite 330, Boston, MA&nbsp; 02111-1307&nbsp; USA</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>/home/httpd/html/adm/gpl.txt</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>http://www.lon-capa.org/</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ENTITY % piml.Version</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &quot;-//TUX//DTD piml 1.0 Final//EN&quot;&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- Typical usage:</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &lt;!DOCTYPE piml PUBLIC &quot;-//TUX//DTD PIML 1.0 Final//EN&quot;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &nbsp;&nbsp;&nbsp; &quot;http://lpml.sourceforge.net/DTD/piml.dtd&quot;&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &lt;piml&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &lt;/piml&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;--&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT categoryname 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT targetroot 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT target (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST target</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT piml (targetroot|specialnotices|files|categories)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT specialnotices 
+
+    (specialnotice)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT categories 
+
+    (category)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT files (file)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT dependencies 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST dependencies</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT note (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT specialnotice 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT category (chmod,chown,abbreviation)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST category</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; type 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; name 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT chown (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST chown</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT chmod (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST chmod</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; dist 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT abbreviation 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT file (target,categoryname?,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    note?,status?,dependencies?,perlscript)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT TARGET EMPTY&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT perlscript 
+
+    (#PCDATA|TARGET)*&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST perlscript</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; mode 
+
+    CDATA #REQUIRED</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &gt;</span></p>
+
+  <h3><a name="_Toc421867080">xfml.dtd</a></h3>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!--</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    XML Filter Markup Language version 1.0.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;Date: 
+
+    January 27, 2002</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    Author: Scott Harrison</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    XML Filter Markup Language works to extract those sections</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    of an XML document matching certain conditions.&nbsp; This, in some</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    respects, relies on functionality similar to that expected</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    with XSL-type files.&nbsp; (I do not use standard XSL syntax because</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    I am not convinced that it would be simple and elegant for</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    this particular task).</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    This is anticipated to be a very important feature associated</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    with a larger Makefile-ish type approach involving the XML dtds:</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    LPML and PIML.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    LPML (Linux Packaging Markup Language) can work to install files</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    on a single computer or a distributed network of computers with</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    pre-configured ssh accessibility (.ssh/authorized_keys, etc).</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    PIML (Post Installation Markup Language) works to coordinate the</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    last little scripts that need to be run after an installation.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    With all this make-&quot;power&quot;, wouldn't it be nice to only pass through</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;portions 
+
+    of an LPML specification?</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!--</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>Copyright Michigan State 
+
+    University Board of Trustees</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>This file is part of the 
+
+    LearningOnline Network with CAPA (LON-CAPA).</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>LON-CAPA is free software; 
+
+    you can redistribute it and/or modify</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>it under the terms of the 
+
+    GNU General Public License as published by</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>the Free Software Foundation; 
+
+    either version 2 of the License, or</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>(at your option) any later 
+
+    version.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>LON-CAPA is distributed 
+
+    in the hope that it will be useful,</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>but WITHOUT ANY WARRANTY; 
+
+    without even the implied warranty of</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>MERCHANTABILITY or FITNESS 
+
+    FOR A PARTICULAR PURPOSE.&nbsp; See the</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>GNU General Public License 
+
+    for more details.</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>You should have received 
+
+    a copy of the GNU General Public License</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>along with LON-CAPA; if 
+
+    not, write to the Free Software</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>Foundation, Inc., 59 Temple 
+
+    Place, Suite 330, Boston, MA&nbsp; 02111-1307&nbsp; USA</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>/home/httpd/html/adm/gpl.txt</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>http://www.lon-capa.org/</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- Note: current status 
+
+    is that choice:include is currently unsupported and</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    all matching statements REQUIRE two levels of 'when' statements;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    not one or more than two...&nbsp; okay.. this will be fixed soon --&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ENTITY % xfml.Version</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &quot;-//TUX//DTD piml 1.0 Final//EN&quot;&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!-- Typical usage:</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &lt;!DOCTYPE xfml PUBLIC &quot;-//TUX//DTD PIML 1.0 Final//EN&quot;&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;xfml&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &lt;/xfml&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>--&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT choice:include 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT choice:exclude 
+
+    (#PCDATA)&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT xfml (clause)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT clause (when:cdata|when:name|when:attribute|choice:exclude)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT when:name</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;(when:cdata|when:name|when:attribute|choice:include|choice:exclude)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT when:attribute 
+
+    </span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp; (when:cdata|when:name|when:attribute|choice:include|</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp; choice:exclude)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ELEMENT when:cdata 
+
+    </span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp; (when:cdata|when:name|when:attribute|choice:include|</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp; choice:exclude)+&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST when:name</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; match 
+
+    CDATA #REQUIRED&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST when:attribute</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; match 
+
+    CDATA #REQUIRED&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST when:cdata</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; match 
+
+    CDATA #REQUIRED&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST choice:include</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; nodename 
+
+    CDATA #REQUIRED&gt;</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&lt;!ATTLIST choice:exclude</span></p>
+
+  <p class=MsoPlainText><span style='font-size:8.0pt'>&nbsp;&nbsp;&nbsp; nodename 
+
+    CDATA #REQUIRED&gt;</span></p>
+
+</div>
+
+<br
+
+clear=ALL style='page-break-before:always;'>
+
+<div class=Section2> </div>
+
+</body>
+
+</html>
+
Index: doc/gutshtml/SessionOn1.html
diff -u doc/gutshtml/SessionOn1.html:1.1 doc/gutshtml/SessionOn1.html:1.2
--- doc/gutshtml/SessionOn1.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionOn1.html	Tue Jul 22 10:47:00 2003
@@ -1 +1,849 @@
-<html><head><meta name=Title content="Session One: Roles, Data Storage, Parameters (Gerd)"><meta http-equiv=Content-Type content="text/html; charset=macintosh"><title>Session One: Roles, Data Storage, Parameters (Gerd)</title><style><!--.MsoHeader	{tab-stops:center 3.0in right 6.0in;	font-size:10.0pt;	font-family:"Times New Roman";}.Preformatted	{tab-stops:0in 47.95pt 95.9pt 143.85pt 191.8pt 239.75pt 287.7pt 335.65pt 383.6pt 431.55pt 479.5pt;	font-size:10.0pt;	font-family:"Courier New";	layout-grid-mode:line;}.Section1	{page:Section1;}.Section2	{page:Section2;}--></style></head><body bgcolor=#FFFFFF class="Normal" lang=EN-US><div class=Section1>   <h2>Session One: Roles, Data Storage, Parameters (Gerd)</h2>  <h3><a name="_Toc421867084">Domains</a></h3>  <p><span style='font-size:10.0pt'>Every user in LON-CAPA is member of one domain.     A domain can be institutional and &quot;open&quot;, for example &quot;msu&quot;     or &quot;wscc&quot; - open means that in it there can be students, authors     and other users. A domain can also be functional, for example &quot;timss_tests&quot;     or &quot;smith_publishersÓ. Physically, every domain needs at least one dedicated     library server.</span></p>  <h3><a name="_Toc421867085">Userdata</a></h3>  <p>Every user in the system has one library server, which is their home server.     It stores the authoritative copy of all of their records. Internally, this     data is stored in a directory </p>  <p><span style='font-family:"Courier New"'>&nbsp;/home/httpd/lonUsers/<i>domain</i></span><spanstyle='font-family:"Courier New"'>/<i>1.char</i></span><span style='font-family:"Courier New"'>/<i>2.char</i></span><span style='font-family:"Courier New"'>/<i>3.char</i></span><spanstyle='font-family:"Courier New"'>/<i>username</i></span><spanstyle='font-family:"Courier New"'>/</span></p>  <p class=MsoHeader>for example</p>  <p><span style='font-family:"Courier New"'>&nbsp;/home/httpd/lonUsers/msu/s/m/i/smith/</span></p>  <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>     <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>ls -alF /home/httpd/lonUsers/msu/k/o/r/kortemey</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp; &nbsp;1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       13006 May 15 12:21 activity.log</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       12413 Oct 26&nbsp; 2000 coursedescriptions.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       11361 Oct 26&nbsp; 2000 coursedescriptions.hist</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       13576 Apr 19 17:45 critical.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       1302 Apr 19 17:45 critical.hist</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       13512 Apr 19 17:45 email_status.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       1496 Apr 19 17:45 email_status.hist</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       12373 Apr 19 17:45 environment.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       169 Apr 19 17:45 environment.hist</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       12315 Oct 25&nbsp; 2000 junk.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       1590 Nov&nbsp; 4&nbsp; 1999 junk.hist</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       23626 Apr 19 17:45 msu_12679c3ed543a25msul1.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       3363 Apr 19 17:45 msu_12679c3ed543a25msul1.hist</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       17242 Nov 13&nbsp; 2000 msu_1827338c7d339a3msul1.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r-- &nbsp;&nbsp;1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       1986 Nov 13&nbsp; 2000 msu_1827338c7d339a3msul1.hist</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       18497 Dec 21 11:25 msu_1827338c7d339b4msul1.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       3801 Dec 21 11:25 msu_1827338c7d339b4msul1.hist</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       12470 Apr 19 17:45 nohist_annotations.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       13395 Nov 15&nbsp; 2000 nohist_bookmarks.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       104264 Apr 19 17:45 </span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.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;       nohist_calculatedsheets_msu_12679c3ed543a25msul1.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       13248 Apr&nbsp; 5 17:18 </span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.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;       nohist_calculatedsheets_msu_1827338c7d339b4msul1.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       12568 Oct 28&nbsp; 2000 nohist_coursedescriptions.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       765954 Apr 19 17:45 nohist_email.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       710631 Apr 19 17:45 nohist_email.hist</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       13 Apr 19 17:45 passwd</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       12802 May&nbsp; 3 13:08 roles.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       1316 Apr 12 16:05 roles.hist</span></p>  </div>  <p><span style='font-size:14.0pt'><b>Fig.2.1.1</b></span><spanstyle='font-size:14.0pt'> Ð Directory listing of userÕs home directory</span></p>  <p>Files ending on <span style='font-family:"Courier New"'>.db</span> are GDBM     files, files ending on <span style='font-family:"Courier New"'>.hist</span>     are logs of entries to these files. Filenames starting with ÒnohistÓ do not     keep history files. <span style='font-family:"Courier New"'>passwd</span>     stores the login mechanism and password (if applicable). </p>  <p><span style='font-family:"Courier New"'>environment</span> stores name-value     pairs that are automatically added to the session environment at login time,     for example the full name, etc. </p>  <p><span style='font-family:"Courier New"'>roles</span> stores the userroles.</p>  <p><span style='font-family:"Courier New"'>critical</span>, <spanstyle='font-family:"Courier New"'>nohist_email</span>, and <spanstyle='font-family:"Courier New"'>email_status</span> are used by the messaging     mechanisms</p>  <p>Files with a course-ID as name, for example <spanstyle='font-size:9.0pt;font-family:"Courier New"'>msu_12679c3ed543a25msul1.db</span>,     store performance data for that student in the course, as stored by <spanstyle='font-family:"Courier New"'>store</span> and <span style='font-family:"Courier New"'>restore</span> in lonnet.</p>  <p>Other files are caches, for example for previously calculated spreadsheets,     etc.</p>  <h3><a name="_Toc421867086">Courses</a></h3>  <p><span style='font-size:10.0pt'>Courses are assigned to users, not vice versa.     Internally, courses are handled like users without login privileges. The username     is a unique ID, for example </span><span style='font-size:9.0pt;font-family:"Courier New"'>msu_12679c3ed543a25msul1</span><spanstyle='font-size:10.0pt;font-family:"Courier New"'> </span><spanstyle='font-size:10.0pt'>Ð every course in every semester has a unique ID, there     is no semester transition. The userdata of the course includes the full name     of the course, a pointer to its top-level resource map (Òcourse mapÓ), and     any associated deadlines, spreadsheets, etc., as well as a course enrollment     list. The latter is somewhat redundant, since in principle, this list could     be produced by going through the roles of all users, and looking for the valid     role of being student in that course.</span></p>  <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>     <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>ls -alF /home/httpd/lonUsers/msu/1/2/6/12679c3ed543a25msul1/</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       17155 Apr 25 16:20 classlist.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       60912 Apr 25 16:20 classlist.hist</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       12354 Jan&nbsp; 4 16:40 environment.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       82 Jan&nbsp; 4 16:40 environment.hist</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       103030 May 15 14:47 nohist_calculatedsheets.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       13050 May&nbsp; 9 21:04 nohist_expirationdates.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       6 Jan&nbsp; 4 16:40 passwd</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       17457 May&nbsp; 9 21:04 resourcedata.db</span></p>    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       8888 May&nbsp; 9 21:04 resourcedata.hist</span></p>  </div>  <p><span style='font-size:14.0pt'><b>Fig.2.1.2</b></span><spanstyle='font-size:14.0pt'> Ð Directory listing of courseÕs home directory</span></p>  <p><span style='font-size:9.0pt;font-family:"Courier New"'>classlist</span>     is this list of students in the course, <span style='font-size:9.0pt;font-family:"Courier New"'>environment</span> includes the courseÕs full name,     etc, and <span style='font-size:9.0pt;font-family:"Courier New"'>resourcedata</span>     are deadlines, etc (parameters for homework).</p>  <h3><a name="_Toc421867087">Roles</a></h3>  <p><span style='font-size:10.0pt'>Users keep their login, data, preferences,     etc, over their complete tenure. Every user can have several roles, and the     roles can change over the lifetime of a username. For example, over the course     of studies, a student username assumes the role of &quot;student&quot; in     different courses. Roles can have start and expiration dates.</span></p>  <table border=1 cellspacing=0 cellpadding=0>    <tr>       <td width=429 colspan=3 class="Normal"> <p align=center style='text-align:center'><span  style='font-size:9.0pt'>Example: User smith at msu</span></p></td>    </tr>    <tr>       <td width=85 class="Normal"> <p><span style='font-size:9.0pt'>Instructor</span></p></td>      <td width=171 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_12679c3ed543a25msul1</span></p></td>      <td width=170 class="Normal">&nbsp; </td>    </tr>    <tr>       <td width=85 class="Normal"> <p><span style='font-size:9.0pt'>Course Coordinator</span></p></td>      <td width=171 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_12679c3ed543a25msul1</span></p></td>      <td width=170 class="Normal"> <p><span style='font-size:9.0pt'>From July           1st, 2001 to December 30th, 2001</span></p></td>    </tr>    <tr>       <td width=85 class="Normal"> <p><span style='font-size:9.0pt'>Instructor</span></p></td>      <td width=171 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_18879c3ed543a25msul2</span></p></td>      <td width=170 class="Normal"> <p><span style='font-size:9.0pt'>From Jan           1st, 2001 to June 30th, 2001</span></p></td>    </tr>    <tr>       <td width=85 class="Normal"> <p><span style='font-size:9.0pt'>Resource Author</span></p></td>      <td width=171 class="Normal"> <p><tt><span style='font-size:9.0pt;font-family:"Courier New"'>msu</span></tt></p></td>      <td width=170 class="Normal"> <p><span style='font-size:9.0pt'>From Aug           15th, 2000</span></p></td>    </tr>    <tr>       <td width=85 class="Normal"> <p><span style='font-size:9.0pt'>Student</span></p></td>      <td width=171 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_82679c3gd543a35msul1</span></p></td>      <td width=170 class="Normal"> <p><span style='font-size:9.0pt'>From July           1st, 2001 to December 30th, 2001&nbsp;</span></p></td>    </tr>  </table>  <p><span style='font-size:14.0pt'><b>Fig.2.1.3</b></span><spanstyle='font-size:14.0pt'> Ð Sample Instructor Roles</span></p>  <brclear=ALL style='page-break-before:always'>  <table border=1 cellspacing=0 cellpadding=0>    <tr>       <td width=433 colspan=3 class="Normal"> <p align=center style='text-align:center'><span  style='font-size:9.0pt'>Example: User jones at msu</span></p></td>    </tr>    <tr>       <td width=117 class="Normal"> <p><span style='font-size:9.0pt'>Custom Role           &quot;Helproom TA (smith at msu)&quot;</span></p></td>      <td width=194 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_82679c3gd543a35msul1</span></p></td>      <td width=119 class="Normal"> <p><span style='font-size:9.0pt'>From July           1st, 2001 to December 30th, 2001</span></p></td>    </tr>    <tr>       <td width=117 class="Normal"> <p><span style='font-size:9.0pt'>Student</span></p></td>      <td width=194 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_02679c3gq543a35msul1</span></p></td>      <td width=119 class="Normal"> <p><span style='font-size:9.0pt'>From Jan           1st, 2001 to June 30th, 2001</span></p></td>    </tr>    <tr>       <td width=117 class="Normal"> <p><span style='font-size:9.0pt'>Student</span></p></td>      <td width=194 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>umn_82679c3gd543a35umnl2</span></p></td>      <td width=119 class="Normal"> <p><span style='font-size:9.0pt'>From July           1st, 2001 to December 30th, 2001</span></p></td>    </tr>    <tr>       <td width=117 class="Normal"> <p><span style='font-size:9.0pt'>Exam Proctor</span></p></td>      <td width=194 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_82679c3gd543a35msul1</span></p></td>      <td width=119 class="Normal"> <p><span style='font-size:9.0pt'>Feb 21st,           2001, 1pm to 3pm</span></p></td>    </tr>  </table>  <p><span style='font-size:14.0pt'><b>Fig.2.1.4</b></span><spanstyle='font-size:14.0pt'> Ð Sample Student Roles</span></p>  <h3><a name="_Toc421867088">Custom Roles</a></h3>  <p>Course Coordinators are able to define named &quot;Custom Roles&quot; for     their courses within a pre-defined set of capabilities. In addition to these     custom roles, there are three standard course faculty/staff roles defined,     Instructor, Exam Proctor and TA. The instructor of record in a small class     is likely to be &quot;Course Coordinator&quot; and &quot;Instructor&quot;     during the term when the course is running, and might remain course coordinator     afterwards. Course coordinator can assign themselves new roles for their course     anytime.</p></div><div class=Section7>  <h1><a name="_Toc514840853">&nbsp;</a></h1>  <p>Custom role definitions are stored in the <spanstyle='font-size:9.0pt;font-family:"Courier New"'>roles.db</span> file of the     role author.</p>  <h3><a name="_Toc421867089">Choose a Role, Role Privileges</a></h3>  <p><span style='font-family:"Courier New"'>lonroles </span>is a handler that     allows a user to switch roles in mid-session.<spanstyle='font-family:"Courier New"'> </span>LON-CAPA attempts to work with ÒNo Role     SpecifiedÓ as widely as possible, but certain handlers for example need specification     which course they should act on, etc. Both in this scenario, and when the     handler determines via <span style='font-family:"Courier New"'>lonnet</span>Õs     <span style='font-family:"Courier New"'>&amp;allowed</span> function that     a certain action is not allowed, <span style='font-family:"Courier New"'>lonroles</span>     is used as errorhandler. <span style='font-family:"Courier New"'>lonroles</span>     can also be accessed via the CRS button in the Remote Control. <b>Fig. 2.1.5</b><spanstyle='font-weight:normal'> shows a sample output of </span><spanstyle='font-family:"Courier New"'>lonroles</span>.</p>  <p><img border=0 width=434 height=198 id="_x0000_i1026"src="handout_files/image002.jpg"></p>  <p><b>Fig. 2.1.5</b><span style='font-weight:normal'> Ð Sample Roles Choice     in </span><span style='font-size:12.0pt;font-family:"Courier New"'>lonroles.pm</span></p>  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'>     <p style='border:none;padding:0in'><span style='font-size:8.0pt'>System: /</span></p>  </div>  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'>     <p style='border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<spanstyle='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><spanstyle='font-size:8.0pt'>Browse resources</span></p>    <p style='border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<spanstyle='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><spanstyle='font-size:8.0pt'>Generate anonymous statistics</span></p>    <p style='border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<spanstyle='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><spanstyle='font-size:8.0pt'>Create a Course Custom Role</span></p>    <ul type=disc>      <li style='border:none;padding:0in'><span     style='font-size:8.0pt'>Send internal email</span></li>    </ul>  </div>  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'>     <p style='border:none;padding:0in'><span style='font-size:8.0pt'>Domain: msu</span></p>  </div>  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'>     <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Assemble resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Browse resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Administrator       (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Author       (UNIX authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Co-Author       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Course       Coordinator (UNIX authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke Course Custom Role       (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Domain       Guest (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Exam Proctor       (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Instructor       (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Librarian       (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Copy resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Student       (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Teaching       Assistant (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>    <ul type=disc>      <li style='line-height:90%;border:none;     padding:0in'><span style='font-size:8.0pt'>Create, edit, modify and publish         resources</span></li>      <li style='line-height:90%;border:none;     padding:0in'><span style='font-size:8.0pt'>Modify authentication mechanism         and data for a user</span></li>    </ul>  </div>  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'>     <p style='border:none;padding:0in'><span style='font-size:8.0pt'>Course: lbs267L       Lab SS01</span></p>  </div>  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'>     <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Assemble resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke Course Custom Role       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Exam Proctor       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Instructor       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Copy resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Student       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Teaching       Assistant (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Create, edit, modify and publish       resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Generate anonymous statistics</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Set assessment parameters</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Send broadcast and receipt-required       email</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>View grades</span></p>  </div>  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'>     <p style='border:none;padding:0in'><span style='font-size:8.0pt'>Course: lbs267       Lecture SS01</span></p>  </div>  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'>     <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Assemble resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke Course Custom Role       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Exam Proctor       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Instructor       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Copy resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Student       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Teaching       Assistant (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Create, edit, modify and publish       resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Generate anonymous statistics</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Set assessment parameters</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Send broadcast and receipt-required       email</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>View grades</span></p>  </div>  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'>     <p style='border:none;padding:0in'><span style='font-size:8.0pt'>Course: Demo       Course</span></p>  </div>  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'>     <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Assemble resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke Course Custom Role       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Exam Proctor       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Instructor       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Copy resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Student       (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Grant/revoke role of Teaching       Assistant (Internally authenticated, Kerberos authenticated)</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Create, edit, modify and publish       resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Generate anonymous statistics</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Set assessment parameters</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>Send broadcast and receipt-required       email</span></p>    <p style='line-height:90%;border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </span></span><span style='font-size:8.0pt'>View grades</span></p>  </div>  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'>     <p style='border:none;padding:0in'><span style='font-size:8.0pt'>Construction       Space: User: korte, Domain: msu</span></p>  </div>  <p><span style='font-size:14.0pt'><b>Fig. 2.1.6</b></span><spanstyle='font-size:14.0pt'> Ð Sample Set of Privileges</span></p>  <p><b>Fig. 2.1.6</b><span style='font-weight:normal'> shows a common set of     privileges for the user roles in </span><b>Fig. 2.1.5</b><spanstyle='font-weight:normal'>. The plain text explanations of the various roles     and the extent of them is drawn from </span><span style='font-family:"Courier New"'>/home/httpd/rolesplain.tab</span>,     see <b>Fig. 2.1.7</b><span style='font-weight:normal'>.</span></p>  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'>     <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>[www@zaphod www]$ more /home/httpd/lonTabs/rolesplain.tab</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>s:system wide</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>d:domain wide</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>c:course wide</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>U:UNIX authenticated</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>I:Internally authenticated</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>K:Kerberos authenticated</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>C:according to course preferences</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>S:according to custom role settings</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>R:according to resource settings</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>L:unless locked</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>X:according to user session       state</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>F:no restrictions</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cm:No Role, Cumulative Privileges</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>su:Superuser</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>dc:Domain Coordinator</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cc:Course Coordinator</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>in:Instructor</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ta:Teaching Assistant</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ep:Exam Proctor</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cr:Course Custom Role</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>st:Student</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ad:Administrator</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>li:Librarian </span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>au:Author</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>dg:Domain Guest</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ca:Co-Author</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>csu:Grant/revoke role of Superuser</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cdc:Grant/revoke role of Domain       Coordinator</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ccc:Grant/revoke role of Course       Coordinator</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cin:Grant/revoke role of Instructor</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cta:Grant/revoke role of Teaching       Assistant</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cep:Grant/revoke role of Exam       Proctor</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ccr:Grant/revoke Course Custom       Role</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cst:Grant/revoke role of Student</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cad:Grant/revoke role of Administrator</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cli:Grant/revoke role of Librarian</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cau:Grant/revoke role of Author</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cdg:Grant/revoke role of Domain       Guest</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cca:Grant/revoke role of Co-Author</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>mcr:Create a Course Custom Role</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>mau:Modify authentication mechanism       and data for a user</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>bre:Browse resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>are:Assemble resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cre:Copy resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ere:Create, edit, modify and       publish resources</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>mme:Modify metadata for a resource       </span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>vgr:View grades</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>mgr:Modify grades</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>gan:Generate anonymous statistics</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>dcm:Disable all communication       among students</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>sma:Send internal email</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>srm:Send broadcast and receipt-required       email</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>pch:Post to chatrooms and bulletin       boards</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>dch:Delete messages from bulletin       boards</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>pac:Post anonymously</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>rin:Get identity behind anonymous       postings</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>las:Lock and unlock assessments</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>opa:Set assessment parameters</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ain:Assume a student's identity       </span></p>  </div>  <p><span style='font-size:14.0pt'><b>Fig. 2.1.7</b></span><spanstyle='font-size:14.0pt'> Ð Explanation of Privilege Shorthands</span></p>  <h3><a name="_Toc421867090">Role Initialization</a></h3>  <p>The privileges for a user are established at login time and stored in the     session environment. A consequence is that a new role does not become active     till the next login. Handlers are able to query for privileges using<span style='font-family:"Courier New"'>     </span><span style='font-size:9.0pt;font-family:"Courier New"'>lonnet</span>Õs<span style='font-size:8.0pt;font-family:"Courier New"'> </span><span style='font-size:9.0pt;font-family:"Courier New"'>&amp;allowed</span><span style='font-size:8.0pt;font-family:"Courier New"'> </span>function. When a user first logs in, their role is the     ÒcommonÓ role, which means that they have the sum of all of their privileges.     During a session it might become necessary to choose a particular role, which     as a consequence also limits the user to only the privileges in that particular     role.</p>  <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>     <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>[www@zaphod www]$ more /home/httpd/lonTabs/roles.tab</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>su:s csu&amp;U:sma:mau:cdc&amp;U</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>dc:s sma</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>dc:d cli&amp;UIK:cau&amp;U:cdg&amp;UIK:mau:ccc&amp;U:cin&amp;UIK:cta&amp;UIK:cep&amp;UIK:ccr&amp;UIK:cst&amp;UIK:cad&amp;UIK</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cc:s bre:sma:mcr</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cc:c cin&amp;IK:cta&amp;IK:cep&amp;IK:ccr&amp;IK:cst&amp;IK:are:cre:ere:vgr:gan:srm:opa</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>in:s sma</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>in:d bre</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>in:c vgr:mgr:gan:dcm:srm:pch:dch:pac:rin:las:opa</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ta:d sma</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ta:c bre&amp;RL:vgr&amp;CR:mgr&amp;CR:srm:pch:dch:pac</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ep:d sma</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ep:c bre&amp;R:mgr&amp;R:dcm:las</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cr:d sma</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>cr:c bre&amp;R:vgr&amp;SCR:mgr&amp;SCR:gan&amp;SCR:dcm&amp;SC:srm&amp;SC:pch:dch&amp;S:pac:rin&amp;S:las&amp;SR:opa&amp;SR</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>st:d sma&amp;L</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>st:c bre&amp;RXL:pch&amp;L:pac&amp;CL</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ad:d sma</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ad:c bre:gan:vgr:srm</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>li:s gan:sma</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>li:d mme</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>au:s gan:sma</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>au:d bre:are:cre:ere:cca&amp;IK</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ca:s gan:sma</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ca:d bre:are:cre:ere</span></p>    <p style='line-height:90%;border:none;padding:0in'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>dg:d bre&amp;R</span></p>  </div>  <p><span style='font-size:14.0pt'><b>Fig. 2.1.8</b></span><spanstyle='font-size:14.0pt'> Ð Privileges by roles and extent</span></p>  <p><span style='font-size:12.0pt;font-family:Arial'>Role Assignment</span></p>  <p><span style='font-size:12.0pt;font-family:Arial'><imgborder=0 width=175 height=227 id="_x0000_i1027"src="handout_files/image003.jpg"></span></p>  <p><span style='font-size:14.0pt'><b>Fig. 2.1.9</b></span><spanstyle='font-size:14.0pt'> Ð Assigning privileges to a user</span></p>  <ul type=disc>    <li><span style='font-family:"Courier New"'>loncreateuser.pm</span> allows       users to within their own privileges (Ôc<i>xx</i><span     style='font-style:normal'> privileges) create users and give them roles (<b>Fig.       2.1.9</b></span>)<span style='font-size:12.0pt;font-family:Arial'> </span></li>    <li><span style='font-family:"Courier New"'>londropadd.pm</span> allows course       coordinators to upload courselists in different formats, and automatically       create users (if they do not exist already), assign them the role of student       in a course, and add them to the classlist. </li>    <li><span style='font-family:"Courier New"'>loncreatecourse.pm</span> allows       domain coordinators to create new courses and assign course coordinators.</li>  </ul>  <span style='font-size:12.0pt;font-family:Arial'><b><i><br clear=ALLstyle='page-break-before:always'>  </i></b></span>   <h2><a name="_Toc514840854">&nbsp;</a></h2></div><brclear=ALL style='page-break-before:always;'><div class=Section2> </div></body></html>
\ No newline at end of file
+<html>
+<head>
+<meta name=Title content="Session One: Roles, Data Storage, Parameters (Gerd)">
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+<title>Session One: Roles, Data Storage, Parameters (Gerd)</title>
+<style><!--
+.MsoHeader
+	{tab-stops:center 3.0in right 6.0in;
+	font-size:10.0pt;
+	font-family:"Times New Roman";}
+.Preformatted
+	{tab-stops:0in 47.95pt 95.9pt 143.85pt 191.8pt 239.75pt 287.7pt 335.65pt 383.6pt 431.55pt 479.5pt;
+	font-size:10.0pt;
+	font-family:"Courier New";
+	layout-grid-mode:line;}
+.Section1
+	{page:Section1;}
+.Section2
+	{page:Section2;}
+-->
+</style>
+</head>
+<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
+<div class=Section1> 
+  <h2>Session One: Roles, Data Storage, Parameters (Gerd)</h2>
+  <h3><a name="_Toc421867084">Domains</a></h3>
+  <p><span style='font-size:10.0pt'>Every user in LON-CAPA is member of one domain. 
+    A domain can be institutional and &quot;open&quot;, for example &quot;msu&quot; 
+    or &quot;wscc&quot; - open means that in it there can be students, authors 
+    and other users. A domain can also be functional, for example &quot;timss_tests&quot; 
+    or &quot;smith_publishersÓ. Physically, every domain needs at least one dedicated 
+    library server.</span></p>
+  <h3><a name="_Toc421867085">Userdata</a></h3>
+  <p>Every user in the system has one library server, which is their home server. 
+    It stores the authoritative copy of all of their records. Internally, this 
+    data is stored in a directory </p>
+  <p><span style='font-family:"Courier New"'>&nbsp;/home/httpd/lonUsers/<i>domain</i></span><span
+style='font-family:"Courier New"'>/<i>1.char</i></span><span style='font-family:
+"Courier New"'>/<i>2.char</i></span><span style='font-family:"Courier New"'>/<i>3.char</i></span><span
+style='font-family:"Courier New"'>/<i>username</i></span><span
+style='font-family:"Courier New"'>/</span></p>
+  <p class=MsoHeader>for example</p>
+  <p><span style='font-family:"Courier New"'>&nbsp;/home/httpd/lonUsers/msu/s/m/i/smith/</span></p>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'> 
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>ls -alF /home/httpd/lonUsers/msu/k/o/r/kortemey</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp; &nbsp;1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      13006 May 15 12:21 activity.log</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      12413 Oct 26&nbsp; 2000 coursedescriptions.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      11361 Oct 26&nbsp; 2000 coursedescriptions.hist</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      13576 Apr 19 17:45 critical.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      1302 Apr 19 17:45 critical.hist</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      13512 Apr 19 17:45 email_status.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      1496 Apr 19 17:45 email_status.hist</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      12373 Apr 19 17:45 environment.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      169 Apr 19 17:45 environment.hist</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      12315 Oct 25&nbsp; 2000 junk.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      1590 Nov&nbsp; 4&nbsp; 1999 junk.hist</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      23626 Apr 19 17:45 msu_12679c3ed543a25msul1.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      3363 Apr 19 17:45 msu_12679c3ed543a25msul1.hist</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      17242 Nov 13&nbsp; 2000 msu_1827338c7d339a3msul1.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r-- &nbsp;&nbsp;1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      1986 Nov 13&nbsp; 2000 msu_1827338c7d339a3msul1.hist</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      18497 Dec 21 11:25 msu_1827338c7d339b4msul1.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      3801 Dec 21 11:25 msu_1827338c7d339b4msul1.hist</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      12470 Apr 19 17:45 nohist_annotations.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      13395 Nov 15&nbsp; 2000 nohist_bookmarks.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      104264 Apr 19 17:45 </span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.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; 
+      nohist_calculatedsheets_msu_12679c3ed543a25msul1.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      13248 Apr&nbsp; 5 17:18 </span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.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; 
+      nohist_calculatedsheets_msu_1827338c7d339b4msul1.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      12568 Oct 28&nbsp; 2000 nohist_coursedescriptions.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      765954 Apr 19 17:45 nohist_email.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      710631 Apr 19 17:45 nohist_email.hist</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      13 Apr 19 17:45 passwd</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      12802 May&nbsp; 3 13:08 roles.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      1316 Apr 12 16:05 roles.hist</span></p>
+  </div>
+  <p><span style='font-size:14.0pt'><b>Fig.2.1.1</b></span><span
+style='font-size:14.0pt'> Ð Directory listing of userÕs home directory</span></p>
+  <p>Files ending on <span style='font-family:"Courier New"'>.db</span> are GDBM 
+    files, files ending on <span style='font-family:"Courier New"'>.hist</span> 
+    are logs of entries to these files. Filenames starting with ÒnohistÓ do not 
+    keep history files. <span style='font-family:"Courier New"'>passwd</span> 
+    stores the login mechanism and password (if applicable). </p>
+  <p><span style='font-family:"Courier New"'>environment</span> stores name-value 
+    pairs that are automatically added to the session environment at login time, 
+    for example the full name, etc. </p>
+  <p><span style='font-family:"Courier New"'>roles</span> stores the userroles.</p>
+  <p><span style='font-family:"Courier New"'>critical</span>, <span
+style='font-family:"Courier New"'>nohist_email</span>, and <span
+style='font-family:"Courier New"'>email_status</span> are used by the messaging 
+    mechanisms</p>
+  <p>Files with a course-ID as name, for example <span
+style='font-size:9.0pt;font-family:"Courier New"'>msu_12679c3ed543a25msul1.db</span>, 
+    store performance data for that student in the course, as stored by <span
+style='font-family:"Courier New"'>store</span> and <span style='font-family:
+"Courier New"'>restore</span> in lonnet.</p>
+  <p>Other files are caches, for example for previously calculated spreadsheets, 
+    etc.</p>
+  <h3><a name="_Toc421867086">Courses</a></h3>
+  <p><span style='font-size:10.0pt'>Courses are assigned to users, not vice versa. 
+    Internally, courses are handled like users without login privileges. The username 
+    is a unique ID, for example </span><span style='font-size:9.0pt;
+font-family:"Courier New"'>msu_12679c3ed543a25msul1</span><span
+style='font-size:10.0pt;font-family:"Courier New"'> </span><span
+style='font-size:10.0pt'>Ð every course in every semester has a unique ID, there 
+    is no semester transition. The userdata of the course includes the full name 
+    of the course, a pointer to its top-level resource map (Òcourse mapÓ), and 
+    any associated deadlines, spreadsheets, etc., as well as a course enrollment 
+    list. The latter is somewhat redundant, since in principle, this list could 
+    be produced by going through the roles of all users, and looking for the valid 
+    role of being student in that course.</span></p>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'> 
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>ls -alF /home/httpd/lonUsers/msu/1/2/6/12679c3ed543a25msul1/</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      17155 Apr 25 16:20 classlist.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      60912 Apr 25 16:20 classlist.hist</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      12354 Jan&nbsp; 4 16:40 environment.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      82 Jan&nbsp; 4 16:40 environment.hist</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      103030 May 15 14:47 nohist_calculatedsheets.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      13050 May&nbsp; 9 21:04 nohist_expirationdates.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      6 Jan&nbsp; 4 16:40 passwd</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r-----&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      17457 May&nbsp; 9 21:04 resourcedata.db</span></p>
+    <p class=Preformatted style='border:none;padding:0in;'><span style='font-size:
+8.0pt'>-rw-r--r--&nbsp;&nbsp; 1 www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      8888 May&nbsp; 9 21:04 resourcedata.hist</span></p>
+  </div>
+  <p><span style='font-size:14.0pt'><b>Fig.2.1.2</b></span><span
+style='font-size:14.0pt'> Ð Directory listing of courseÕs home directory</span></p>
+  <p><span style='font-size:9.0pt;font-family:"Courier New"'>classlist</span> 
+    is this list of students in the course, <span style='font-size:9.0pt;
+font-family:"Courier New"'>environment</span> includes the courseÕs full name, 
+    etc, and <span style='font-size:9.0pt;font-family:"Courier New"'>resourcedata</span> 
+    are deadlines, etc (parameters for homework).</p>
+  <h3><a name="_Toc421867087">Roles</a></h3>
+  <p><span style='font-size:10.0pt'>Users keep their login, data, preferences, 
+    etc, over their complete tenure. Every user can have several roles, and the 
+    roles can change over the lifetime of a username. For example, over the course 
+    of studies, a student username assumes the role of &quot;student&quot; in 
+    different courses. Roles can have start and expiration dates.</span></p>
+  <table border=1 cellspacing=0 cellpadding=0>
+    <tr> 
+      <td width=429 colspan=3 class="Normal"> <p align=center style='text-align:center'><span
+  style='font-size:9.0pt'>Example: User smith at msu</span></p></td>
+    </tr>
+    <tr> 
+      <td width=85 class="Normal"> <p><span style='font-size:9.0pt'>Instructor</span></p></td>
+      <td width=171 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_12679c3ed543a25msul1</span></p></td>
+      <td width=170 class="Normal">&nbsp; </td>
+    </tr>
+    <tr> 
+      <td width=85 class="Normal"> <p><span style='font-size:9.0pt'>Course Coordinator</span></p></td>
+      <td width=171 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_12679c3ed543a25msul1</span></p></td>
+      <td width=170 class="Normal"> <p><span style='font-size:9.0pt'>From July 
+          1st, 2001 to December 30th, 2001</span></p></td>
+    </tr>
+    <tr> 
+      <td width=85 class="Normal"> <p><span style='font-size:9.0pt'>Instructor</span></p></td>
+      <td width=171 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_18879c3ed543a25msul2</span></p></td>
+      <td width=170 class="Normal"> <p><span style='font-size:9.0pt'>From Jan 
+          1st, 2001 to June 30th, 2001</span></p></td>
+    </tr>
+    <tr> 
+      <td width=85 class="Normal"> <p><span style='font-size:9.0pt'>Resource Author</span></p></td>
+      <td width=171 class="Normal"> <p><tt><span style='font-size:9.0pt;font-family:"Courier New"'>msu</span></tt></p></td>
+      <td width=170 class="Normal"> <p><span style='font-size:9.0pt'>From Aug 
+          15th, 2000</span></p></td>
+    </tr>
+    <tr> 
+      <td width=85 class="Normal"> <p><span style='font-size:9.0pt'>Student</span></p></td>
+      <td width=171 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_82679c3gd543a35msul1</span></p></td>
+      <td width=170 class="Normal"> <p><span style='font-size:9.0pt'>From July 
+          1st, 2001 to December 30th, 2001&nbsp;</span></p></td>
+    </tr>
+  </table>
+  <p><span style='font-size:14.0pt'><b>Fig.2.1.3</b></span><span
+style='font-size:14.0pt'> Ð Sample Instructor Roles</span></p>
+  <br
+clear=ALL style='page-break-before:always'>
+  <table border=1 cellspacing=0 cellpadding=0>
+    <tr> 
+      <td width=433 colspan=3 class="Normal"> <p align=center style='text-align:center'><span
+  style='font-size:9.0pt'>Example: User jones at msu</span></p></td>
+    </tr>
+    <tr> 
+      <td width=117 class="Normal"> <p><span style='font-size:9.0pt'>Custom Role 
+          &quot;Helproom TA (smith at msu)&quot;</span></p></td>
+      <td width=194 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_82679c3gd543a35msul1</span></p></td>
+      <td width=119 class="Normal"> <p><span style='font-size:9.0pt'>From July 
+          1st, 2001 to December 30th, 2001</span></p></td>
+    </tr>
+    <tr> 
+      <td width=117 class="Normal"> <p><span style='font-size:9.0pt'>Student</span></p></td>
+      <td width=194 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_02679c3gq543a35msul1</span></p></td>
+      <td width=119 class="Normal"> <p><span style='font-size:9.0pt'>From Jan 
+          1st, 2001 to June 30th, 2001</span></p></td>
+    </tr>
+    <tr> 
+      <td width=117 class="Normal"> <p><span style='font-size:9.0pt'>Student</span></p></td>
+      <td width=194 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>umn_82679c3gd543a35umnl2</span></p></td>
+      <td width=119 class="Normal"> <p><span style='font-size:9.0pt'>From July 
+          1st, 2001 to December 30th, 2001</span></p></td>
+    </tr>
+    <tr> 
+      <td width=117 class="Normal"> <p><span style='font-size:9.0pt'>Exam Proctor</span></p></td>
+      <td width=194 class="Normal"> <p><span style='font-size:9.0pt;font-family:"Courier New"'>msu_82679c3gd543a35msul1</span></p></td>
+      <td width=119 class="Normal"> <p><span style='font-size:9.0pt'>Feb 21st, 
+          2001, 1pm to 3pm</span></p></td>
+    </tr>
+  </table>
+  <p><span style='font-size:14.0pt'><b>Fig.2.1.4</b></span><span
+style='font-size:14.0pt'> Ð Sample Student Roles</span></p>
+  <h3><a name="_Toc421867088">Custom Roles</a></h3>
+  <p>Course Coordinators are able to define named &quot;Custom Roles&quot; for 
+    their courses within a pre-defined set of capabilities. In addition to these 
+    custom roles, there are three standard course faculty/staff roles defined, 
+    Instructor, Exam Proctor and TA. The instructor of record in a small class 
+    is likely to be &quot;Course Coordinator&quot; and &quot;Instructor&quot; 
+    during the term when the course is running, and might remain course coordinator 
+    afterwards. Course coordinator can assign themselves new roles for their course 
+    anytime.</p>
+</div>
+<div class=Section7>
+  <h1><a name="_Toc514840853">&nbsp;</a></h1>
+  <p>Custom role definitions are stored in the <span
+style='font-size:9.0pt;font-family:"Courier New"'>roles.db</span> file of the 
+    role author.</p>
+  <h3><a name="_Toc421867089">Choose a Role, Role Privileges</a></h3>
+  <p><span style='font-family:"Courier New"'>lonroles </span>is a handler that 
+    allows a user to switch roles in mid-session.<span
+style='font-family:"Courier New"'> </span>LON-CAPA attempts to work with ÒNo Role 
+    SpecifiedÓ as widely as possible, but certain handlers for example need specification 
+    which course they should act on, etc. Both in this scenario, and when the 
+    handler determines via <span style='font-family:"Courier New"'>lonnet</span>Õs 
+    <span style='font-family:"Courier New"'>&amp;allowed</span> function that 
+    a certain action is not allowed, <span style='font-family:"Courier New"'>lonroles</span> 
+    is used as errorhandler. <span style='font-family:"Courier New"'>lonroles</span> 
+    can also be accessed via the CRS button in the Remote Control. <b>Fig. 2.1.5</b><span
+style='font-weight:normal'> shows a sample output of </span><span
+style='font-family:"Courier New"'>lonroles</span>.</p>
+  <p><img border=0 width=434 height=198 id="_x0000_i1026"
+src="handout_files/image002.jpg"></p>
+  <p><b>Fig. 2.1.5</b><span style='font-weight:normal'> Ð Sample Roles Choice 
+    in </span><span style='font-size:12.0pt;font-family:"Courier New"'>lonroles.pm</span></p>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'> 
+    <p style='border:none;padding:0in'><span style='font-size:8.0pt'>System: /</span></p>
+  </div>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'> 
+    <p style='
+border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
+style='font-size:8.0pt'>Browse resources</span></p>
+    <p style='
+border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
+style='font-size:8.0pt'>Generate anonymous statistics</span></p>
+    <p style='
+border:none;padding:0in'><span style='font-size:8.0pt;font-family:Symbol'>á<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
+style='font-size:8.0pt'>Create a Course Custom Role</span></p>
+    <ul type=disc>
+      <li style='border:none;padding:0in'><span
+     style='font-size:8.0pt'>Send internal email</span></li>
+    </ul>
+  </div>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'> 
+    <p style='border:none;padding:0in'><span style='font-size:8.0pt'>Domain: msu</span></p>
+  </div>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'> 
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Assemble resources</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Browse resources</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Administrator 
+      (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Author 
+      (UNIX authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Co-Author 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Course 
+      Coordinator (UNIX authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke Course Custom Role 
+      (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Domain 
+      Guest (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Exam Proctor 
+      (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Instructor 
+      (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Librarian 
+      (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Copy resources</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Student 
+      (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Teaching 
+      Assistant (UNIX authenticated, Internally authenticated, Kerberos authenticated)</span></p>
+    <ul type=disc>
+      <li style='line-height:90%;border:none;
+     padding:0in'><span style='font-size:8.0pt'>Create, edit, modify and publish 
+        resources</span></li>
+      <li style='line-height:90%;border:none;
+     padding:0in'><span style='font-size:8.0pt'>Modify authentication mechanism 
+        and data for a user</span></li>
+    </ul>
+  </div>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'> 
+    <p style='border:none;padding:0in'><span style='font-size:8.0pt'>Course: lbs267L 
+      Lab SS01</span></p>
+  </div>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'> 
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Assemble resources</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke Course Custom Role 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Exam Proctor 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Instructor 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Copy resources</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Student 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Teaching 
+      Assistant (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Create, edit, modify and publish 
+      resources</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Generate anonymous statistics</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Set assessment parameters</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Send broadcast and receipt-required 
+      email</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>View grades</span></p>
+  </div>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'> 
+    <p style='border:none;padding:0in'><span style='font-size:8.0pt'>Course: lbs267 
+      Lecture SS01</span></p>
+  </div>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'> 
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Assemble resources</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke Course Custom Role 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Exam Proctor 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Instructor 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Copy resources</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Student 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Teaching 
+      Assistant (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Create, edit, modify and publish 
+      resources</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Generate anonymous statistics</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Set assessment parameters</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Send broadcast and receipt-required 
+      email</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>View grades</span></p>
+  </div>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'> 
+    <p style='border:none;padding:0in'><span style='font-size:8.0pt'>Course: Demo 
+      Course</span></p>
+  </div>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'> 
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Assemble resources</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke Course Custom Role 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Exam Proctor 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Instructor 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Copy resources</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Student 
+      (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Grant/revoke role of Teaching 
+      Assistant (Internally authenticated, Kerberos authenticated)</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Create, edit, modify and publish 
+      resources</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Generate anonymous statistics</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Set assessment parameters</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>Send broadcast and receipt-required 
+      email</span></p>
+    <p style='line-height:90%;
+border:none;padding:0in'><span style='font-size:8.0pt;
+font-family:Symbol'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      </span></span><span style='font-size:8.0pt'>View grades</span></p>
+  </div>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'> 
+    <p style='border:none;padding:0in'><span style='font-size:8.0pt'>Construction 
+      Space: User: korte, Domain: msu</span></p>
+  </div>
+  <p><span style='font-size:14.0pt'><b>Fig. 2.1.6</b></span><span
+style='font-size:14.0pt'> Ð Sample Set of Privileges</span></p>
+  <p><b>Fig. 2.1.6</b><span style='font-weight:normal'> shows a common set of 
+    privileges for the user roles in </span><b>Fig. 2.1.5</b><span
+style='font-weight:normal'>. The plain text explanations of the various roles 
+    and the extent of them is drawn from </span><span style='font-family:"Courier New"'>/home/httpd/rolesplain.tab</span>, 
+    see <b>Fig. 2.1.7</b><span style='font-weight:normal'>.</span></p>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 1.0pt 1.0pt 1.0pt'> 
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>[www@zaphod www]$ more /home/httpd/lonTabs/rolesplain.tab</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>s:system wide</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>d:domain wide</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>c:course wide</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>U:UNIX authenticated</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>I:Internally authenticated</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>K:Kerberos authenticated</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>C:according to course preferences</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>S:according to custom role settings</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>R:according to resource settings</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>L:unless locked</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>X:according to user session 
+      state</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>F:no restrictions</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cm:No Role, Cumulative Privileges</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>su:Superuser</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>dc:Domain Coordinator</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cc:Course Coordinator</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>in:Instructor</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ta:Teaching Assistant</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ep:Exam Proctor</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cr:Course Custom Role</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>st:Student</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ad:Administrator</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>li:Librarian </span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>au:Author</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>dg:Domain Guest</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ca:Co-Author</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>csu:Grant/revoke role of Superuser</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cdc:Grant/revoke role of Domain 
+      Coordinator</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ccc:Grant/revoke role of Course 
+      Coordinator</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cin:Grant/revoke role of Instructor</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cta:Grant/revoke role of Teaching 
+      Assistant</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cep:Grant/revoke role of Exam 
+      Proctor</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ccr:Grant/revoke Course Custom 
+      Role</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cst:Grant/revoke role of Student</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cad:Grant/revoke role of Administrator</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cli:Grant/revoke role of Librarian</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cau:Grant/revoke role of Author</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cdg:Grant/revoke role of Domain 
+      Guest</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cca:Grant/revoke role of Co-Author</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>mcr:Create a Course Custom Role</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>mau:Modify authentication mechanism 
+      and data for a user</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>bre:Browse resources</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>are:Assemble resources</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cre:Copy resources</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ere:Create, edit, modify and 
+      publish resources</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>mme:Modify metadata for a resource 
+      </span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>vgr:View grades</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>mgr:Modify grades</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>gan:Generate anonymous statistics</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>dcm:Disable all communication 
+      among students</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>sma:Send internal email</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>srm:Send broadcast and receipt-required 
+      email</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>pch:Post to chatrooms and bulletin 
+      boards</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>dch:Delete messages from bulletin 
+      boards</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>pac:Post anonymously</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>rin:Get identity behind anonymous 
+      postings</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>las:Lock and unlock assessments</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>opa:Set assessment parameters</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ain:Assume a student's identity 
+      </span></p>
+  </div>
+  <p><span style='font-size:14.0pt'><b>Fig. 2.1.7</b></span><span
+style='font-size:14.0pt'> Ð Explanation of Privilege Shorthands</span></p>
+  <h3><a name="_Toc421867090">Role Initialization</a></h3>
+  <p>The privileges for a user are established at login time and stored in the 
+    session environment. A consequence is that a new role does not become active 
+    till the next login. Handlers are able to query for privileges using<span style='font-family:"Courier New"'> 
+    </span><span style='font-size:
+9.0pt;font-family:"Courier New"'>lonnet</span>Õs<span style='font-size:8.0pt;
+font-family:"Courier New"'> </span><span style='font-size:9.0pt;font-family:
+"Courier New"'>&amp;allowed</span><span style='font-size:8.0pt;font-family:
+"Courier New"'> </span>function. When a user first logs in, their role is the 
+    ÒcommonÓ role, which means that they have the sum of all of their privileges. 
+    During a session it might become necessary to choose a particular role, which 
+    as a consequence also limits the user to only the privileges in that particular 
+    role.</p>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'> 
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>[www@zaphod www]$ more /home/httpd/lonTabs/roles.tab</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>su:s csu&amp;U:sma:mau:cdc&amp;U</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>dc:s sma</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>dc:d cli&amp;UIK:cau&amp;U:cdg&amp;UIK:mau:ccc&amp;U:cin&amp;UIK:cta&amp;UIK:cep&amp;UIK:ccr&amp;UIK:cst&amp;UIK:cad&amp;UIK</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cc:s bre:sma:mcr</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cc:c cin&amp;IK:cta&amp;IK:cep&amp;IK:ccr&amp;IK:cst&amp;IK:are:cre:ere:vgr:gan:srm:opa</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>in:s sma</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>in:d bre</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>in:c vgr:mgr:gan:dcm:srm:pch:dch:pac:rin:las:opa</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ta:d sma</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ta:c bre&amp;RL:vgr&amp;CR:mgr&amp;CR:srm:pch:dch:pac</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ep:d sma</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ep:c bre&amp;R:mgr&amp;R:dcm:las</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cr:d sma</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>cr:c bre&amp;R:vgr&amp;SCR:mgr&amp;SCR:gan&amp;SCR:dcm&amp;SC:srm&amp;SC:pch:dch&amp;S:pac:rin&amp;S:las&amp;SR:opa&amp;SR</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>st:d sma&amp;L</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>st:c bre&amp;RXL:pch&amp;L:pac&amp;CL</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ad:d sma</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ad:c bre:gan:vgr:srm</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>li:s gan:sma</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>li:d mme</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>au:s gan:sma</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>au:d bre:are:cre:ere:cca&amp;IK</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ca:s gan:sma</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ca:d bre:are:cre:ere</span></p>
+    <p style='line-height:90%;border:none;padding:0in'><span
+style='font-size:8.0pt;font-family:"Courier New"'>dg:d bre&amp;R</span></p>
+  </div>
+  <p><span style='font-size:14.0pt'><b>Fig. 2.1.8</b></span><span
+style='font-size:14.0pt'> Ð Privileges by roles and extent</span></p>
+  <p><span style='font-size:12.0pt;font-family:Arial'>Role Assignment</span></p>
+  <p><span style='font-size:12.0pt;font-family:Arial'><img
+border=0 width=175 height=227 id="_x0000_i1027"
+src="handout_files/image003.jpg"></span></p>
+  <p><span style='font-size:14.0pt'><b>Fig. 2.1.9</b></span><span
+style='font-size:14.0pt'> Ð Assigning privileges to a user</span></p>
+  <ul type=disc>
+    <li><span style='font-family:"Courier New"'>loncreateuser.pm</span> allows 
+      users to within their own privileges (Ôc<i>xx</i><span
+     style='font-style:normal'> privileges) create users and give them roles (<b>Fig. 
+      2.1.9</b></span>)<span style='font-size:12.0pt;font-family:Arial'> </span></li>
+    <li><span style='font-family:"Courier New"'>londropadd.pm</span> allows course 
+      coordinators to upload courselists in different formats, and automatically 
+      create users (if they do not exist already), assign them the role of student 
+      in a course, and add them to the classlist. </li>
+    <li><span style='font-family:"Courier New"'>loncreatecourse.pm</span> allows 
+      domain coordinators to create new courses and assign course coordinators.</li>
+  </ul>
+  <span style='font-size:12.0pt;font-family:Arial'><b><i><br clear=ALL
+style='page-break-before:always'>
+  </i></b></span> 
+  <h2><a name="_Toc514840854">&nbsp;</a></h2>
+</div>
+<br
+clear=ALL style='page-break-before:always;'>
+<div class=Section2> </div>
+</body>
+</html>
Index: doc/gutshtml/SessionOn2.html
diff -u doc/gutshtml/SessionOn2.html:1.1 doc/gutshtml/SessionOn2.html:1.2
--- doc/gutshtml/SessionOn2.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionOn2.html	Tue Jul 22 10:47:00 2003
@@ -1,1670 +1,3340 @@
-<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>
+<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>
+
Index: doc/gutshtml/SessionOne.html
diff -u doc/gutshtml/SessionOne.html:1.1 doc/gutshtml/SessionOne.html:1.2
--- doc/gutshtml/SessionOne.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionOne.html	Tue Jul 22 10:47:00 2003
@@ -1,444 +1,888 @@
-<html>
-<head>
-<meta name=Title
-content="Session One: Intro/Demo, lonc/d, Replication and Load Balancing (Gerd)">
-<meta http-equiv=Content-Type content="text/html; charset=macintosh">
-<link rel=Edit-Time-Data href="Session%20One_files/editdata.mso">
-<title>Session One: Intro/Demo, lonc/d, Replication and Load Balancing (Gerd)</title>
-<style><!--
-.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: Intro/Demo, lonc/d, Replication and Load Balancing (Gerd)</h2>
-  <p> <img width=432 height=555
-src="Session%20One_files/image002.jpg" v:shapes="_x0000_i1025"> <span
-style='font-size:14.0pt'><b>Fig. 1.1.1</b></span><span style='font-size:14.0pt'> 
-    Ð Overview of Network</span></p>
-  <h3><a name="_Toc514840838"></a><a name="_Toc421867040">Overview</a></h3>
-  <p>Physically, the Network consists of relatively inexpensive upper-PC-class 
-    server machines which are linked through the commodity internet in a load-balancing, 
-    dynamically content-replicating and failover-secure way. <b>Fig. 1.1.1</b><span style='font-weight:normal'> 
-    shows an overview of this network.</span></p>
-  <p>All machines in the Network are connected with each other through two-way 
-    persistent TCP/IP connections. Clients (<b>B</b><span
-style='font-weight:normal'>, </span><b>F</b><span style='font-weight:normal'>, 
-    </span><b>G</b><span
-style='font-weight:normal'> and </span><b>H</b><span style='font-weight:normal'> 
-    in </span><b>Fig. 1.1.1</b><span style='font-weight:normal'>) connect to the 
-    servers via standard HTTP. There are two classes of servers, Library Servers 
-    (</span><b>A</b><span
-style='font-weight:normal'> and </span><b>E</b><span style='font-weight:normal'> 
-    in </span><b>Fig. 1.1.1</b><span style='font-weight:normal'>) and Access Servers 
-    (</span><b>C</b><span style='font-weight:normal'>, </span><b>D</b><span
-style='font-weight:normal'>, </span><b>I</b><span style='font-weight:normal'> 
-    and </span><b>J</b><span style='font-weight:normal'> in </span><b>Fig. 1.1.1</b><span
-style='font-weight:normal'>). Library Servers are used to store all personal records 
-    of a set of users, and are responsible for their initial authentication when 
-    a session is opened on any server in the Network. For Authors, Library Servers 
-    also hosts their construction area and the authoritative copy of the current 
-    and previous versions of every resource that was published by that author. 
-    Library servers can be used as backups to host sessions when all access servers 
-    in the Network are overloaded. Otherwise, for learners, access servers are 
-    used to host the sessions. Library servers need to be strong on I/O, while 
-    access servers can generally be cheaper hardware. The network is designed 
-    so that the number of concurrent sessions can be increased over a wide range 
-    by simply adding additional Access Servers before having to add additional 
-    Library Servers. Preliminary tests showed that a Library Server could handle 
-    up to 10 Access Servers fully parallel.</span></p>
-  <p>The Network is divided into so-called domains, which are logical boundaries 
-    between participating institutions. These domains can be used to limit the 
-    flow of personal user information across the network, set access privileges 
-    and enforce royalty schemes.</p>
-  <h3><a name="_Toc514840839"></a><a name="_Toc421867041">Example of Transactions</a></h3>
-  <p><b>Fig. 1.1.1</b><span style='font-weight:normal'> also depicts examples 
-    for several kinds of transactions conducted across the Network. </span></p>
-  <p>An instructor at client <b>B</b><span style='font-weight:
-normal'> modifies and publishes a resource on her Home Server </span><b>A</b><span
-style='font-weight:normal'>. Server </span><b>A</b><span style='font-weight:
-normal'> has a record of all server machines currently subscribed to this resource, 
-    and replicates it to servers </span><b>D</b><span style='font-weight:
-normal'> and </span><b>I</b><span style='font-weight:normal'>. However, server 
-    </span><b>D</b><span
-style='font-weight:normal'> is currently offline, so the update notification gets 
-    buffered on </span><b>A</b><span style='font-weight:normal'> until </span><b>D</b><span
-style='font-weight:normal'> comes online again.</span><b> </b><span
-style='font-weight:normal'>Servers </span><b>C</b><span style='font-weight:
-normal'> and </span><b>J</b><span style='font-weight:normal'> are currently not 
-    subscribed to this resource. </span></p>
-  <p>Learners <b>F</b><span style='font-weight:normal'> and </span><b>G</b><span
-style='font-weight:normal'> have open sessions on server </span><b>I</b><span
-style='font-weight:normal'>, and the new resource is immediately available to 
-    them. </span></p>
-  <p>Learner <b>H</b><span style='font-weight:normal'> tries to connect to server 
-    </span><b>I</b><span style='font-weight:normal'> for a new session, however, 
-    the machine is not reachable, so he connects to another Access Server </span><b>J</b><span style='font-weight:normal'> 
-    instead. This server currently does not have all necessary resources locally 
-    present to host learner </span><b>H</b><span style='font-weight:normal'>, 
-    but subscribes to them and replicates them as they are accessed by </span><b>H</b><span
-style='font-weight:normal'>. </span></p>
-  <p>Learner <b>H</b><span style='font-weight:normal'> solves a problem on server 
-    </span><b>J</b><span style='font-weight:normal'>. Library Server </span><b>E</b><span style='font-weight:normal'> 
-    is </span><b>H</b><span
-style='font-weight:normal'>Õs Home Server, so this information gets forwarded 
-    to </span><b>E</b><span style='font-weight:normal'>, where the records of 
-    </span><b>H</b><span
-style='font-weight:normal'> are updated. </span></p>
-  <h3><a name="_Toc514840840"></a><a name="_Toc421867042">lonc/lond/lonnet</a></h3>
-  <p><b>Fig. 1.1.2</b><span style='font-weight:normal'> elaborates on the details 
-    of this network infrastructure. </span></p>
-  <p><b>Fig. 1.1.2A</b><span style='font-weight:normal'> depicts three servers 
-    (</span><b>A</b><span style='font-weight:normal'>, </span><b>B</b><span
-style='font-weight:normal'> and </span><b>C</b><span style='font-weight:normal'>, 
-    </span><b>Fig. 1.1.2A</b><span style='font-weight:normal'>) and a client who 
-    has a session on server </span><b>C.</b></p>
-  <p>As <b>C</b><span style='font-weight:normal'> accesses different resources 
-    in the system, different handlers, which are incorporated as modules into 
-    the child processes of the web server software, process these requests.</span></p>
-  <p>Our current implementation uses <span style='font-family:
-"Courier New"'>mod_perl</span> inside of the Apache web server software. As an 
-    example, server <b>C</b><span style='font-weight:normal'> currently has four 
-    active web server software child processes. The chain of handlers dealing 
-    with a certain resource is determined by both the server content resource 
-    area (see below) and the MIME type, which in turn is determined by the URL 
-    extension. For most URL structures, both an authentication handler and a content 
-    handler are registered.</span></p>
-  <p>Handlers use a common library <span style='font-family:"Courier New"'>lonnet</span> 
-    to interact with both locally present temporary session data and data across 
-    the server network. For example, <span style='font-family:"Courier New"'>lonnet</span> 
-    provides routines for finding the home server of a user, finding the server 
-    with the lowest loadavg, sending simple command-reply sequences, and sending 
-    critical messages such as a homework completion, etc. For a non-critical message, 
-    the routines reply with a simple Òconnection lostÓ if the message could not 
-    be delivered. For critical messages,<i> </i><span style='font-family:
-"Courier New";font-style:normal'>lonnet</span><i> </i><span style='font-style:
-normal'>tries to re-establish</span><i> </i><span style='font-style:normal'>connections, 
-    re-send the command, etc. If no valid reply could be received, it answers 
-    Òconnection deferredÓ and stores the message in</span><i> </i><span
-style='font-style:normal'>buffer space to be sent</span><i> </i><span
-style='font-style:normal'>at a later point in time. Also, failed critical messages 
-    are logged.</span></p>
-  <p>The interface between <span style='font-family:"Courier New"'>lonnet</span> 
-    and the Network is established by a multiplexed UNIX domain socket, denoted 
-    DS in <b>Fig. 1.1.2A</b><span style='font-weight:normal'>. The rationale behind 
-    this rather involved architecture is that httpd processes (Apache children) 
-    dynamically come and go on the timescale of minutes, based on workload and 
-    number of processed requests. Over the lifetime of an httpd child, however, 
-    it has to establish several hundred connections to several different servers 
-    in the Network.</span></p>
-  <p>On the other hand, establishing a TCP/IP connection is resource consuming 
-    for both ends of the line, and to optimize this connectivity between different 
-    servers, connections in the Network are designed to be persistent on the timescale 
-    of months, until either end is rebooted. This mechanism will be elaborated 
-    on below.</p>
-  <p>Establishing a connection to a UNIX domain socket is far less resource consuming 
-    than the establishing of a TCP/IP connection. <span
-style='font-family:"Courier New"'>lonc</span> is a proxy daemon that forks off 
-    a child for every server in the Network. . Which servers are members of the 
-    Network is determined by a lookup table, which <b>Fig. 1.1.2B</b><span
-style='font-weight:normal'> is an example of. In order, the entries denote an 
-    internal name for the server, the domain of the server, the type of the server, 
-    the host name and the IP address.</span></p>
-  <p>The <span style='font-family:"Courier New"'>lonc</span> parent process maintains 
-    the population and listens for signals to restart or shutdown, as well as 
-    <i>USR1</i><span style='font-style:normal'>. Every child establishes a multiplexed 
-    UNIX domain socket for its server and opens a TCP/IP connection to the </span><span style='font-family:"Courier New"'>lond</span> 
-    daemon (discussed below) on the remote machine, which it keeps alive.<i> </i><span
-style='font-style:normal'>If the connection is interrupted, the child dies, whereupon 
-    the parent makes several attempts to fork another child for that server. </span></p>
-  <p>When starting a new child (a new connection), first an init-sequence is carried 
-    out, which includes receiving the information from the remote <span style='font-family:"Courier New"'>lond</span> 
-    which is needed to establish the 128-bit encryption key Ð the key is different 
-    for every connection. Next, any buffered (delayed) messages for the server 
-    are sent.</p>
-  <p>In normal operation, the child listens to the UNIX socket, forwards requests 
-    to the TCP connection, gets the reply from <span
-style='font-family:"Courier New"'>lond</span>, and sends it back to the UNIX socket. 
-    Also, <span style='font-family:"Courier New"'>lonc</span> takes care to the 
-    encryption and decryption of messages.</p>
-  <p><span style='font-family:"Courier New"'>lonc</span> was build by putting 
-    a non-forking multiplexed UNIX domain socket server into a framework that 
-    forks a TCP/IP client for every remote <span style='font-family:
-"Courier New"'>lond</span>.</p>
-  <p><span style='font-family:"Courier New"'>lond</span> is the remote end of 
-    the TCP/IP connection and acts as a remote command processor. It receives 
-    commands, executes them, and sends replies. In normal operation,<i> </i><span
-style='font-style:normal'>a </span><span style='font-family:"Courier New"'>lonc</span> 
-    child is constantly connected to a dedicated <span style='font-family:"Courier New"'>lond</span> 
-    child on the remote server, and the same is true vice versa (two persistent 
-    connections per server combination). </p>
-  <p><span style='font-family:"Courier New"'>lond</span><i>&nbsp; </i><span style='font-style:normal'>listens 
-    to a TCP/IP port (denoted P in <b>Fig. 1.1.2A</b></span>) and forks off enough 
-    child processes to have one for each other server in the network plus two 
-    spare children. The parent process maintains the population and listens for 
-    signals to restart or shutdown. Client servers are authenticated by IP<i>.</i></p>
-  <br
-clear=ALL style='page-break-before:always'>
-  <p><span style='font-size:14.0pt'> <img width=432 height=492
-src="Session%20One_files/image004.jpg" v:shapes="_x0000_i1026"> </span></p>
-  <p><span style='font-size:14.0pt'><b>Fig. 1.1.2A</b></span><span
-style='font-size:14.0pt'> Ð Overview of Network Communication</span></p>
-  <p>When a new client server comes online<i>,</i><span
-style='font-style:normal'> </span><span style='font-family:"Courier New"'>lond</span> 
-    sends a signal<i> USR1 </i><span style='font-style:normal'>to </span><span
-style='font-family:"Courier New"'>lonc</span>, whereupon <span
-style='font-family:"Courier New"'>lonc</span> tries again to reestablish all lost 
-    connections, even if it had given up on them before Ð a new client connecting 
-    could mean that that machine came online again after an interruption.</p>
-  <p>The gray boxes in <b>Fig. 1.1.2A</b><span style='font-weight:
-normal'> denote the entities involved in an example transaction of the Network. 
-    The Client is logged into server </span><b>C</b><span style='font-weight:normal'>, 
-    while server </span><b>B</b><span style='font-weight:normal'> is her Home 
-    Server. Server </span><b>C</b><span style='font-weight:normal'> can be an 
-    Access Server or a Library Server, while server </span><b>B</b><span
-style='font-weight:normal'> is a Library Server. She submits a solution to a homework 
-    problem, which is processed by the appropriate handler for the MIME type ÒproblemÓ. 
-    Through </span><span style='font-family:"Courier New"'>lonnet</span>, the 
-    handler writes information about this transaction to the local session data. 
-    To make a permanent log entry, <span style='font-family:"Courier New"'>lonnet 
-    </span>establishes a connection to the UNIX domain socket for server <b>B</b><span
-style='font-weight:normal'>. </span><span style='font-family:"Courier New"'>lonc</span> 
-    receives this command, encrypts it, and sends it through the persistent TCP/IP 
-    connection to the TCP/IP port of the remote <span style='font-family:"Courier New"'>lond</span>. 
-    <span style='font-family:"Courier New"'>lond</span> decrypts the command, 
-    executes it by writing to the permanent user data files of the client, and 
-    sends back a reply regarding the success of the operation. If the operation 
-    was unsuccessful, or the connection would have broken down, <span style='font-family:
-"Courier New"'>lonc</span> would write the command into a FIFO buffer stack to 
-    be sent again later. <span style='font-family:"Courier New"'>lonc</span> now 
-    sends a reply regarding the overall success of the operation to <span
-style='font-family:"Courier New"'>lonnet</span> via the UNIX domain port, which 
-    is eventually received back by the handler.</p>
-  <h3><a name="_Toc514840841"></a><a name="_Toc421867043">Scalability and Performance 
-    Analysis</a></h3>
-  <p>The scalability was tested in a test bed of servers between different physical 
-    network segments, <b>Fig. 1.1.2B</b><span style='font-weight:
-normal'> shows the network configuration of this test.</span></p>
-  <table border=1 cellspacing=0 cellpadding=0>
-    <tr> 
-      <td width=443 valign=top class="Normal"> <p><span style='font-family:"Courier New"'>msul1:msu:library:zaphod.lite.msu.edu:35.8.63.51</span></p>
-        <p><span style='font-family:"Courier New"'>msua1:msu:access:agrajag.lite.msu.edu:35.8.63.68</span></p>
-        <p><span style='font-family:"Courier New"'>msul2:msu:library:frootmig.lite.msu.edu:35.8.63.69</span></p>
-        <p><span style='font-family:"Courier New"'>msua2:msu:access:bistromath.lite.msu.edu:35.8.63.67</span></p>
-        <p><span style='font-family:"Courier New"'>hubl14:hub:library:hubs128-pc-14.cl.msu.edu:35.8.116.34</span></p>
-        <p><span style='font-family:"Courier New"'>hubl15:hub:library:hubs128-pc-15.cl.msu.edu:35.8.116.35</span></p>
-        <p><span style='font-family:"Courier New"'>hubl16:hub:library:hubs128-pc-16.cl.msu.edu:35.8.116.36</span></p>
-        <p><span style='font-family:"Courier New"'>huba20:hub:access:hubs128-pc-20.cl.msu.edu:35.8.116.40</span></p>
-        <p><span style='font-family:"Courier New"'>huba21:hub:access:hubs128-pc-21.cl.msu.edu:35.8.116.41</span></p>
-        <p><span style='font-family:"Courier New"'>huba22:hub:access:hubs128-pc-22.cl.msu.edu:35.8.116.42</span></p>
-        <p><span style='font-family:"Courier New"'>huba23:hub:access:hubs128-pc-23.cl.msu.edu:35.8.116.43</span></p>
-        <p><span style='font-family:"Courier New"'>hubl25:other:library:hubs128-pc-25.cl.msu.edu:35.8.116.45</span></p>
-        <p><span style='font-family:"Courier New"'>huba27:other:access:hubs128-pc-27.cl.msu.edu:35.8.116.47</span></p></td>
-    </tr>
-  </table>
-  <p><span style='font-size:14.0pt'><b>Fig. 1.1.2B</b></span><span
-style='font-size:14.0pt'> Ð Example of Hosts Lookup Table </span><span
-style='font-size:9.0pt;font-family:"Courier New"'>/home/httpd/lonTabs/hosts.tab</span></p>
-  <p>In the first test,<span style='layout-grid-mode:line'> the simple </span><span style='font-family:"Courier New";layout-grid-mode:line'>ping</span><span
-style='layout-grid-mode:line'> command was used. The </span><span
-style='font-family:"Courier New";layout-grid-mode:line'>ping</span><span
-style='layout-grid-mode:line'> command is used to test connections and yields 
-    the server short name as reply.&nbsp; In this scenario, </span><span style='font-family:"Courier New";layout-grid-mode:
-line'>lonc</span><span style='layout-grid-mode:line'> was expected to be the speed-determining 
-    step, since </span><span style='font-family:"Courier New";
-layout-grid-mode:line'>lond</span><span style='layout-grid-mode:line'> at the 
-    remote end does not need any disk access to reply.&nbsp; The graph <b>Fig. 
-    1.1.2C</b></span><span style='layout-grid-mode:
-line'> shows number of seconds till completion versus number of processes issuing 
-    10,000 ping commands each against one Library Server (450 MHz Pentium II in 
-    this test, single IDE HD). For the solid dots, the processes were concurrently 
-    started on <i>the same</i></span><span style='layout-grid-mode:
-line'> Access Server and the time was measured till the processes finished Ð all 
-    processes finished at the same time. One Access Server (233 MHz Pentium II 
-    in the test bed) can process about 150 pings per second, and as expected, 
-    the total time grows linearly with the number of pings.</span></p>
-  <p><span style='layout-grid-mode:line'>The gray dots were taken with up to seven 
-    processes concurrently running on <i>different</i></span><span
-style='layout-grid-mode:line'> machines and pinging the same server Ð the processes 
-    ran fully concurrent, and each process finished as if the other ones were 
-    not present (about 1000 pings per second). Execution was fully parallel.</span></p>
-  <p>In a second test, <span style='font-family:"Courier New"'>lond</span> was 
-    the speed-determining step Ð 10,000 <span style='font-family:"Courier New"'>put</span> 
-    commands each were issued first from up to seven concurrent processes on the 
-    same machine, and then from up to seven processes on different machines. The 
-    <span
-style='font-family:"Courier New"'>put</span> command requires data to be written 
-    to the permanent record of the user on the remote server.</p>
-  <p>In particular, one <span style='font-family:"Courier New"'>&quot;put&quot;</span> 
-    request meant that the process on the Access Server would connect to the UNIX 
-    domain socket dedicated to the library server, <span style='font-family:"Courier New"'>lonc</span> 
-    would take the data from there, shuffle it through the persistent TCP connection, 
-    <span style='font-family:"Courier New"'>lond</span> on the remote library 
-    server would take the data, write to disk (both to a dbm-file and to a flat-text 
-    transaction history file), answer &quot;ok&quot;, <span
-style='font-family:"Courier New"'>lonc</span> would take that reply and send it 
-    to the domain socket, the process would read it from there and close the domain-socket 
-    connection.</p>
-  <p><span style='font-size:14.0pt'> <img width=220 height=190
-src="Session%20One_files/image005.jpg" v:shapes="_x0000_i1027"> </span></p>
-  <p><span style='font-size:14.0pt'><b>Fig. 1.1.2C</b></span><span
-style='font-size:14.0pt'> Ð Benchmark on Parallelism of Server-Server Communication 
-    (no disk access)</span></p>
-  <p>The graph <b>Fig. 1.1.2D</b><span style='font-weight:normal'> shows the results. 
-    Series 1 (solid black diamond) is the result of concurrent processes on the 
-    same server Ð all of these are handled by the same server-dedicated </span><span style='font-family:"Courier New"'>lond-</span>child, 
-    which lets the total amount of time grow linearly.</p>
-  <p><span style='font-size:14.0pt'> <img width=432 height=311
-src="Session%20One_files/image007.jpg" v:shapes="_x0000_i1028"> </span></p>
-  <p><span style='font-size:14.0pt'><b>Fig. 2D</b></span><span
-style='font-size:14.0pt'> Ð Benchmark on Parallelism of Server-Server Communication 
-    (with disk access as in Fig. 2A)</span></p>
-  <p>Series 2 through 8 were obtained from running the processes on different 
-    Access Servers against one Library Server, each series goes with one server. 
-    In this experiment, the processes did not finish at the same time, which most 
-    likely is due to disk-caching on the Library Server Ð <span
-style='font-family:"Courier New"'>lond</span>-children whose datafile was (partly) 
-    in disk cache finished earlier. With seven processes from seven different 
-    servers, the operation took 255 seconds till the last process was finished 
-    for 70,000 <span style='font-family:"Courier New"'>put</span> commands (270 
-    per second) Ð versus 530 seconds if the processes ran on the same server (130 
-    per second).</p>
-  <h3><a name="_Toc514840842"></a><a name="_Toc421867044">Dynamic Resource Replication</a></h3>
-  <p>Since resources are assembled into higher order resources simply by reference, 
-    in principle it would be sufficient to retrieve them from the respective Home 
-    Servers of the authors. However, there are several problems with this simple 
-    approach: since the resource assembly mechanism is designed to facilitate 
-    content assembly from a large number of widely distributed sources, individual 
-    sessions would depend on a large number of machines and network connections 
-    to be available, thus be rather fragile. Also, frequently accessed resources 
-    could potentially drive individual machines in the network into overload situations.</p>
-  <p>Finally, since most resources depend on content handlers on the Access Servers 
-    to be served to a client within the session context, the raw source would 
-    first have to be transferred across the Network from the respective Library 
-    Server to the Access Server, processed there, and then transferred on to the 
-    client.</p>
-  <p>To enable resource assembly in a reliable and scalable way, a dynamic resource 
-    replication scheme was developed. <b>Fig. 1.1.3</b><span
-style='font-weight:normal'> shows the details of this mechanism.</span></p>
-  <p>Anytime a resource out of the resource space is requested, a handler routine 
-    is called which in turn calls the replication routine (<b>Fig. 1.1.3A</b><span style='font-weight:normal'>). 
-    As a first step, this routines determines whether or not the resource is currently 
-    in replication transfer (</span><b>Fig. 1.1.3A,</b><span style='font-weight:normal'> 
-    </span><b>Step D1a</b><span
-style='font-weight:normal'>). During replication transfer, the incoming data is 
-    stored in a temporary file, and </span><b>Step D1a</b><span style='font-weight:
-normal'> checks for the presence of that file. If transfer of a resource is actively 
-    going on, the controlling handler receives an error message, waits for a few 
-    seconds, and then calls the replication routine again. If the resource is 
-    still in transfer, the client will receive the message ÒService currently 
-    not availableÓ.</span></p>
-  <p>In the next step (<b>Fig. 1.1.3A, Step D1b</b><span
-style='font-weight:normal'>), the replication routine checks if the URL is locally 
-    present. If it is, the replication routine returns OK to the controlling handler, 
-    which in turn passes the request on to the next handler in the chain.</span></p>
-  <p>If the resource is not locally present, the Home Server of the resource author 
-    (as extracted from the URL) is determined (<b>Fig. 1.1.3A, Step D2</b><span style='font-weight:normal'>). 
-    This is done by contacting all library servers in the authorÕs domain (as 
-    determined from the lookup table, see </span><b>Fig. 1.1.2B</b><span style='font-weight:normal'>). 
-    In </span><b>Step D2b</b><span style='font-weight:normal'> a query is sent 
-    to the remote server whether or not it is the Home Server of the author (in 
-    our current implementation, an additional cache is used to store already identified 
-    Home Servers (not shown in the figure)). In Step </span><b>D2c</b><span
-style='font-weight:normal'>, the remote server answers the query with True or 
-    False. If the Home Server was found, the routine continues, otherwise it contacts 
-    the next server (</span><b>Step D2a</b><span style='font-weight:normal'>). 
-    If no server could be found, a ÒFile not FoundÓ error message is issued. In 
-    our current implementation, in this step the Home Server is also written into 
-    a cache for faster access if resources by the same author are needed again 
-    (not shown in the figure). </span></p>
-  <br
-clear=ALL style='page-break-before:always'>
-  <p><span style='font-size:14.0pt'> <img width=432 height=581
-src="Session%20One_files/image009.jpg" v:shapes="_x0000_i1029"> </span></p>
-  <p><span style='font-size:14.0pt'><b>Fig. 1.1.3A</b></span><span
-style='font-size:14.0pt'> Ð Dynamic Resource Replication, subscription</span></p>
-  <br
-clear=ALL style='page-break-before:always'>
-  <p><span style='font-size:14.0pt'> <img width=432 height=523
-src="Session%20One_files/image011.jpg" v:shapes="_x0000_i1030"> </span></p>
-  <p><span style='font-size:14.0pt'><b>Fig. 1.1.3B</b></span><span
-style='font-size:14.0pt'> Ð Dynamic Resource Replication, modification</span></p>
-  <p>In <b>Step D3a</b><span style='font-weight:normal'>, the routine sends a 
-    subscribe command for the URL to the Home Server of the author. The Home Server 
-    first determines if the resource is present, and if the access privileges 
-    allow it to be copied to the requesting server (</span><b>Fig. 1.1.3A, Step 
-    D3b</b><span style='font-weight:normal'>). If this is true, the requesting 
-    server is added to the list of subscribed servers for that resource (</span><b>Step 
-    D3c</b><span style='font-weight:normal'>). The Home Server will reply with 
-    either OK or an error message, which is determined in </span><b>Step D4</b><span style='font-weight:normal'>. 
-    If the remote resource was not present, the error message ÒFile not FoundÓ 
-    will be passed on to the client, if the access was not allowed, the error 
-    message ÒAccess DeniedÓ is passed on. If the operation succeeded, the requesting 
-    server sends an HTTP request for the resource out of the /</span><span style='font-family:"Courier New"'>raw</span> 
-    server content resource area of the Home Server.</p>
-  <p>The Home Server will then check if the requesting server is part of the network, 
-    and if it is subscribed to the resource (<b>Step D5b</b><span
-style='font-weight:normal'>). If it is, it will send the resource via HTTP to 
-    the requesting server without any content handlers processing it (</span><b>Step 
-    D5c</b><span style='font-weight:normal'>). The requesting server will store 
-    the incoming data in a temporary data file (</span><b>Step D5a</b><span
-style='font-weight:normal'>) Ð this is the file that </span><b>Step D1a</b><span
-style='font-weight:normal'> checks for. If the transfer could not complete, and 
-    appropriate error message is sent to the client (</span><b>Step D6</b><span
-style='font-weight:normal'>). Otherwise, the transferred temporary file is renamed 
-    as the actual resource, and the replication routine returns OK to the controlling 
-    handler (</span><b>Step D7</b><span style='font-weight:normal'>). </span></p>
-  <p><b>Fig. 1.1.3B</b><span style='font-weight:normal'>&nbsp; depicts the process 
-    of modifying a resource. When an author publishes a new version of a resource, 
-    the Home Server will contact every server currently subscribed to the resource 
-    (</span><b>Fig. 1.1.3B, Step U1</b><span style='font-weight:normal'>), as 
-    determined from the list of subscribed servers for the resource generated 
-    in </span><b>Fig. 1.1. 3A, Step D3c</b><span style='font-weight:normal'>. 
-    The subscribing servers will receive and acknowledge the update message (</span><b>Step 
-    U1c</b><span
-style='font-weight:normal'>). The update mechanism finishes when the last subscribed 
-    server has been contacted (messages to unreachable servers are buffered).</span></p>
-  <p>Each subscribing server will check if the resource in question had been accessed 
-    recently, that is, within a configurable amount of time (<b>Step U2</b><span style='font-weight:normal'>). 
-    </span></p>
-  <p>If the resource had not been accessed recently, the local copy of the resource 
-    is deleted (<b>Step U3a</b><span style='font-weight:normal'>) and an unsubscribe 
-    command is sent to the Home Server (</span><b>Step U3b</b><span
-style='font-weight:normal'>). The Home Server will check if the server had indeed 
-    originally subscribed to the resource (</span><b>Step U3c</b><span
-style='font-weight:normal'>) and then delete the server from the list of subscribed 
-    servers for the resource (</span><b>Step U3d</b><span
-style='font-weight:normal'>).</span></p>
-  <p>If the resource had been accessed recently, the modified resource will be 
-    copied over using the same mechanism as in <b>Step D5a</b><span
-style='font-weight:normal'> through </span><b>D7</b><span style='font-weight:
-normal'> of </span><b>Fig. 1.1.3A</b><span style='font-weight:normal'> (</span><b>Fig. 
-    1.1.3B</b><span style='font-weight:normal'>, </span><b>Steps U4a </b><span
-style='font-weight:normal'>through</span><b> U6</b><span style='font-weight:
-normal'>).</span></p>
-  <p><span style='font-family:Arial'>Load Balancing</span></p>
-  <p><span style='font-family:"Courier New"'>lond</span> provides a function to 
-    query the serverÕs current <span style='font-family:"Courier New"'>loadavg</span><span
-style='font-size:14.0pt'>. </span>As a configuration parameter, one can determine 
-    the value of <span style='font-family:"Courier New"'>loadavg,</span> which 
-    is to be considered 100%, for example, 2.00. </p>
-  <p>Access servers can have a list of spare access servers, <span
-style='font-size:9.0pt;font-family:"Courier New"'>/home/httpd/lonTabs/spares.tab</span>, 
-    to offload sessions depending on own workload. This check happens is done 
-    by the login handler. It re-directs the login information and session to the 
-    least busy spare server if itself is overloaded. An additional round-robin 
-    IP scheme possible. See <b>Fig. 1.1.4</b><span style='font-weight:normal'> 
-    for an example of a load-balancing scheme.</span></p>
-  <p><span style='font-size:28.0pt;color:green'> <img width=241 height=139
-src="Session%20One_files/image013.jpg" v:shapes="_x0000_i1031"> </span></p>
-  <p><span
-style='font-size:14.0pt'><b>Fig. 1.1.4 Ð </b></span><span style='font-size:14.0pt'>Example 
-    of Load Balancing</span><span style='font-size:14.0pt'> <b><i><br
-clear=ALL style='page-break-before:always'>
-    </i></b></span></p>
-</div>
-<br
-clear=ALL style='page-break-before:always;'>
-<div class=Section2> </div>
-</body>
-</html>
+<html>
+
+<head>
+
+<meta name=Title
+
+content="Session One: Intro/Demo, lonc/d, Replication and Load Balancing (Gerd)">
+
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+
+<link rel=Edit-Time-Data href="Session%20One_files/editdata.mso">
+
+<title>Session One: Intro/Demo, lonc/d, Replication and Load Balancing (Gerd)</title>
+
+<style><!--
+
+.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: Intro/Demo, lonc/d, Replication and Load Balancing (Gerd)</h2>
+
+  <p> <img width=432 height=555
+
+src="Session%20One_files/image002.jpg" v:shapes="_x0000_i1025"> <span
+
+style='font-size:14.0pt'><b>Fig. 1.1.1</b></span><span style='font-size:14.0pt'> 
+
+    Ð Overview of Network</span></p>
+
+  <h3><a name="_Toc514840838"></a><a name="_Toc421867040">Overview</a></h3>
+
+  <p>Physically, the Network consists of relatively inexpensive upper-PC-class 
+
+    server machines which are linked through the commodity internet in a load-balancing, 
+
+    dynamically content-replicating and failover-secure way. <b>Fig. 1.1.1</b><span style='font-weight:normal'> 
+
+    shows an overview of this network.</span></p>
+
+  <p>All machines in the Network are connected with each other through two-way 
+
+    persistent TCP/IP connections. Clients (<b>B</b><span
+
+style='font-weight:normal'>, </span><b>F</b><span style='font-weight:normal'>, 
+
+    </span><b>G</b><span
+
+style='font-weight:normal'> and </span><b>H</b><span style='font-weight:normal'> 
+
+    in </span><b>Fig. 1.1.1</b><span style='font-weight:normal'>) connect to the 
+
+    servers via standard HTTP. There are two classes of servers, Library Servers 
+
+    (</span><b>A</b><span
+
+style='font-weight:normal'> and </span><b>E</b><span style='font-weight:normal'> 
+
+    in </span><b>Fig. 1.1.1</b><span style='font-weight:normal'>) and Access Servers 
+
+    (</span><b>C</b><span style='font-weight:normal'>, </span><b>D</b><span
+
+style='font-weight:normal'>, </span><b>I</b><span style='font-weight:normal'> 
+
+    and </span><b>J</b><span style='font-weight:normal'> in </span><b>Fig. 1.1.1</b><span
+
+style='font-weight:normal'>). Library Servers are used to store all personal records 
+
+    of a set of users, and are responsible for their initial authentication when 
+
+    a session is opened on any server in the Network. For Authors, Library Servers 
+
+    also hosts their construction area and the authoritative copy of the current 
+
+    and previous versions of every resource that was published by that author. 
+
+    Library servers can be used as backups to host sessions when all access servers 
+
+    in the Network are overloaded. Otherwise, for learners, access servers are 
+
+    used to host the sessions. Library servers need to be strong on I/O, while 
+
+    access servers can generally be cheaper hardware. The network is designed 
+
+    so that the number of concurrent sessions can be increased over a wide range 
+
+    by simply adding additional Access Servers before having to add additional 
+
+    Library Servers. Preliminary tests showed that a Library Server could handle 
+
+    up to 10 Access Servers fully parallel.</span></p>
+
+  <p>The Network is divided into so-called domains, which are logical boundaries 
+
+    between participating institutions. These domains can be used to limit the 
+
+    flow of personal user information across the network, set access privileges 
+
+    and enforce royalty schemes.</p>
+
+  <h3><a name="_Toc514840839"></a><a name="_Toc421867041">Example of Transactions</a></h3>
+
+  <p><b>Fig. 1.1.1</b><span style='font-weight:normal'> also depicts examples 
+
+    for several kinds of transactions conducted across the Network. </span></p>
+
+  <p>An instructor at client <b>B</b><span style='font-weight:
+
+normal'> modifies and publishes a resource on her Home Server </span><b>A</b><span
+
+style='font-weight:normal'>. Server </span><b>A</b><span style='font-weight:
+
+normal'> has a record of all server machines currently subscribed to this resource, 
+
+    and replicates it to servers </span><b>D</b><span style='font-weight:
+
+normal'> and </span><b>I</b><span style='font-weight:normal'>. However, server 
+
+    </span><b>D</b><span
+
+style='font-weight:normal'> is currently offline, so the update notification gets 
+
+    buffered on </span><b>A</b><span style='font-weight:normal'> until </span><b>D</b><span
+
+style='font-weight:normal'> comes online again.</span><b> </b><span
+
+style='font-weight:normal'>Servers </span><b>C</b><span style='font-weight:
+
+normal'> and </span><b>J</b><span style='font-weight:normal'> are currently not 
+
+    subscribed to this resource. </span></p>
+
+  <p>Learners <b>F</b><span style='font-weight:normal'> and </span><b>G</b><span
+
+style='font-weight:normal'> have open sessions on server </span><b>I</b><span
+
+style='font-weight:normal'>, and the new resource is immediately available to 
+
+    them. </span></p>
+
+  <p>Learner <b>H</b><span style='font-weight:normal'> tries to connect to server 
+
+    </span><b>I</b><span style='font-weight:normal'> for a new session, however, 
+
+    the machine is not reachable, so he connects to another Access Server </span><b>J</b><span style='font-weight:normal'> 
+
+    instead. This server currently does not have all necessary resources locally 
+
+    present to host learner </span><b>H</b><span style='font-weight:normal'>, 
+
+    but subscribes to them and replicates them as they are accessed by </span><b>H</b><span
+
+style='font-weight:normal'>. </span></p>
+
+  <p>Learner <b>H</b><span style='font-weight:normal'> solves a problem on server 
+
+    </span><b>J</b><span style='font-weight:normal'>. Library Server </span><b>E</b><span style='font-weight:normal'> 
+
+    is </span><b>H</b><span
+
+style='font-weight:normal'>Õs Home Server, so this information gets forwarded 
+
+    to </span><b>E</b><span style='font-weight:normal'>, where the records of 
+
+    </span><b>H</b><span
+
+style='font-weight:normal'> are updated. </span></p>
+
+  <h3><a name="_Toc514840840"></a><a name="_Toc421867042">lonc/lond/lonnet</a></h3>
+
+  <p><b>Fig. 1.1.2</b><span style='font-weight:normal'> elaborates on the details 
+
+    of this network infrastructure. </span></p>
+
+  <p><b>Fig. 1.1.2A</b><span style='font-weight:normal'> depicts three servers 
+
+    (</span><b>A</b><span style='font-weight:normal'>, </span><b>B</b><span
+
+style='font-weight:normal'> and </span><b>C</b><span style='font-weight:normal'>, 
+
+    </span><b>Fig. 1.1.2A</b><span style='font-weight:normal'>) and a client who 
+
+    has a session on server </span><b>C.</b></p>
+
+  <p>As <b>C</b><span style='font-weight:normal'> accesses different resources 
+
+    in the system, different handlers, which are incorporated as modules into 
+
+    the child processes of the web server software, process these requests.</span></p>
+
+  <p>Our current implementation uses <span style='font-family:
+
+"Courier New"'>mod_perl</span> inside of the Apache web server software. As an 
+
+    example, server <b>C</b><span style='font-weight:normal'> currently has four 
+
+    active web server software child processes. The chain of handlers dealing 
+
+    with a certain resource is determined by both the server content resource 
+
+    area (see below) and the MIME type, which in turn is determined by the URL 
+
+    extension. For most URL structures, both an authentication handler and a content 
+
+    handler are registered.</span></p>
+
+  <p>Handlers use a common library <span style='font-family:"Courier New"'>lonnet</span> 
+
+    to interact with both locally present temporary session data and data across 
+
+    the server network. For example, <span style='font-family:"Courier New"'>lonnet</span> 
+
+    provides routines for finding the home server of a user, finding the server 
+
+    with the lowest loadavg, sending simple command-reply sequences, and sending 
+
+    critical messages such as a homework completion, etc. For a non-critical message, 
+
+    the routines reply with a simple Òconnection lostÓ if the message could not 
+
+    be delivered. For critical messages,<i> </i><span style='font-family:
+
+"Courier New";font-style:normal'>lonnet</span><i> </i><span style='font-style:
+
+normal'>tries to re-establish</span><i> </i><span style='font-style:normal'>connections, 
+
+    re-send the command, etc. If no valid reply could be received, it answers 
+
+    Òconnection deferredÓ and stores the message in</span><i> </i><span
+
+style='font-style:normal'>buffer space to be sent</span><i> </i><span
+
+style='font-style:normal'>at a later point in time. Also, failed critical messages 
+
+    are logged.</span></p>
+
+  <p>The interface between <span style='font-family:"Courier New"'>lonnet</span> 
+
+    and the Network is established by a multiplexed UNIX domain socket, denoted 
+
+    DS in <b>Fig. 1.1.2A</b><span style='font-weight:normal'>. The rationale behind 
+
+    this rather involved architecture is that httpd processes (Apache children) 
+
+    dynamically come and go on the timescale of minutes, based on workload and 
+
+    number of processed requests. Over the lifetime of an httpd child, however, 
+
+    it has to establish several hundred connections to several different servers 
+
+    in the Network.</span></p>
+
+  <p>On the other hand, establishing a TCP/IP connection is resource consuming 
+
+    for both ends of the line, and to optimize this connectivity between different 
+
+    servers, connections in the Network are designed to be persistent on the timescale 
+
+    of months, until either end is rebooted. This mechanism will be elaborated 
+
+    on below.</p>
+
+  <p>Establishing a connection to a UNIX domain socket is far less resource consuming 
+
+    than the establishing of a TCP/IP connection. <span
+
+style='font-family:"Courier New"'>lonc</span> is a proxy daemon that forks off 
+
+    a child for every server in the Network. . Which servers are members of the 
+
+    Network is determined by a lookup table, which <b>Fig. 1.1.2B</b><span
+
+style='font-weight:normal'> is an example of. In order, the entries denote an 
+
+    internal name for the server, the domain of the server, the type of the server, 
+
+    the host name and the IP address.</span></p>
+
+  <p>The <span style='font-family:"Courier New"'>lonc</span> parent process maintains 
+
+    the population and listens for signals to restart or shutdown, as well as 
+
+    <i>USR1</i><span style='font-style:normal'>. Every child establishes a multiplexed 
+
+    UNIX domain socket for its server and opens a TCP/IP connection to the </span><span style='font-family:"Courier New"'>lond</span> 
+
+    daemon (discussed below) on the remote machine, which it keeps alive.<i> </i><span
+
+style='font-style:normal'>If the connection is interrupted, the child dies, whereupon 
+
+    the parent makes several attempts to fork another child for that server. </span></p>
+
+  <p>When starting a new child (a new connection), first an init-sequence is carried 
+
+    out, which includes receiving the information from the remote <span style='font-family:"Courier New"'>lond</span> 
+
+    which is needed to establish the 128-bit encryption key Ð the key is different 
+
+    for every connection. Next, any buffered (delayed) messages for the server 
+
+    are sent.</p>
+
+  <p>In normal operation, the child listens to the UNIX socket, forwards requests 
+
+    to the TCP connection, gets the reply from <span
+
+style='font-family:"Courier New"'>lond</span>, and sends it back to the UNIX socket. 
+
+    Also, <span style='font-family:"Courier New"'>lonc</span> takes care to the 
+
+    encryption and decryption of messages.</p>
+
+  <p><span style='font-family:"Courier New"'>lonc</span> was build by putting 
+
+    a non-forking multiplexed UNIX domain socket server into a framework that 
+
+    forks a TCP/IP client for every remote <span style='font-family:
+
+"Courier New"'>lond</span>.</p>
+
+  <p><span style='font-family:"Courier New"'>lond</span> is the remote end of 
+
+    the TCP/IP connection and acts as a remote command processor. It receives 
+
+    commands, executes them, and sends replies. In normal operation,<i> </i><span
+
+style='font-style:normal'>a </span><span style='font-family:"Courier New"'>lonc</span> 
+
+    child is constantly connected to a dedicated <span style='font-family:"Courier New"'>lond</span> 
+
+    child on the remote server, and the same is true vice versa (two persistent 
+
+    connections per server combination). </p>
+
+  <p><span style='font-family:"Courier New"'>lond</span><i>&nbsp; </i><span style='font-style:normal'>listens 
+
+    to a TCP/IP port (denoted P in <b>Fig. 1.1.2A</b></span>) and forks off enough 
+
+    child processes to have one for each other server in the network plus two 
+
+    spare children. The parent process maintains the population and listens for 
+
+    signals to restart or shutdown. Client servers are authenticated by IP<i>.</i></p>
+
+  <br
+
+clear=ALL style='page-break-before:always'>
+
+  <p><span style='font-size:14.0pt'> <img width=432 height=492
+
+src="Session%20One_files/image004.jpg" v:shapes="_x0000_i1026"> </span></p>
+
+  <p><span style='font-size:14.0pt'><b>Fig. 1.1.2A</b></span><span
+
+style='font-size:14.0pt'> Ð Overview of Network Communication</span></p>
+
+  <p>When a new client server comes online<i>,</i><span
+
+style='font-style:normal'> </span><span style='font-family:"Courier New"'>lond</span> 
+
+    sends a signal<i> USR1 </i><span style='font-style:normal'>to </span><span
+
+style='font-family:"Courier New"'>lonc</span>, whereupon <span
+
+style='font-family:"Courier New"'>lonc</span> tries again to reestablish all lost 
+
+    connections, even if it had given up on them before Ð a new client connecting 
+
+    could mean that that machine came online again after an interruption.</p>
+
+  <p>The gray boxes in <b>Fig. 1.1.2A</b><span style='font-weight:
+
+normal'> denote the entities involved in an example transaction of the Network. 
+
+    The Client is logged into server </span><b>C</b><span style='font-weight:normal'>, 
+
+    while server </span><b>B</b><span style='font-weight:normal'> is her Home 
+
+    Server. Server </span><b>C</b><span style='font-weight:normal'> can be an 
+
+    Access Server or a Library Server, while server </span><b>B</b><span
+
+style='font-weight:normal'> is a Library Server. She submits a solution to a homework 
+
+    problem, which is processed by the appropriate handler for the MIME type ÒproblemÓ. 
+
+    Through </span><span style='font-family:"Courier New"'>lonnet</span>, the 
+
+    handler writes information about this transaction to the local session data. 
+
+    To make a permanent log entry, <span style='font-family:"Courier New"'>lonnet 
+
+    </span>establishes a connection to the UNIX domain socket for server <b>B</b><span
+
+style='font-weight:normal'>. </span><span style='font-family:"Courier New"'>lonc</span> 
+
+    receives this command, encrypts it, and sends it through the persistent TCP/IP 
+
+    connection to the TCP/IP port of the remote <span style='font-family:"Courier New"'>lond</span>. 
+
+    <span style='font-family:"Courier New"'>lond</span> decrypts the command, 
+
+    executes it by writing to the permanent user data files of the client, and 
+
+    sends back a reply regarding the success of the operation. If the operation 
+
+    was unsuccessful, or the connection would have broken down, <span style='font-family:
+
+"Courier New"'>lonc</span> would write the command into a FIFO buffer stack to 
+
+    be sent again later. <span style='font-family:"Courier New"'>lonc</span> now 
+
+    sends a reply regarding the overall success of the operation to <span
+
+style='font-family:"Courier New"'>lonnet</span> via the UNIX domain port, which 
+
+    is eventually received back by the handler.</p>
+
+  <h3><a name="_Toc514840841"></a><a name="_Toc421867043">Scalability and Performance 
+
+    Analysis</a></h3>
+
+  <p>The scalability was tested in a test bed of servers between different physical 
+
+    network segments, <b>Fig. 1.1.2B</b><span style='font-weight:
+
+normal'> shows the network configuration of this test.</span></p>
+
+  <table border=1 cellspacing=0 cellpadding=0>
+
+    <tr> 
+
+      <td width=443 valign=top class="Normal"> <p><span style='font-family:"Courier New"'>msul1:msu:library:zaphod.lite.msu.edu:35.8.63.51</span></p>
+
+        <p><span style='font-family:"Courier New"'>msua1:msu:access:agrajag.lite.msu.edu:35.8.63.68</span></p>
+
+        <p><span style='font-family:"Courier New"'>msul2:msu:library:frootmig.lite.msu.edu:35.8.63.69</span></p>
+
+        <p><span style='font-family:"Courier New"'>msua2:msu:access:bistromath.lite.msu.edu:35.8.63.67</span></p>
+
+        <p><span style='font-family:"Courier New"'>hubl14:hub:library:hubs128-pc-14.cl.msu.edu:35.8.116.34</span></p>
+
+        <p><span style='font-family:"Courier New"'>hubl15:hub:library:hubs128-pc-15.cl.msu.edu:35.8.116.35</span></p>
+
+        <p><span style='font-family:"Courier New"'>hubl16:hub:library:hubs128-pc-16.cl.msu.edu:35.8.116.36</span></p>
+
+        <p><span style='font-family:"Courier New"'>huba20:hub:access:hubs128-pc-20.cl.msu.edu:35.8.116.40</span></p>
+
+        <p><span style='font-family:"Courier New"'>huba21:hub:access:hubs128-pc-21.cl.msu.edu:35.8.116.41</span></p>
+
+        <p><span style='font-family:"Courier New"'>huba22:hub:access:hubs128-pc-22.cl.msu.edu:35.8.116.42</span></p>
+
+        <p><span style='font-family:"Courier New"'>huba23:hub:access:hubs128-pc-23.cl.msu.edu:35.8.116.43</span></p>
+
+        <p><span style='font-family:"Courier New"'>hubl25:other:library:hubs128-pc-25.cl.msu.edu:35.8.116.45</span></p>
+
+        <p><span style='font-family:"Courier New"'>huba27:other:access:hubs128-pc-27.cl.msu.edu:35.8.116.47</span></p></td>
+
+    </tr>
+
+  </table>
+
+  <p><span style='font-size:14.0pt'><b>Fig. 1.1.2B</b></span><span
+
+style='font-size:14.0pt'> Ð Example of Hosts Lookup Table </span><span
+
+style='font-size:9.0pt;font-family:"Courier New"'>/home/httpd/lonTabs/hosts.tab</span></p>
+
+  <p>In the first test,<span style='layout-grid-mode:line'> the simple </span><span style='font-family:"Courier New";layout-grid-mode:line'>ping</span><span
+
+style='layout-grid-mode:line'> command was used. The </span><span
+
+style='font-family:"Courier New";layout-grid-mode:line'>ping</span><span
+
+style='layout-grid-mode:line'> command is used to test connections and yields 
+
+    the server short name as reply.&nbsp; In this scenario, </span><span style='font-family:"Courier New";layout-grid-mode:
+
+line'>lonc</span><span style='layout-grid-mode:line'> was expected to be the speed-determining 
+
+    step, since </span><span style='font-family:"Courier New";
+
+layout-grid-mode:line'>lond</span><span style='layout-grid-mode:line'> at the 
+
+    remote end does not need any disk access to reply.&nbsp; The graph <b>Fig. 
+
+    1.1.2C</b></span><span style='layout-grid-mode:
+
+line'> shows number of seconds till completion versus number of processes issuing 
+
+    10,000 ping commands each against one Library Server (450 MHz Pentium II in 
+
+    this test, single IDE HD). For the solid dots, the processes were concurrently 
+
+    started on <i>the same</i></span><span style='layout-grid-mode:
+
+line'> Access Server and the time was measured till the processes finished Ð all 
+
+    processes finished at the same time. One Access Server (233 MHz Pentium II 
+
+    in the test bed) can process about 150 pings per second, and as expected, 
+
+    the total time grows linearly with the number of pings.</span></p>
+
+  <p><span style='layout-grid-mode:line'>The gray dots were taken with up to seven 
+
+    processes concurrently running on <i>different</i></span><span
+
+style='layout-grid-mode:line'> machines and pinging the same server Ð the processes 
+
+    ran fully concurrent, and each process finished as if the other ones were 
+
+    not present (about 1000 pings per second). Execution was fully parallel.</span></p>
+
+  <p>In a second test, <span style='font-family:"Courier New"'>lond</span> was 
+
+    the speed-determining step Ð 10,000 <span style='font-family:"Courier New"'>put</span> 
+
+    commands each were issued first from up to seven concurrent processes on the 
+
+    same machine, and then from up to seven processes on different machines. The 
+
+    <span
+
+style='font-family:"Courier New"'>put</span> command requires data to be written 
+
+    to the permanent record of the user on the remote server.</p>
+
+  <p>In particular, one <span style='font-family:"Courier New"'>&quot;put&quot;</span> 
+
+    request meant that the process on the Access Server would connect to the UNIX 
+
+    domain socket dedicated to the library server, <span style='font-family:"Courier New"'>lonc</span> 
+
+    would take the data from there, shuffle it through the persistent TCP connection, 
+
+    <span style='font-family:"Courier New"'>lond</span> on the remote library 
+
+    server would take the data, write to disk (both to a dbm-file and to a flat-text 
+
+    transaction history file), answer &quot;ok&quot;, <span
+
+style='font-family:"Courier New"'>lonc</span> would take that reply and send it 
+
+    to the domain socket, the process would read it from there and close the domain-socket 
+
+    connection.</p>
+
+  <p><span style='font-size:14.0pt'> <img width=220 height=190
+
+src="Session%20One_files/image005.jpg" v:shapes="_x0000_i1027"> </span></p>
+
+  <p><span style='font-size:14.0pt'><b>Fig. 1.1.2C</b></span><span
+
+style='font-size:14.0pt'> Ð Benchmark on Parallelism of Server-Server Communication 
+
+    (no disk access)</span></p>
+
+  <p>The graph <b>Fig. 1.1.2D</b><span style='font-weight:normal'> shows the results. 
+
+    Series 1 (solid black diamond) is the result of concurrent processes on the 
+
+    same server Ð all of these are handled by the same server-dedicated </span><span style='font-family:"Courier New"'>lond-</span>child, 
+
+    which lets the total amount of time grow linearly.</p>
+
+  <p><span style='font-size:14.0pt'> <img width=432 height=311
+
+src="Session%20One_files/image007.jpg" v:shapes="_x0000_i1028"> </span></p>
+
+  <p><span style='font-size:14.0pt'><b>Fig. 2D</b></span><span
+
+style='font-size:14.0pt'> Ð Benchmark on Parallelism of Server-Server Communication 
+
+    (with disk access as in Fig. 2A)</span></p>
+
+  <p>Series 2 through 8 were obtained from running the processes on different 
+
+    Access Servers against one Library Server, each series goes with one server. 
+
+    In this experiment, the processes did not finish at the same time, which most 
+
+    likely is due to disk-caching on the Library Server Ð <span
+
+style='font-family:"Courier New"'>lond</span>-children whose datafile was (partly) 
+
+    in disk cache finished earlier. With seven processes from seven different 
+
+    servers, the operation took 255 seconds till the last process was finished 
+
+    for 70,000 <span style='font-family:"Courier New"'>put</span> commands (270 
+
+    per second) Ð versus 530 seconds if the processes ran on the same server (130 
+
+    per second).</p>
+
+  <h3><a name="_Toc514840842"></a><a name="_Toc421867044">Dynamic Resource Replication</a></h3>
+
+  <p>Since resources are assembled into higher order resources simply by reference, 
+
+    in principle it would be sufficient to retrieve them from the respective Home 
+
+    Servers of the authors. However, there are several problems with this simple 
+
+    approach: since the resource assembly mechanism is designed to facilitate 
+
+    content assembly from a large number of widely distributed sources, individual 
+
+    sessions would depend on a large number of machines and network connections 
+
+    to be available, thus be rather fragile. Also, frequently accessed resources 
+
+    could potentially drive individual machines in the network into overload situations.</p>
+
+  <p>Finally, since most resources depend on content handlers on the Access Servers 
+
+    to be served to a client within the session context, the raw source would 
+
+    first have to be transferred across the Network from the respective Library 
+
+    Server to the Access Server, processed there, and then transferred on to the 
+
+    client.</p>
+
+  <p>To enable resource assembly in a reliable and scalable way, a dynamic resource 
+
+    replication scheme was developed. <b>Fig. 1.1.3</b><span
+
+style='font-weight:normal'> shows the details of this mechanism.</span></p>
+
+  <p>Anytime a resource out of the resource space is requested, a handler routine 
+
+    is called which in turn calls the replication routine (<b>Fig. 1.1.3A</b><span style='font-weight:normal'>). 
+
+    As a first step, this routines determines whether or not the resource is currently 
+
+    in replication transfer (</span><b>Fig. 1.1.3A,</b><span style='font-weight:normal'> 
+
+    </span><b>Step D1a</b><span
+
+style='font-weight:normal'>). During replication transfer, the incoming data is 
+
+    stored in a temporary file, and </span><b>Step D1a</b><span style='font-weight:
+
+normal'> checks for the presence of that file. If transfer of a resource is actively 
+
+    going on, the controlling handler receives an error message, waits for a few 
+
+    seconds, and then calls the replication routine again. If the resource is 
+
+    still in transfer, the client will receive the message ÒService currently 
+
+    not availableÓ.</span></p>
+
+  <p>In the next step (<b>Fig. 1.1.3A, Step D1b</b><span
+
+style='font-weight:normal'>), the replication routine checks if the URL is locally 
+
+    present. If it is, the replication routine returns OK to the controlling handler, 
+
+    which in turn passes the request on to the next handler in the chain.</span></p>
+
+  <p>If the resource is not locally present, the Home Server of the resource author 
+
+    (as extracted from the URL) is determined (<b>Fig. 1.1.3A, Step D2</b><span style='font-weight:normal'>). 
+
+    This is done by contacting all library servers in the authorÕs domain (as 
+
+    determined from the lookup table, see </span><b>Fig. 1.1.2B</b><span style='font-weight:normal'>). 
+
+    In </span><b>Step D2b</b><span style='font-weight:normal'> a query is sent 
+
+    to the remote server whether or not it is the Home Server of the author (in 
+
+    our current implementation, an additional cache is used to store already identified 
+
+    Home Servers (not shown in the figure)). In Step </span><b>D2c</b><span
+
+style='font-weight:normal'>, the remote server answers the query with True or 
+
+    False. If the Home Server was found, the routine continues, otherwise it contacts 
+
+    the next server (</span><b>Step D2a</b><span style='font-weight:normal'>). 
+
+    If no server could be found, a ÒFile not FoundÓ error message is issued. In 
+
+    our current implementation, in this step the Home Server is also written into 
+
+    a cache for faster access if resources by the same author are needed again 
+
+    (not shown in the figure). </span></p>
+
+  <br
+
+clear=ALL style='page-break-before:always'>
+
+  <p><span style='font-size:14.0pt'> <img width=432 height=581
+
+src="Session%20One_files/image009.jpg" v:shapes="_x0000_i1029"> </span></p>
+
+  <p><span style='font-size:14.0pt'><b>Fig. 1.1.3A</b></span><span
+
+style='font-size:14.0pt'> Ð Dynamic Resource Replication, subscription</span></p>
+
+  <br
+
+clear=ALL style='page-break-before:always'>
+
+  <p><span style='font-size:14.0pt'> <img width=432 height=523
+
+src="Session%20One_files/image011.jpg" v:shapes="_x0000_i1030"> </span></p>
+
+  <p><span style='font-size:14.0pt'><b>Fig. 1.1.3B</b></span><span
+
+style='font-size:14.0pt'> Ð Dynamic Resource Replication, modification</span></p>
+
+  <p>In <b>Step D3a</b><span style='font-weight:normal'>, the routine sends a 
+
+    subscribe command for the URL to the Home Server of the author. The Home Server 
+
+    first determines if the resource is present, and if the access privileges 
+
+    allow it to be copied to the requesting server (</span><b>Fig. 1.1.3A, Step 
+
+    D3b</b><span style='font-weight:normal'>). If this is true, the requesting 
+
+    server is added to the list of subscribed servers for that resource (</span><b>Step 
+
+    D3c</b><span style='font-weight:normal'>). The Home Server will reply with 
+
+    either OK or an error message, which is determined in </span><b>Step D4</b><span style='font-weight:normal'>. 
+
+    If the remote resource was not present, the error message ÒFile not FoundÓ 
+
+    will be passed on to the client, if the access was not allowed, the error 
+
+    message ÒAccess DeniedÓ is passed on. If the operation succeeded, the requesting 
+
+    server sends an HTTP request for the resource out of the /</span><span style='font-family:"Courier New"'>raw</span> 
+
+    server content resource area of the Home Server.</p>
+
+  <p>The Home Server will then check if the requesting server is part of the network, 
+
+    and if it is subscribed to the resource (<b>Step D5b</b><span
+
+style='font-weight:normal'>). If it is, it will send the resource via HTTP to 
+
+    the requesting server without any content handlers processing it (</span><b>Step 
+
+    D5c</b><span style='font-weight:normal'>). The requesting server will store 
+
+    the incoming data in a temporary data file (</span><b>Step D5a</b><span
+
+style='font-weight:normal'>) Ð this is the file that </span><b>Step D1a</b><span
+
+style='font-weight:normal'> checks for. If the transfer could not complete, and 
+
+    appropriate error message is sent to the client (</span><b>Step D6</b><span
+
+style='font-weight:normal'>). Otherwise, the transferred temporary file is renamed 
+
+    as the actual resource, and the replication routine returns OK to the controlling 
+
+    handler (</span><b>Step D7</b><span style='font-weight:normal'>). </span></p>
+
+  <p><b>Fig. 1.1.3B</b><span style='font-weight:normal'>&nbsp; depicts the process 
+
+    of modifying a resource. When an author publishes a new version of a resource, 
+
+    the Home Server will contact every server currently subscribed to the resource 
+
+    (</span><b>Fig. 1.1.3B, Step U1</b><span style='font-weight:normal'>), as 
+
+    determined from the list of subscribed servers for the resource generated 
+
+    in </span><b>Fig. 1.1. 3A, Step D3c</b><span style='font-weight:normal'>. 
+
+    The subscribing servers will receive and acknowledge the update message (</span><b>Step 
+
+    U1c</b><span
+
+style='font-weight:normal'>). The update mechanism finishes when the last subscribed 
+
+    server has been contacted (messages to unreachable servers are buffered).</span></p>
+
+  <p>Each subscribing server will check if the resource in question had been accessed 
+
+    recently, that is, within a configurable amount of time (<b>Step U2</b><span style='font-weight:normal'>). 
+
+    </span></p>
+
+  <p>If the resource had not been accessed recently, the local copy of the resource 
+
+    is deleted (<b>Step U3a</b><span style='font-weight:normal'>) and an unsubscribe 
+
+    command is sent to the Home Server (</span><b>Step U3b</b><span
+
+style='font-weight:normal'>). The Home Server will check if the server had indeed 
+
+    originally subscribed to the resource (</span><b>Step U3c</b><span
+
+style='font-weight:normal'>) and then delete the server from the list of subscribed 
+
+    servers for the resource (</span><b>Step U3d</b><span
+
+style='font-weight:normal'>).</span></p>
+
+  <p>If the resource had been accessed recently, the modified resource will be 
+
+    copied over using the same mechanism as in <b>Step D5a</b><span
+
+style='font-weight:normal'> through </span><b>D7</b><span style='font-weight:
+
+normal'> of </span><b>Fig. 1.1.3A</b><span style='font-weight:normal'> (</span><b>Fig. 
+
+    1.1.3B</b><span style='font-weight:normal'>, </span><b>Steps U4a </b><span
+
+style='font-weight:normal'>through</span><b> U6</b><span style='font-weight:
+
+normal'>).</span></p>
+
+  <p><span style='font-family:Arial'>Load Balancing</span></p>
+
+  <p><span style='font-family:"Courier New"'>lond</span> provides a function to 
+
+    query the serverÕs current <span style='font-family:"Courier New"'>loadavg</span><span
+
+style='font-size:14.0pt'>. </span>As a configuration parameter, one can determine 
+
+    the value of <span style='font-family:"Courier New"'>loadavg,</span> which 
+
+    is to be considered 100%, for example, 2.00. </p>
+
+  <p>Access servers can have a list of spare access servers, <span
+
+style='font-size:9.0pt;font-family:"Courier New"'>/home/httpd/lonTabs/spares.tab</span>, 
+
+    to offload sessions depending on own workload. This check happens is done 
+
+    by the login handler. It re-directs the login information and session to the 
+
+    least busy spare server if itself is overloaded. An additional round-robin 
+
+    IP scheme possible. See <b>Fig. 1.1.4</b><span style='font-weight:normal'> 
+
+    for an example of a load-balancing scheme.</span></p>
+
+  <p><span style='font-size:28.0pt;color:green'> <img width=241 height=139
+
+src="Session%20One_files/image013.jpg" v:shapes="_x0000_i1031"> </span></p>
+
+  <p><span
+
+style='font-size:14.0pt'><b>Fig. 1.1.4 Ð </b></span><span style='font-size:14.0pt'>Example 
+
+    of Load Balancing</span><span style='font-size:14.0pt'> <b><i><br
+
+clear=ALL style='page-break-before:always'>
+
+    </i></b></span></p>
+
+</div>
+
+<br
+
+clear=ALL style='page-break-before:always;'>
+
+<div class=Section2> </div>
+
+</body>
+
+</html>
+
Index: doc/gutshtml/SessionThre1.html
diff -u doc/gutshtml/SessionThre1.html:1.1 doc/gutshtml/SessionThre1.html:1.2
--- doc/gutshtml/SessionThre1.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionThre1.html	Tue Jul 22 10:47:00 2003
@@ -1 +1,1213 @@
-<html><head><meta name=Titlecontent="Session Three: Publication, Content Maps, Course Maps (Gerd)"><meta http-equiv=Content-Type content="text/html; charset=macintosh"><title>Session Three: Publication, Content Maps, Course Maps (Gerd)</title><style><!--.Section1	{page:Section1;}.Section2	{page:Section2;}--></style></head><body bgcolor=#FFFFFF class="Normal" lang=EN-US><div class=Section1>   <h2>Session Three: Publication, Content Maps, Course Maps (Gerd)</h2>  <h3><a name="_Toc514840855"></a><a name="_Toc421867109">Publication of a Resource</a></h3>  <p>Authors can only write-access the<i> </i><spanstyle='font-family:"Courier New";font-style:normal'>/~</span><spanstyle='font-family:"Courier New"'><i>authorname</i></span><spanstyle='font-family:"Courier New"'>/</span> space. They can copy resources into     the resource area through the publication step, and move them back through     a recover step. Authors do not have direct write-access to their resource     space. </p>  <div class=Section9>    <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>      <p style='border:none;padding:0in'><spanstyle='font-size:14.0pt'><b>Construction space</b></span><spanstyle='font-size:14.0pt'> </span><span style='font-size:14.0pt;font-family:Wingdings'>ˆ</span><span style='font-size:14.0pt'> Publication Step </span><spanstyle='font-size:14.0pt;font-family:Wingdings'>ˆ</span><span style='font-size:14.0pt'> <b>Resource space</b></span></p>      <p style='border:none;padding:0in'><span style='font-size:14.0pt'> </span><spanstyle='font-size:14.0pt;font-family:Wingdings'>§</span><span style='font-size:14.0pt'> Retrieve </span><span style='font-size:14.0pt;font-family:Wingdings'>§</span>       </p>    </div>    <p>During the publication step, several events will be triggered. Metadata       is gathered, where a wizard manages default entries on a hierarchical per-directory       base: The wizard imports the metadata (including access privileges and royalty       information) from the most recent published resource in the current directory,       and if that is not available, from the next directory above, etc. The Network       keeps all previous versions of a resource and makes them available by an       explicit version number, which is inserted between the file name and extension,       for example <span style='font-family:"Courier New"'>foo.2.html</span>, while       the most recent version does not carry a version number (<spanstyle='font-family:"Courier New"'>foo.html</span>). Servers subscribing to a changed       resource are notified that a new version is available.</p>    <h3><a name="_Toc514840857"></a><a name="_Toc421867110">Content Re-usage and       Granularity</a></h3>    <p>Any faculty participating in the Network can publish their own learning       resources into the common pool. To that end, the Network provides a Òconstruction       spaceÓ which is only accessible to the author, and a publication process,       which transfers the material to the shared pool Ð during the publication       process, metadata about the resource is gathered, and system-wide update       notification and versioning mechanisms are triggered..</p>    <p>Learning resources could be simple paragraphs of text, movies, applets,       individualizing homework problems, etc. In addition to providing a distributed       digital library with mechanisms to store and catalog these resources, the       Network enables faculty to combine and sequence these resources at several       levels: An instructor from Community College A could combine a text paragraph       from University B with a movie from College C and an online homework problem       from Publisher D, to form one page. Another instructor from High School       E can take that page from Community College A and combine it with other       pages into a module, unit or chapter. Those in turn can be combined into       whole coursepacks. Faculty can design their own curricula from existing       and newly created resources instead of having to buy into a complete off-the-shelf       product.</p>    <p><b>Fig. 2.3.1</b><span style='font-weight:normal'> shows a general overview       of the resource assembly mechanism and the different levels of content granularity       supported by the current implementation of this principle. The topmost puzzle       piece represents a resource at the fragment level Ð one GIF, one movie,       one paragraph of text, one problem, or one regular web page. Attached to       the resource is metadata gathered at the publication time of the resource.</span></p>    <p>Using the resource assembly tool described below, these fragments and pages       can be assembled into a page. A page is a resource of the grain size which       would be rendered as one page on the web and/or on the printer.</p>    <p>Using the same tool, fragments (which would then be rendered as standalone       pages), pages and sequences can be assembled into sequences. Sequences are       resources which are rendered a sequence of pages, not necessarily linear.       Examples are one lesson, one chapter, or one learning cycle</p>    <p>On the third granularity level, fragments (rendered as standalone pages),       pages, and sequences can be assembled into courses. Courses are a sequence       which represents the entirety of the resources belonging to a learning unit       into which learners can be enrolled. Examples are a University one-semester       course, a</p>    <p>workshop, or a High School class.</p>    <p align=center style='text-align:center'><img border=0width=291 height=436 id="_x0000_i1029" src="handout_files/image005.png"></p>    <p><span style='font-size:14.0pt'><b>Fig. 2.1.1</b></span><spanstyle='font-size:14.0pt'> Ð Resource Assembly</span></p>    <h3><a name="_Toc514840858"></a><a name="_Toc421867111">Maps</a></h3>    <p>To increase the utility of the materials, the number of hard-coded hyperlinks       between the resources should be minimized. The actual combining and sequencing       is part of the system functionality and driven by external &quot;roadmaps&quot;,       which are constructed by the instructors. With this mechanism, one and the       same resource can be part of different courses in different contexts. The       soft-linking makes it possible to import only the desired set of resources       without effectively importing additional parts another instructors resources       through hard-linked menus or &quot;next page&quot; buttons that might resided       on those resources.</p>    <h3><a name="_Toc514840859"></a><a name="_Toc421867112">Curriculum Adaptivity</a></h3>    <p>Maps allow for conditional choices and branching points. The actual path       through and presentation of the learning resources is determined by instructor-specified       combinations of learner choices and system-generated adaptations (for example,       if the learner does not pass a test, additional resources may be included).       Each learner can have an individualized curriculum according to preferences,       capabilities and skills.</p>    <p>These maps can be generated at different levels of granularity with a graphical       tool, or in an automated way through custom scripts.</p>    <h3><a name="_Toc514840860"></a><a name="_Toc421867113">Resource Assembly       Tool</a></h3>    <p>The Network provides the Resource Assembly Tool as one means to generate       maps. The Resource Assembly Tool provides a graphical user interface inside       of a standard web browser. The current implementation is written in JavaScript.     </p>    <p><b>Fig. 2.3.2</b><span style='font-weight:normal'> shows screenshots of       the current implementation. The interface usually consists of two browser       windows, one resizable one with a frameset that contains the menu and the       map under construction, and a multipurpose non-resizable window that displays       information and input forms.</span></p>    <p>When a new map is started, it only has a start and a finish resources.       The author can then enlarge the map area and insert resources into it.</p>    <p>In <b>Fig. 2.3.2A</b><span style='font-weight:normal'>, the author is editing       information about a resource in the map after clicking on the box representing       the resource in the map. In the dialog, the author can enter a map-internal       title for the resource, which is displayed to the learners when navigating       the maps. In the same dialog, the author will specify the URL of the resource,       which can either be internal to the Network, or any URL of a web page outside       of it. For internal resources, the author can also browse the Network filesystem       or search the resource metadata to locate an appropriate resource.</span></p>    <p><span style='font-size:14.0pt'><b><img border=0 width=431height=327 id="_x0000_i1030" src="handout_files/image006.jpg">Fig. 2.3.2A</b></span><spanstyle='font-size:14.0pt'> Ð </span><span style='font-size:12.0pt'>Example, Graphical       User Interface of Resource Assembly Tool</span></p>    <p>The resource priority can be chosen. A resource can be Òregular,Ó ÒmandatoryÓ       or Òoptional.Ó These resource priorities are only used in book-keeping of       earned points by the learners. Within the map, resources of different priorities       are displayed in different colors.</p>    <p>The dialog also allows for two modes of removing the resource from the       map: deleting it from the map including every link to and from it, and deleting       it while reconnecting any links that went through the resource. As an example,       resources A and B might both connect to resource C, and resource C might       connect to D. When removing C from the map using the first option, A and       B will not be connected to D anymore. Using the second option, in the end,       A will connect to D, and B will connect to D. In the latter case, the Resource       Assembly tool will also handle link conditions correctly: if A connected       to C under condition 1, and C connected to D under condition 2, then in       the end A will connect to D under a new condition which is (1 AND 2).</p>    <p>Finally, this dialog allows the author to connect the resource to another       resource (or itself) through a new link. When selecting this option, the       Resource Assembly Tool goes into link mode, and will link the current resource       to the next resource clicked on (unless the action is cancelled).</p>    <p><img border=0 width=431 height=327 id="_x0000_i1031"src="handout_files/image007.jpg"></p>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.2B</b></span><spanstyle='font-size:14.0pt'> Ð </span><span style='font-size:12.0pt'>Example, Graphical       User Interface of Resource Assembly Tool</span></p>    <p><b>Fig. 2.3.2B</b><span style='font-weight:normal'> shows the Resource       Assembly Tool in info mode, that is, when no specific component of the map       is edited, and if the Tool is not in link mode. In info mode, the contents       of the dialog window change dynamically as the mouse is moved over the components       of the map. In this case, the mouse pointer is over the link condition between       two resources. The dialog window shows the titles of the connected resources,       as well as the condition priority. In this scenario, the condition priority       is set such that the link cannot be taken (Òis blockedÓ) if the condition       is false. The condition priority can also be set such that the link is recommended       if the condition is true (possibly giving the learner several options where       to go next), or that the link has to be taken (Òis forcedÓ) over any other       possible link if the condition is true. Within the map, conditions of different       priorities are displayed in different colors. If the author now were to       click on the condition, the Tool would go into edit mode, and the condition       could be edited.</span></p>    <p><b>Fig. 2.3.2C</b><span style='font-weight:normal'> shows the Tool in edit       mode for the link between the resource titles displayed. The author can       remove the link, or insert a new resource into the link.</span></p>    <p>Obviously, by this mechanism, rather complex maps can be generated. These       are different from binary trees, both because branches can loop back, and       because branches can be re-united Ð in fact, most branches re-unite in the       finish resources. Into each link, a condition with one of three different       priorities can be attached. Whether or not a certain resource in the map       can be displayed depends on whether or not it can be reached through any       path along allowed links, starting with the start resource of the course.       If a resource is not linked to, it is assumed to be accessible if the map       which it is part of is accessible.</p>    <p><img border=0 width=431 height=327 id="_x0000_i1032"src="handout_files/image008.jpg"></p>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.2C</b></span><spanstyle='font-size:14.0pt'> Ð </span><span style='font-size:12.0pt'>Example, Graphical       User Interface of Resource Assembly Tool </span></p>    <h3><a name="_Toc514840861"></a><a name="_Toc421867114">Map Representation       and Storage Format</a></h3>    <p><b>Fig. 2.3.3</b><span style='font-weight:normal'> shows the XML representation       of the resource map constructed in </span><b>Fig. 2.3.2</b><spanstyle='font-weight:normal'>, which is the format in which maps are stored. In       the figure, however, additional graphical map layout information generated       by the Resource Assembly Tool is not displayed. This graphical information       is optional to re-generate the same graphical layout when the map is brought       up again in the Resource Assembly Tool, and is not needed for any other       system functionality.</span></p>    <p>Maps can be generated by tools other than the Resource Assembly Tool. In       particular, an author might have some other representation of a course sequence,       which can be converted into a map using scripts. If this map then were to       be brought up in the Resource Assembly Tool, the Tool would automatically       generate a graphical layout for it. Each entry of the map (resources, conditions       and links) is stored in a separate tag. </p>    <p>Resources and conditions have to have unique ID numbers. These numbers       are automatically generated by the Resource Assembly Tool when the entry       is first created, or added to the entries when a map generated outside the       Resource Assembly Tool is first retrieved. They can also be assigned by       custom scripts or added in by hand.</p>    <p>In this example, <b>Fig. 2.3.3</b><span style='font-weight:normal'>, entry 1 is the start resource of the map Ð when this map is accessed,       the source (src) URL of this tag will be the first resource rendered. Entry       2 is the finish resource of this map. This resource will be the last resource       in the sequence of resources. Entry 6 is a problem resource with the given       URL and title, as well as the priority ÒmandatoryÓ. Entry 19 is a condition,       which is used by the link between entries 6, the problem, and 9, a sequence.       <i>The final syntax for conditions has not yet been determined.</i></span></p>    <table border=1 cellspacing=0 cellpadding=0>      <tr>         <td width=443 valign=top class="Normal">           <p class=Preformatted><span style='font-size:8.0pt'>&lt;map&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;1&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> src=&quot;/res/msu/korte/phy231welcome.html&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> type=&quot;start&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Start&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;2&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> src=&quot;&quot;             type=&quot;finish&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Finish&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;6&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> src=&quot;/res/msu/korte/tests/units.problem&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> type=&quot;mandatory&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Physical             Units Test&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;9&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> src=&quot;/res/msu/korte/chapters/onedim.sequence&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Motion             in One Dimension&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;11&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> src=&quot;/res/msu/bauer/bridges/units.sequence&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Physical             Units Refresher&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;19&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> type=&quot;stop&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./res/msu/korte/tests/units.problem].status=solved&quot;&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;1&quot;             to=&quot;6&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;6&quot;             to=&quot;9&quot; condition=&quot;19&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;6&quot;             to=&quot;11&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;11&quot;             to=&quot;6&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;/map&gt;</span></p>        </td>      </tr>    </table>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.3</b></span><spanstyle='font-size:14.0pt'> Ð XML representation of the map in Fig. 2.3.2C (non-graphical       information only).</span></p>    <h3><a name="_Toc514840866"></a><a name="_Toc514840862"></a><aname="_Toc514920452"></a><a name="_Toc421867115">Example of Nested Maps</a></h3>    <p><b>Fig. 2.3.4 </b><span style='font-weight:normal'>shows the XML representation       of three maps which are imported into each other. </span><b>Fig. 2.3.4B</b><span style='font-weight:normal'>       is the sequence that is referenced as resource 9 in the course map </span><b>Fig.       2.3.4A</b><spanstyle='font-weight:normal'>. In the resulting map, the entry point of resource       9 in </span><b>Fig. 2.3.4A</b><span style='font-weight:normal'> is in fact       the entry point of the start resource of </span><b>Fig. 2.3.4B</b><spanstyle='font-weight:normal'>, namely, resource 1 there. The exit point of resource       9 in </span><b>Fig. 2.3.4A</b><span style='font-weight:normal'> is the exit       point of the finish resource of </span><b>Fig. 2.3.4B</b><spanstyle='font-weight:normal'>, namely, resource 2 there.</span></p>    <p><b>Fig. 2.3.4C</b><span style='font-weight:normal'> is the page which is       referenced as resource 24 in </span><b>Fig. 2.3.4B</b><spanstyle='font-weight:normal'>.</span></p>    <p>A course can easily contain several hundreds of these nested maps. Since       the accessibility of each individual resource in the course depends on the       state of all possible paths linking it to the start resource of the course       across all intermediate maps, the computation and disk-I/O effort per single       transaction could quickly become prohibitive. Thus, all maps and conditions       are compiled into a pre-processed binary data structure at the start of       a session.</p>    <table border=1 cellspacing=0 cellpadding=0>      <tr>         <td width=442 valign=top class="Normal">           <p class=Preformatted><span style='font-size:8.0pt'>&lt;map&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;1&quot;             src=&quot;&quot; type=&quot;start&quot; title=&quot;Start&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;2&quot;             src=&quot;&quot; type=&quot;finish&quot; title=&quot;Finish&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;5&quot;             src=&quot;/res/msu/korte/tests/pretest.problem&quot; type=&quot;mandatory&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Pretest&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;9&quot;             src=&quot;/res/msu/korte/parts/part1.sequence&quot; type=&quot;mandatory&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Part             1&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;11&quot;             src=&quot;/res/msu/korte/tests/midterm.sequence&quot; type=&quot;mandatory&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Midterm&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;15&quot;             src=&quot;/res/msu/korte/parts/part2.sequence&quot; type=&quot;mandatory&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Part             2&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;19&quot;             type=&quot;stop&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/pretest.problem].status=solved&quot;&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;20&quot;             src=&quot;/res/msu/korte/refresh/refresher.sequence&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Refresher&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;29&quot;             src=&quot;/res/msu/korte/tests/final.sequence&quot; type=&quot;mandatory&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Final             Exam&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;30&quot;             type=&quot;stop&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/midterm.sequence].percent&gt;60&quot;&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;36&quot;             src=&quot;/res/msu/korte/refresh/review.sequence&quot;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Review&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;43&quot;             type=&quot;force&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/midterm.sequence].percent&lt;10&quot;&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;58&quot;             src=&quot;/res/msu/korte/chapters/applications.sequence&quot; type=&quot;optional&quot;             </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Applications&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;70&quot;             type=&quot;stop&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/final.sequence].percent&gt;60&quot;&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;1&quot;             to=&quot;5&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;9&quot;             to=&quot;11&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;11&quot;             to=&quot;15&quot; condition=&quot;30&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot;             to=&quot;9&quot; condition=&quot;19&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot;             to=&quot;20&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;20&quot;             to=&quot;5&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;11&quot;             to=&quot;36&quot; condition=&quot;43&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;36&quot;             to=&quot;9&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;36&quot;             to=&quot;11&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;15&quot;             to=&quot;29&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;29&quot;             to=&quot;2&quot; condition=&quot;70&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;11&quot;             to=&quot;11&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;/map&gt;</span></p>        </td>      </tr>    </table>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.4A</b></span><spanstyle='font-size:14.0pt'> Ð Example of a course map that has nested sequences</span></p>    <br clear=ALLstyle='page-break-before:always'>    <table border=1 cellspacing=0 cellpadding=0>      <tr>         <td width=442 valign=top class="Normal">           <p class=Preformatted><span style='font-size:8.0pt'>&lt;map&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;1&quot;             src=&quot;&quot; type=&quot;start&quot; title=&quot;Start&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;2&quot;             src=&quot;&quot; type=&quot;finish&quot; title=&quot;Finish&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;5&quot;             src=&quot;/res/msu/korte/parts/part1intro.html&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Part             1 Introduction&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;6&quot;             src=&quot;/res/msu/korte/parts/part1dir.xml&quot; title=&quot;Directions&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;12&quot;             src=&quot;/res/msu/korte/tests/part11.problem&quot; title=&quot;Problem             1&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;13&quot;             src=&quot;/res/msu/korte/tests/part13.problem&quot; title=&quot;Problem             3&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;19&quot;             src=&quot;/res/msu/korte/tests/part12.problem&quot; title=&quot;Problem             2&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;24&quot;             src=&quot;/res/msu/korte/parts/summary.page&quot; title=&quot;Summary&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;47&quot;             type=&quot;stop&quot;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/part11.problem].status=solved&quot;&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;48&quot;             type=&quot;stop&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/part12.problem].status=solved&quot;&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;49&quot;             type=&quot;stop&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/part13.problem].status=solved&quot;&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot;             to=&quot;6&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;1&quot;             to=&quot;5&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;6&quot;             to=&quot;12&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;6&quot;             to=&quot;13&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;6&quot;             to=&quot;19&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;12&quot;             to=&quot;24&quot; condition=&quot;47&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;19&quot;             to=&quot;24&quot; condition=&quot;48&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;13&quot;             to=&quot;24&quot; condition=&quot;49&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;24&quot;             to=&quot;2&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;/map&gt;</span></p>        </td>      </tr>    </table>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.4B</b></span><spanstyle='font-size:14.0pt'> Ð Example of a sequence (</span><spanstyle='font-size:14.0pt;font-family:"Courier New"'>part1.sequence</span><spanstyle='font-size:14.0pt'>) that has nested pages</span></p>    <table border=1 cellspacing=0 cellpadding=0>      <tr>         <td width=443 valign=top class="Normal">           <p class=Preformatted><span style='font-size:8.0pt'>&lt;map&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;1&quot;             src=&quot;&quot; type=&quot;start&quot; title=&quot;Start&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;2&quot;             src=&quot;&quot; type=&quot;finish&quot; title=&quot;Finish&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;5&quot;             src=&quot;/res/msu/smith/racecar.problem&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;6&quot;             src=&quot;/res/msu/smith/toofast.html&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;8&quot;             src=&quot;/res/msu/smith/tooslow.html&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;15&quot;             src=&quot;/res/msu/smith/accelerate.html&quot;&gt;&lt;/resource&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;40&quot;             type=&quot;force&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/smith/racecar.problem].status=solved&quot;&gt;&lt;/condition&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;41&quot;             type=&quot;stop&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/smith/racecar.problem].answer=friction&quot;&gt;&lt;/condition&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;42&quot;             type=&quot;stop&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/smith/racecar.problem].answer=sliding&quot;&gt;&lt;/condition&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;43&quot;             type=&quot;stop&quot; </span></p>          <p class=Preformatted><span style='font-size:8.0pt'>value=&quot;user.assessments[this./msu/smith/racecar.problem].answer=nonconstant&quot;&gt;&lt;/condition&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;1&quot;             to=&quot;5&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot;             to=&quot;6&quot; condition=&quot;41&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot;             to=&quot;8&quot; condition=&quot;42&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot;             to=&quot;15&quot; condition=&quot;43&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;6&quot;             to=&quot;2&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;8&quot;             to=&quot;2&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;15&quot;             to=&quot;2&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot;             to=&quot;2&quot; condition=&quot;40&quot;&gt;&lt;/link&gt;</span></p>          <p class=Preformatted><span style='font-size:8.0pt'>&lt;/map&gt;</span></p>        </td>      </tr>    </table>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.4C</b></span><spanstyle='font-size:14.0pt'> Ð Example of a page (</span><span style='font-size:14.0pt;font-family:"Courier New"'>summary.page</span><span style='font-size:14.0pt'>)</span></p>    <br clear=ALLstyle='page-break-before:always'>    <p><span style='font-size:14.0pt'><img border=0 width=432height=456 id="_x0000_i1033" src="handout_files/image009.jpg"></span></p>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.5 Ð </b></span><spanstyle='font-size:14.0pt'>Flow chart of the course initialization routine run when       a learner first accesses a course during a session (see Figs. 2.1.6A and       2.1.8A for the procedures </span><span style='font-size:14.0pt;font-family:"Courier New"'>loadmap</span><span style='font-size:14.0pt'> and </span><spanstyle='font-size:14.0pt;font-family:"Courier New"'>traceroute</span><spanstyle='font-size:14.0pt'>)</span></p>    <h3><a name="_Toc514840863"></a><a name="_Toc514920453"></a><aname="_Toc421867116">Initialization of a Course for a Learner</a></h3>    <p>When a learner first enters a course during a session, the system will       initialize this course for the learner. In particular, at this point, the       course map and all nested (embedded) maps and resources are evaluated, and       the information is compiled into two binary structures, which are stored       with the session information: the resource properties hash, and the link       conditions array. This information will be used over the duration of the       session for several purposes: navigation (which resource is the next, which       one the previous?), for access control (can the resource be reached under       the link conditions given the current state of the student?), and to register       assessment results within the context of a certain course and map (there       might be several instances of the same problem resource within a course).</p>    <h3><a name="_Toc514840864"></a><a name="_Toc514920454"></a><aname="_Toc421867117">Evaluation of the Map Structure for a Course</a></h3>    <p>The URL of the course is passed to the procedure <spanstyle='font-family:"Courier New"'>readmap</span> (<b>Fig. 2.3.5</b><spanstyle='font-weight:normal'>). Procedure </span><span style='font-family:"Courier New"'>readmap</span>       first initializes the resource properties as an empty hash, seeds the link       conditions array with a 0<sup>th</sup> element, which is set to ÒtrueÓ,       priority ÒnormalÓ, and sets the map counter to 0 (<b>Fig. 2.3.5, Step R1</b><spanstyle='font-weight:normal'>). While the resource properties hash, the link conditions       array and the map counter are global variable of the initialization process,       all other variables are local to the procedures (an important property for       these routines to run recursively). The procedure </span><spanstyle='font-family:"Courier New"'>readmap</span> then calls procedure <spanstyle='font-family:"Courier New"'>loadmap</span> for the URL of the course (<b>Fig.       2.3.5, Step R2</b><span style='font-weight:normal'>).</span></p>    <p><b>Figs. 2.1.6, 2.1.7</b><span style='font-weight:normal'> show a dump       of excerpts of the binary structure generated in </span><spanstyle='font-family:"Courier New"'>loadmap</span> for the nested maps of example       <b>Fig. 2.3.4</b><span style='font-weight:normal'>.</span></p>    <p>Procedure <span style='font-family:"Courier New"'>loadmap</span> (<b>Fig.       2.3.6A</b><span style='font-weight:normal'>) first checks if the map URL       has already been processed (multiple inclusion of the same map in a course       structure) (</span><b>Fig. 2.3.6A, Step L1</b><span style='font-weight:normal'>)       Ð if it was, it has been assigned a map counter value in the resource properties       hash. If the map has been processed, there is no need to process it again,       and </span><span style='font-family:"Courier New"'>loadmap</span> returns.</p>    <p>If the map has not been processed yet, the map counter is incremented and       the map is registered under the current value in the resource properties       hash (<b>Fig. 2.3.6A, Step L2</b><span style='font-weight:normal'>). The       file is then opened (</span><b>Fig. 2.3.6A, Step L3</b><spanstyle='font-weight:normal'>), which might entail prior replication, and the contents       are parsed. If there are no further entries, </span><spanstyle='font-family:"Courier New"'>loadmap</span> returns (<b>Fig. 2.3.6A, Step       L4</b><span style='font-weight:normal'>).</span></p>    <p>The new entry tag is then read (<b>Fig. 2.3.6A, Step L5</b><spanstyle='font-weight:normal'>) and the type is determined (</span><b>Fig. 2.3.6A,       Step L6</b><span style='font-weight:normal'>). </span></p>    <p>If the entry is a resource (<b>Step L7</b><spanstyle='font-weight:normal'>), a resource ID is formed by combining the map counter       and the resource ID within the map. For example, the ÒPart I IntroductionÓ       resource of part1.sequence (</span><b>Fig. 2.3.4B</b><spanstyle='font-weight:normal'>) was assigned the resource ID 2.5, since it has the       internal resource ID 5 in the 2<sup>nd</sup> map processed (see </span><b>Fig.       2.3.6B</b><span style='font-weight:normal'> under Òids_Ó). If the same URL       is found again, additional IDs are assigned to it. It is necessary to store       the IDs under the URL in the resource properties hash for reverse lookup       if a user simply requests a URL. If the resource is a start or finish resources,       the resource ID is registered as the start or finish resource of the map,       respectively (</span><b>Fig. 2.3.6B</b><span style='font-weight:normal'>,       Òmap_start_Ó, Òmap_finish_Ó). The properties of the resource (URL, Title,       Priority, etc) are now stored under the resource ID, see for example </span><b>Fig.       2.3.6B</b><spanstyle='font-weight:normal'> Òtitle_2.5Ó.</span></p>    <p>If the resource is not a map itself (<b>Fig. 2.3.6A</b><spanstyle='font-weight:normal'>, </span><b>Step L8</b><span style='font-weight:normal'>), the next entry is read. Otherwise, procedure </span><spanstyle='font-family:"Courier New"'>loadmap </span>calls itself recursively to process       that map (<b>Step L9</b><span style='font-weight:normal'>).</span></p>    <p>If in <b>Step L6</b><span style='font-weight:normal'>, the type of the       entry was determined to be a condition, a condition ID is formed (</span><b>Step       L10</b><span style='font-weight:normal'>) by again combining the map counter       with the internal ID. The condition is also added to the end of the condition       array (see </span><b>Fig. 10</b><span style='font-weight:normal'>), which       is a compilation of all conditions in the course (</span><b>Step L11</b><spanstyle='font-weight:normal'>). The conditions in this array are evaluated when       a transaction occurs that could change the state of the student, and the       state of each condition is stored by the index number in the session environment.       A reference to the index number in the condition array is stored under the       condition ID (</span><b>Fig. 2.3.6D</b><span style='font-weight:normal'>,       Òcondid_Ó).</span></p>    <p>If the entry is a link (<b>Step L6</b><spanstyle='font-weight:normal'>), a link ID is generated (</span><b>Step L12</b><spanstyle='font-weight:normal'>). This ID is formed by combining the map counter and       another counter which is incremented for every new link within the map.       Under this ID, the IDs of the originating and the destination resource of       the link are stored, as well as that of the link condition (</span><b>Fig.       2.3.6D</b><spanstyle='font-weight:normal'>). For the originating resource, in </span><b>Step       L13 </b><span style='font-weight:normal'>the link ID is added to the list       of outgoing links (</span><b>Fig. 2.3.6C</b><span style='font-weight:normal'>,       Òto_Ó), and for the destination resource, the link ID is added to the list       of incoming links (</span><b>Fig. 2.3.6C</b><span style='font-weight:normal'>,       Òfrom_Ó).</span></p>    <p>After the last entry has been processed, procedure <spanstyle='font-family:"Courier New"'>loadmap</span> returns. After the last map has       been processed, the original course-level instance of <spanstyle='font-family:"Courier New"'>loadmap</span> returns to <spanstyle='font-family:"Courier New"'>readmap</span> (<b>Fig. 2.3.5</b><spanstyle='font-weight:normal'>, </span><b>Step R2</b><span style='font-weight:normal'>).</span></p>    <p><img border=0 width=432 height=547 id="_x0000_i1034"src="handout_files/image010.jpg"></p>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.6A</b></span><spanstyle='font-size:14.0pt'> Ð Flow chart of procedure </span><spanstyle='font-size:14.0pt;font-family:"Courier New"'>loadmap</span></p>    <br clear=ALLstyle='page-break-before:always'>    <table border=1 cellspacing=0 cellpadding=0>      <tr>         <td width=443 valign=top class="Normal">           <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/chapters/applications.sequence:             1.58</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/parts/part1.sequence: 1.9</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/parts/part1dir.xml: 2.6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/parts/part1intro.html: 2.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/parts/part2.sequence: 1.15</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/parts/summary.page: 2.24</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/refresh/refresher.sequence: 1.20</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/refresh/review.sequence: 1.36</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/tests/final.sequence: 1.29</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/tests/midterm.sequence: 1.11</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/tests/part11.problem: 2.12</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/tests/part12.problem: 2.19</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/tests/part13.problem: 2.13</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/korte/tests/pretest.problem: 1.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/smith/accelerate.html: 3.15</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/smith/racecar.problem: 3.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/smith/toofast.html: 3.6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>ids_/res/msu/smith/tooslow.html: 3.8</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'><b>É</b></span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>map_start_/res/msu/korte/foo.sequence: 1.1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>map_start_/res/msu/korte/parts/part1.sequence: 2.1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>map_start_/res/msu/korte/parts/summary.page: 3.1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'><b>É</b></span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>map_finish_/res/msu/korte/foo.sequence: 1.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>map_finish_/res/msu/korte/parts/part1.sequence: 2.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>map_finish_/res/msu/korte/parts/summary.page: 3.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'><b>É</b></span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_1.11: Midterm</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_1.15: Part 2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_1.20: Refresher</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_1.29: Final Exam</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_1.36: Review</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_1.5: Pretest</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_1.58: Applications</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_1.9: Part 1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_2.12: Problem 1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_2.13: Problem 3</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_2.19: Problem 2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_2.24: Summary</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_2.5: Part 1 Introduction</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>title_2.6: Directions</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'><b>É</b></span></p>        </td>      </tr>    </table>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.6B</b></span><spanstyle='font-size:14.0pt'> Ð Dump of the resource properties hash. Excerpt of the       resource properties gathered in procedure </span><span style='font-size:14.0pt;font-family:"Courier New"'>loadmap</span></p>    <table border=1 cellspacing=0 cellpadding=0>      <tr>         <td width=443 valign=top class="Normal">           <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_1.1: 1.1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_1.11: 1.3,1.7,1.12</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_1.15: 1.10</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_1.20: 1.6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_1.29: 1.11</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_1.36: 1.8,1.9</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_1.5: 1.4,1.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_1.9: 1.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_2.1: 2.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_2.12: 2.6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_2.13: 2.8</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_2.19: 2.7</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_2.24: 2.9</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_2.5: 2.1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_2.6: 2.3,2.4,2.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_3.1: 3.1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_3.15: 3.7</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_3.5: 3.2,3.3,3.4,3.8</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_3.6: 3.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>to_3.8: 3.6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'><b>É</b></span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_1.11: 1.2,1.9,1.12</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_1.15: 1.3</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_1.2: 1.11</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_1.20: 1.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_1.29: 1.10</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_1.36: 1.7</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_1.5: 1.1,1.6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_1.9: 1.4,1.8</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_2.12: 2.3</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_2.13: 2.4</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_2.19: 2.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_2.2: 2.9</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_2.24: 2.6,2.7,2.8</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_2.5: 2.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_2.6: 2.1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_3.15: 3.4</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_3.2: 3.5,3.6,3.7,3.8</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_3.5: 3.1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_3.6: 3.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>from_3.8: 3.3</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'><b>É</b></span></p>        </td>      </tr>    </table>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.6C</b></span><spanstyle='font-size:14.0pt'> Ð Dump of the resource properties hash. Excerpt of information       gathered about links between resources in subroutine </span><spanstyle='font-size:14.0pt;font-family:"Courier New"'>loadmap</span><spanstyle='font-size:14.0pt'>.</span></p>    <table border=1 cellspacing=0 cellpadding=0>      <tr>         <td width=148 valign=top class="Normal">           <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_1.1: 1.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_1.10: 1.29</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_1.11: 1.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_1.12: 1.11</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_1.2: 1.11</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_1.3: 1.15</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_1.4: 1.9</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_1.5: 1.20</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_1.6: 1.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_1.7: 1.36</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_1.8: 1.9</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_1.9: 1.11</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_2.1: 2.6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_2.2: 2.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_2.3: 2.12</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_2.4: 2.13</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_2.5: 2.19</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_2.6: 2.24</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_2.7: 2.24</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_2.8: 2.24</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_2.9: 2.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_3.1: 3.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_3.2: 3.6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_3.3: 3.8</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_3.4: 3.15</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_3.5: 3.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_3.6: 3.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_3.7: 3.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>goesto_3.8: 3.2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'><b>É</b></span></p>        </td>        <td width=148 valign=top class="Normal">           <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_1.1: 1.1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_1.10: 1.15</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_1.11: 1.29</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_1.12: 1.11</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_1.2: 1.9</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_1.3: 1.11</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_1.4: 1.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_1.5: 1.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_1.6: 1.20</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_1.7: 1.11</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_1.8: 1.36</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_1.9: 1.36</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_2.1: 2.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_2.2: 2.1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_2.3: 2.6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_2.4: 2.6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_2.5: 2.6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_2.6: 2.12</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_2.7: 2.19</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_2.8: 2.13</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_2.9: 2.24</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_3.1: 3.1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_3.2: 3.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_3.3: 3.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_3.4: 3.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_3.5: 3.6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_3.6: 3.8</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_3.7: 3.15</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>comesfrom_3.8: 3.5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'><b>É</b></span></p>        </td>        <td width=148 valign=top class="Normal">           <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_1.1: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_1.10: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_1.11: 1.70</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_1.12: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_1.2: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_1.3: 1.30</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_1.4: 1.19</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_1.5: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_1.6: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_1.7: 1.43</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_1.8: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_1.9: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_2.1: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_2.2: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_2.3: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_2.4: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_2.5: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_2.6: 2.47</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_2.7: 2.48</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_2.8: 2.49</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_2.9: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_3.1: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_3.2: 3.41</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_3.3: 3.42</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_3.4: 3.43</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_3.5: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_3.6: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_3.7: 0</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>undercond_3.8: 3.40</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'><b>É</b></span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>condid_1.19: 8</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>condid_1.30: 9</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>condid_1.43: 10</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>condid_1.70: 11</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>condid_2.47: 5</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>condid_2.48: 6</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>condid_2.49: 7</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>condid_3.40: 1</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>condid_3.41: 2</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>condid_3.42: 3</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'>condid_3.43: 4</span></p>          <p style='line-height:90%'><span style='font-size:8.0pt;  font-family:"Courier New"'><b>É</b></span></p>        </td>      </tr>    </table>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.6D</b></span><spanstyle='font-size:14.0pt'> Ð Dump of the resource properties hash. Excerpt of information       gathered about links and link conditions between resources in subroutine       </span><span style='font-size:14.0pt;font-family:"Courier New"'>loadmap</span><spanstyle='font-size:14.0pt'>.</span></p>    <span style='font-size:14.0pt;font-family:"Times New Roman"'><br clear=ALLstyle='page-break-before:always'>    </span>     <table border=1 cellspacing=0 cellpadding=0>      <tr>         <td width=443 valign=top class="Normal">           <p><span style='font-size:12.0pt'>0 : true:normal</span></p>          <p><span style='font-size:12.0pt'>1 : user.assessments[this./msu/smith/racecar.problem].status=solved:force</span></p>          <p><span style='font-size:12.0pt'>2 : user.assessments[this./msu/smith/racecar.problem].answer=friction:stop</span></p>          <p><span style='font-size:12.0pt'>3 : user.assessments[this./msu/smith/racecar.problem].answer=sliding:stop</span></p>          <p><span style='font-size:12.0pt'>4 : user.assessments[this./msu/smith/racecar.problem].answer=nonconstant:stop</span></p>          <p><span style='font-size:12.0pt'>5 : user.assessments[this./msu/korte/tests/part11.problem].status=solved:stop</span></p>          <p><span style='font-size:12.0pt'>6 : user.assessments[this./msu/korte/tests/part12.problem].status=solved:stop</span></p>          <p><span style='font-size:12.0pt'>7 : user.assessments[this./msu/korte/tests/part13.problem].status=solved:stop</span></p>          <p><span style='font-size:12.0pt'>8 : user.assessments[this./msu/korte/tests/pretest.problem].status=solved:stop</span></p>          <p><span style='font-size:12.0pt'>9 : user.assessments[this./msu/korte/tests/midterm.sequence].percent&gt;60:stop</span></p>          <p><span style='font-size:12.0pt'>10 : user.assessments[this./msu/korte/tests/midterm.sequence].percent&lt;10:force</span></p>          <p><span style='font-size:12.0pt'>11 : user.assessments[this./msu/korte/tests/final.sequence].percent&gt;60:stop</span></p>          <p><span style='font-size:18.0pt'><b>É</b></span></p>        </td>      </tr>    </table>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.7</b></span><spanstyle='font-size:14.0pt'> Ð Excerpt of the dump of the condition array constructed       in procedure </span><span style='font-size:14.0pt;font-family:"Courier New"'>loadmap       </span><i>(the final syntax of conditions has not yet been determined)</i></p>    <h3><a name="_Toc514920455"></a><a name="_Toc421867118">Paths and Path Conditions</a></h3>    <p>The next mayor step will be to determine all possible paths and conditions       leading up to a resource for access control.</p>    <p><span style='font-family:"Courier New"'>readmap</span> checks if the course       has a start resource from its map_start entry in the resource properties       (Step R2), and if does not, continue to store the two global binary data       structures (<b>Steps R5,R6</b><span style='font-weight:normal'>) Ð in this       special case, all resources which are part of any maps in the course are       assumed to be accessible.</span></p>    <p>If the course has a start resource, <span style='font-family:"Courier New"'>readmap</span> calls the procedure <span style='font-family:"Courier New"'>traceroute</span> (<b>Fig. 2.3.8A</b><span style='font-weight:normal'>) with the following parameters (</span><b>Step R4</b><spanstyle='font-weight:normal'>): The cumulative condition along this path or route       so far is set to ÒtrueÓ (the map is accessible); the resource ID of the       start resource of the course map; and an empty list for all resources processed       so far along this route. It is again important to note that all variables       except the global binary structures are local to </span><span style='font-family:"Courier New"'>traceroute</span>,       since <span style='font-family:"Courier New"'>traceroute</span> will recursively       call itself whenever there is a branching to follow all possible paths of       the maps.</p>    <p><span style='font-family:"Courier New"'>traceroute</span> will establish       a section within the resource properties hash that builds up all conditions       leading up to a resource. <b>Fig. 2.3.8B</b><span style='font-weight:normal'> shows an excerpt of the final result. For example, resource 2.5, the       introduction to part 1, can be reached under condition 8 (see </span><b>Fig.       2.3.7</b><span style='font-weight:normal'>), meaning, after solving the       pretest problem.</span></p>    <p><span style='font-family:"Courier New"'>traceroute</span> first checks       if the resource has already been processed on this route by its resource       ID (<b>Fig. 2.3.8A</b><span style='font-weight:normal'>, </span><b>Step       T1</b><span style='font-weight:normal'>) Ð this test avoids that </span><spanstyle='font-family:"Courier New"'>traceroute</span> runs into endless loops when       the links on the map loop. Next, the resource ID is added to the list of       processed resources on this route (<b>Step T2</b><span style='font-weight:normal'>).</span></p>    <p>The resource conditions are now ORÕd with the cumulative conditions on       this route (<b>Step T3</b><span style='font-weight:normal'>) Ð the route       represents another way of getting to the resource. A small routine with       simplification rules for boolean expressions is called to simplify the potentially       very long expression.</span></p>    <p>In the next step, it is determined if the resource is itself a map (<b>Step       T4</b><span style='font-weight:normal'>). If it is, the exit route conditions       can differ from the entry route condition by all additional conditions along       the paths in the embedded maps (for non-map resources, entry and exit route       conditions are the same). If however the embedded map does not have a start       resource (</span><b>Step T5</b><span style='font-weight:normal'>), that       is not the case Ð again, the missing of entry point to an embedded link       structure is interpreted as the resources being openly accessible.</span></p>    <p>If the embedded map does have a start resource, <spanstyle='font-family:"Courier New"'>traceroute</span> is called recursively with       the current route conditions, the ID of the start resource of that map,       and the list of already processed resource IDs (<b>Step T6</b><span style='font-weight:normal'>). Upon return, if the embedded map does not have a finish resource, the       entry and exit conditions of this map are assumed to be the same (</span><b>Step       T7</b><span style='font-weight:normal'>). If the map had a finish resource,       the route condition so far is set to the resource condition of the finish       resource of the embedded map (</span><b>Step T8</b><span style='font-weight:normal'>)       Ð in order go on from here, the user would have had to reach the finish       resource of the embedded map.</span></p>    <p>Now the route conditions are correctly set for exiting the resource and       going on from here. <span style='font-family:"Courier New"'>traceroute </span>now       loops over all outgoing links of the resource (<b>Step T9</b><spanstyle='font-weight:normal'>). If the link does have a link condition (</span><b>Step       T10</b><span style='font-weight:normal'>), then for this path, the cumulative       route condition so far AND the link condition (</span><b>Step T11</b><spanstyle='font-weight:normal'>). If there is no link condition, then there is no       change in route conditions (</span><b>Step T12</b><span style='font-weight:normal'>).</span></p>    <p>To further process the routes along this link, <spanstyle='font-family:"Courier New"'>traceroute</span> is called recursively with       the resource ID of the destination resource of the link, the new route conditions,       and the list of already processed resources (<b>Step T13</b><spanstyle='font-weight:normal'>). </span><span style='font-family:"Courier New"'>traceroute</span>       returns after processing the last outgoing link of the resource it had been       called for.</p>    <p><b>Fig. 2.3.8B</b><span style='font-weight:normal'> shows part of the output       of </span><span style='font-family:"Courier New"'>traceroute</span> for       the example <b>Fig. 2.3.4</b><span style='font-weight:normal'>.</span></p>    <br clear=ALLstyle='page-break-before:always'>    <p><span style='font-size:14.0pt'><img border=0 width=432height=557 id="_x0000_i1035" src="handout_files/image011.jpg"></span></p>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.8A</b></span><spanstyle='font-size:14.0pt'> Ð Flow chart of procedure </span><spanstyle='font-size:14.0pt;font-family:"Courier New"'>traceroute</span></p>    <br clear=ALLstyle='page-break-before:always'>    <table border=1 cellspacing=0 cellpadding=0>      <tr>         <td width=443 valign=top class="Normal">           <p>conditions_1.1: 0</p>          <p>conditions_1.11:</p>          <p>(((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1))</p>          <p>conditions_1.15:</p>          <p>((((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1)))&amp;9</p>          <p>conditions_1.2:</p>          <p>(((((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1)))&amp;9)&amp;11</p>          <p>conditions_1.20: 0</p>          <p>conditions_1.29:</p>          <p>((((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1)))&amp;9</p>          <p>conditions_1.36:</p>          <p>((((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1)))&amp;10</p>          <p>conditions_1.5: 0</p>          <p>conditions_1.9: 8</p>          <p>conditions_2.1: 8</p>          <p>conditions_2.12: 8</p>          <p>conditions_2.13: 8</p>          <p>conditions_2.19: 8</p>          <p>conditions_2.2:</p>          <p>(((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1))</p>          <p>conditions_2.24: ((8&amp;5)|(8&amp;7)|(8&amp;6))</p>          <p>conditions_2.5: 8</p>          <p>conditions_2.6: 8</p>          <p>conditions_3.1: ((8&amp;5)|(8&amp;7)|(8&amp;6))</p>          <p>conditions_3.15: ((8&amp;5&amp;4)|(8&amp;7&amp;4)|(8&amp;6&amp;4))</p>          <p>conditions_3.2: ((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1))</p>          <p>conditions_3.5: ((8&amp;5)|(8&amp;7)|(8&amp;6))</p>          <p>conditions_3.6: ((8&amp;5&amp;2)|(8&amp;7&amp;2)|(8&amp;6&amp;2))</p>          <p>conditions_3.8: ((8&amp;5&amp;3)|(8&amp;7&amp;3)|(8&amp;6&amp;3))</p>        </td>      </tr>    </table>    <p><span style='font-size:14.0pt'><b>Fig. 2.3.8B Ð </b></span><spanstyle='font-size:14.0pt'>Dump of resource properties hash. Excerpt of cumulative       link conditions to reach a certain resource.</span></p>    <h3><a name="_Toc514840865"></a><a name="_Toc514920456"></a><aname="_Toc421867119">Multivalued Boolean Evaluation of Link Priorities</a></h3>    <p>When a user accessed a resource on a map and desires to access the ÒnextÓ       resource, the request is processed by a number of steps. From the data examplified       in <b>Fig. 2.3.6C</b><span style='font-weight:normal'>, it is determined       which outgoing links exist. From the data in </span><b>Fig. 2.3.6D</b><span style='font-weight:normal'>       it is determined to which resources those links lead. For each of the resources,       the expressions in </span><b>Fig. 2.3.8A</b><span style='font-weight:normal'>       are evaluated as follows. Stored in the session environment is the evaluation       of the table </span><b>Fig. 10</b><spanstyle='font-weight:normal'>, where the boolean part is evaluated as Ò0Ó or Ò1Ó.       In addition, a multivalued boolean value is computed incorporating the condition       priority. A false blocking condition is assigned the value zero, all other       false conditions the value 1. A true forced condition is assigned the value       3, all other true conditions the value 2. </span></p>    <p>In the expressions <b>Fig. 2.3.8A</b><span style='font-weight:normal'> an Ò&amp;Ó (ÒANDÓ) is processed as the minimum (min) operation, a Ò|Ó       (ÒORÓ) is processed as the maximum (max) operation. The outcome Ò0Ó means       ÒblockedÓ, the outcome Ò1Ó mean Ònot recommendedÓ, the outcome Ò2Ó recommended,       and the outcome Ò3Ó forced.</span></p>  </div>  <p>&nbsp;</p></div><brclear=ALL style='page-break-before:always;'><div class=Section2> </div></body></html>
\ No newline at end of file
+<html>
+<head>
+<meta name=Title
+content="Session Three: Publication, Content Maps, Course Maps (Gerd)">
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+<title>Session Three: Publication, Content Maps, Course Maps (Gerd)</title>
+<style><!--
+.Section1
+	{page:Section1;}
+.Section2
+	{page:Section2;}
+-->
+</style>
+</head>
+<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
+<div class=Section1> 
+  <h2>Session Three: Publication, Content Maps, Course Maps (Gerd)</h2>
+  <h3><a name="_Toc514840855"></a><a name="_Toc421867109">Publication of a Resource</a></h3>
+  <p>Authors can only write-access the<i> </i><span
+style='font-family:"Courier New";font-style:normal'>/~</span><span
+style='font-family:"Courier New"'><i>authorname</i></span><span
+style='font-family:"Courier New"'>/</span> space. They can copy resources into 
+    the resource area through the publication step, and move them back through 
+    a recover step. Authors do not have direct write-access to their resource 
+    space. </p>
+  <div class=Section9>
+    <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>
+      <p style='border:none;padding:0in'><span
+style='font-size:14.0pt'><b>Construction space</b></span><span
+style='font-size:14.0pt'> </span><span style='font-size:14.0pt;font-family:
+Wingdings'>ˆ</span><span style='font-size:14.0pt'> Publication Step </span><span
+style='font-size:14.0pt;font-family:Wingdings'>ˆ</span><span style='font-size:
+14.0pt'> <b>Resource space</b></span></p>
+      <p style='border:none;padding:0in'><span style='font-size:14.0pt'> </span><span
+style='font-size:14.0pt;font-family:Wingdings'>§</span><span style='font-size:
+14.0pt'> Retrieve </span><span style='font-size:14.0pt;font-family:Wingdings'>§</span> 
+      </p>
+    </div>
+    <p>During the publication step, several events will be triggered. Metadata 
+      is gathered, where a wizard manages default entries on a hierarchical per-directory 
+      base: The wizard imports the metadata (including access privileges and royalty 
+      information) from the most recent published resource in the current directory, 
+      and if that is not available, from the next directory above, etc. The Network 
+      keeps all previous versions of a resource and makes them available by an 
+      explicit version number, which is inserted between the file name and extension, 
+      for example <span style='font-family:"Courier New"'>foo.2.html</span>, while 
+      the most recent version does not carry a version number (<span
+style='font-family:"Courier New"'>foo.html</span>). Servers subscribing to a changed 
+      resource are notified that a new version is available.</p>
+    <h3><a name="_Toc514840857"></a><a name="_Toc421867110">Content Re-usage and 
+      Granularity</a></h3>
+    <p>Any faculty participating in the Network can publish their own learning 
+      resources into the common pool. To that end, the Network provides a Òconstruction 
+      spaceÓ which is only accessible to the author, and a publication process, 
+      which transfers the material to the shared pool Ð during the publication 
+      process, metadata about the resource is gathered, and system-wide update 
+      notification and versioning mechanisms are triggered..</p>
+    <p>Learning resources could be simple paragraphs of text, movies, applets, 
+      individualizing homework problems, etc. In addition to providing a distributed 
+      digital library with mechanisms to store and catalog these resources, the 
+      Network enables faculty to combine and sequence these resources at several 
+      levels: An instructor from Community College A could combine a text paragraph 
+      from University B with a movie from College C and an online homework problem 
+      from Publisher D, to form one page. Another instructor from High School 
+      E can take that page from Community College A and combine it with other 
+      pages into a module, unit or chapter. Those in turn can be combined into 
+      whole coursepacks. Faculty can design their own curricula from existing 
+      and newly created resources instead of having to buy into a complete off-the-shelf 
+      product.</p>
+    <p><b>Fig. 2.3.1</b><span style='font-weight:normal'> shows a general overview 
+      of the resource assembly mechanism and the different levels of content granularity 
+      supported by the current implementation of this principle. The topmost puzzle 
+      piece represents a resource at the fragment level Ð one GIF, one movie, 
+      one paragraph of text, one problem, or one regular web page. Attached to 
+      the resource is metadata gathered at the publication time of the resource.</span></p>
+    <p>Using the resource assembly tool described below, these fragments and pages 
+      can be assembled into a page. A page is a resource of the grain size which 
+      would be rendered as one page on the web and/or on the printer.</p>
+    <p>Using the same tool, fragments (which would then be rendered as standalone 
+      pages), pages and sequences can be assembled into sequences. Sequences are 
+      resources which are rendered a sequence of pages, not necessarily linear. 
+      Examples are one lesson, one chapter, or one learning cycle</p>
+    <p>On the third granularity level, fragments (rendered as standalone pages), 
+      pages, and sequences can be assembled into courses. Courses are a sequence 
+      which represents the entirety of the resources belonging to a learning unit 
+      into which learners can be enrolled. Examples are a University one-semester 
+      course, a</p>
+    <p>workshop, or a High School class.</p>
+    <p align=center style='text-align:center'><img border=0
+width=291 height=436 id="_x0000_i1029" src="handout_files/image005.png"></p>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.1.1</b></span><span
+style='font-size:14.0pt'> Ð Resource Assembly</span></p>
+    <h3><a name="_Toc514840858"></a><a name="_Toc421867111">Maps</a></h3>
+    <p>To increase the utility of the materials, the number of hard-coded hyperlinks 
+      between the resources should be minimized. The actual combining and sequencing 
+      is part of the system functionality and driven by external &quot;roadmaps&quot;, 
+      which are constructed by the instructors. With this mechanism, one and the 
+      same resource can be part of different courses in different contexts. The 
+      soft-linking makes it possible to import only the desired set of resources 
+      without effectively importing additional parts another instructors resources 
+      through hard-linked menus or &quot;next page&quot; buttons that might resided 
+      on those resources.</p>
+    <h3><a name="_Toc514840859"></a><a name="_Toc421867112">Curriculum Adaptivity</a></h3>
+    <p>Maps allow for conditional choices and branching points. The actual path 
+      through and presentation of the learning resources is determined by instructor-specified 
+      combinations of learner choices and system-generated adaptations (for example, 
+      if the learner does not pass a test, additional resources may be included). 
+      Each learner can have an individualized curriculum according to preferences, 
+      capabilities and skills.</p>
+    <p>These maps can be generated at different levels of granularity with a graphical 
+      tool, or in an automated way through custom scripts.</p>
+    <h3><a name="_Toc514840860"></a><a name="_Toc421867113">Resource Assembly 
+      Tool</a></h3>
+    <p>The Network provides the Resource Assembly Tool as one means to generate 
+      maps. The Resource Assembly Tool provides a graphical user interface inside 
+      of a standard web browser. The current implementation is written in JavaScript. 
+    </p>
+    <p><b>Fig. 2.3.2</b><span style='font-weight:normal'> shows screenshots of 
+      the current implementation. The interface usually consists of two browser 
+      windows, one resizable one with a frameset that contains the menu and the 
+      map under construction, and a multipurpose non-resizable window that displays 
+      information and input forms.</span></p>
+    <p>When a new map is started, it only has a start and a finish resources. 
+      The author can then enlarge the map area and insert resources into it.</p>
+    <p>In <b>Fig. 2.3.2A</b><span style='font-weight:normal'>, the author is editing 
+      information about a resource in the map after clicking on the box representing 
+      the resource in the map. In the dialog, the author can enter a map-internal 
+      title for the resource, which is displayed to the learners when navigating 
+      the maps. In the same dialog, the author will specify the URL of the resource, 
+      which can either be internal to the Network, or any URL of a web page outside 
+      of it. For internal resources, the author can also browse the Network filesystem 
+      or search the resource metadata to locate an appropriate resource.</span></p>
+    <p><span style='font-size:14.0pt'><b><img border=0 width=431
+height=327 id="_x0000_i1030" src="handout_files/image006.jpg">Fig. 2.3.2A</b></span><span
+style='font-size:14.0pt'> Ð </span><span style='font-size:12.0pt'>Example, Graphical 
+      User Interface of Resource Assembly Tool</span></p>
+    <p>The resource priority can be chosen. A resource can be Òregular,Ó ÒmandatoryÓ 
+      or Òoptional.Ó These resource priorities are only used in book-keeping of 
+      earned points by the learners. Within the map, resources of different priorities 
+      are displayed in different colors.</p>
+    <p>The dialog also allows for two modes of removing the resource from the 
+      map: deleting it from the map including every link to and from it, and deleting 
+      it while reconnecting any links that went through the resource. As an example, 
+      resources A and B might both connect to resource C, and resource C might 
+      connect to D. When removing C from the map using the first option, A and 
+      B will not be connected to D anymore. Using the second option, in the end, 
+      A will connect to D, and B will connect to D. In the latter case, the Resource 
+      Assembly tool will also handle link conditions correctly: if A connected 
+      to C under condition 1, and C connected to D under condition 2, then in 
+      the end A will connect to D under a new condition which is (1 AND 2).</p>
+    <p>Finally, this dialog allows the author to connect the resource to another 
+      resource (or itself) through a new link. When selecting this option, the 
+      Resource Assembly Tool goes into link mode, and will link the current resource 
+      to the next resource clicked on (unless the action is cancelled).</p>
+    <p><img border=0 width=431 height=327 id="_x0000_i1031"
+src="handout_files/image007.jpg"></p>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.2B</b></span><span
+style='font-size:14.0pt'> Ð </span><span style='font-size:12.0pt'>Example, Graphical 
+      User Interface of Resource Assembly Tool</span></p>
+    <p><b>Fig. 2.3.2B</b><span style='font-weight:normal'> shows the Resource 
+      Assembly Tool in info mode, that is, when no specific component of the map 
+      is edited, and if the Tool is not in link mode. In info mode, the contents 
+      of the dialog window change dynamically as the mouse is moved over the components 
+      of the map. In this case, the mouse pointer is over the link condition between 
+      two resources. The dialog window shows the titles of the connected resources, 
+      as well as the condition priority. In this scenario, the condition priority 
+      is set such that the link cannot be taken (Òis blockedÓ) if the condition 
+      is false. The condition priority can also be set such that the link is recommended 
+      if the condition is true (possibly giving the learner several options where 
+      to go next), or that the link has to be taken (Òis forcedÓ) over any other 
+      possible link if the condition is true. Within the map, conditions of different 
+      priorities are displayed in different colors. If the author now were to 
+      click on the condition, the Tool would go into edit mode, and the condition 
+      could be edited.</span></p>
+    <p><b>Fig. 2.3.2C</b><span style='font-weight:normal'> shows the Tool in edit 
+      mode for the link between the resource titles displayed. The author can 
+      remove the link, or insert a new resource into the link.</span></p>
+    <p>Obviously, by this mechanism, rather complex maps can be generated. These 
+      are different from binary trees, both because branches can loop back, and 
+      because branches can be re-united Ð in fact, most branches re-unite in the 
+      finish resources. Into each link, a condition with one of three different 
+      priorities can be attached. Whether or not a certain resource in the map 
+      can be displayed depends on whether or not it can be reached through any 
+      path along allowed links, starting with the start resource of the course. 
+      If a resource is not linked to, it is assumed to be accessible if the map 
+      which it is part of is accessible.</p>
+    <p><img border=0 width=431 height=327 id="_x0000_i1032"
+src="handout_files/image008.jpg"></p>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.2C</b></span><span
+style='font-size:14.0pt'> Ð </span><span style='font-size:12.0pt'>Example, Graphical 
+      User Interface of Resource Assembly Tool </span></p>
+    <h3><a name="_Toc514840861"></a><a name="_Toc421867114">Map Representation 
+      and Storage Format</a></h3>
+    <p><b>Fig. 2.3.3</b><span style='font-weight:normal'> shows the XML representation 
+      of the resource map constructed in </span><b>Fig. 2.3.2</b><span
+style='font-weight:normal'>, which is the format in which maps are stored. In 
+      the figure, however, additional graphical map layout information generated 
+      by the Resource Assembly Tool is not displayed. This graphical information 
+      is optional to re-generate the same graphical layout when the map is brought 
+      up again in the Resource Assembly Tool, and is not needed for any other 
+      system functionality.</span></p>
+    <p>Maps can be generated by tools other than the Resource Assembly Tool. In 
+      particular, an author might have some other representation of a course sequence, 
+      which can be converted into a map using scripts. If this map then were to 
+      be brought up in the Resource Assembly Tool, the Tool would automatically 
+      generate a graphical layout for it. Each entry of the map (resources, conditions 
+      and links) is stored in a separate tag. </p>
+    <p>Resources and conditions have to have unique ID numbers. These numbers 
+      are automatically generated by the Resource Assembly Tool when the entry 
+      is first created, or added to the entries when a map generated outside the 
+      Resource Assembly Tool is first retrieved. They can also be assigned by 
+      custom scripts or added in by hand.</p>
+    <p>In this example, <b>Fig. 2.3.3</b><span style='font-weight:
+normal'>, entry 1 is the start resource of the map Ð when this map is accessed, 
+      the source (src) URL of this tag will be the first resource rendered. Entry 
+      2 is the finish resource of this map. This resource will be the last resource 
+      in the sequence of resources. Entry 6 is a problem resource with the given 
+      URL and title, as well as the priority ÒmandatoryÓ. Entry 19 is a condition, 
+      which is used by the link between entries 6, the problem, and 9, a sequence. 
+      <i>The final syntax for conditions has not yet been determined.</i></span></p>
+    <table border=1 cellspacing=0 cellpadding=0>
+      <tr> 
+        <td width=443 valign=top class="Normal"> 
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;map&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;1&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> src=&quot;/res/msu/korte/phy231welcome.html&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> type=&quot;start&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Start&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;2&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> src=&quot;&quot; 
+            type=&quot;finish&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Finish&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;6&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> src=&quot;/res/msu/korte/tests/units.problem&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> type=&quot;mandatory&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Physical 
+            Units Test&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;9&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> src=&quot;/res/msu/korte/chapters/onedim.sequence&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Motion 
+            in One Dimension&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;11&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> src=&quot;/res/msu/bauer/bridges/units.sequence&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Physical 
+            Units Refresher&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;19&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> type=&quot;stop&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./res/msu/korte/tests/units.problem].status=solved&quot;&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;1&quot; 
+            to=&quot;6&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;6&quot; 
+            to=&quot;9&quot; condition=&quot;19&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;6&quot; 
+            to=&quot;11&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;11&quot; 
+            to=&quot;6&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;/map&gt;</span></p>
+        </td>
+      </tr>
+    </table>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.3</b></span><span
+style='font-size:14.0pt'> Ð XML representation of the map in Fig. 2.3.2C (non-graphical 
+      information only).</span></p>
+    <h3><a name="_Toc514840866"></a><a name="_Toc514840862"></a><a
+name="_Toc514920452"></a><a name="_Toc421867115">Example of Nested Maps</a></h3>
+    <p><b>Fig. 2.3.4 </b><span style='font-weight:normal'>shows the XML representation 
+      of three maps which are imported into each other. </span><b>Fig. 2.3.4B</b><span style='font-weight:normal'> 
+      is the sequence that is referenced as resource 9 in the course map </span><b>Fig. 
+      2.3.4A</b><span
+style='font-weight:normal'>. In the resulting map, the entry point of resource 
+      9 in </span><b>Fig. 2.3.4A</b><span style='font-weight:normal'> is in fact 
+      the entry point of the start resource of </span><b>Fig. 2.3.4B</b><span
+style='font-weight:normal'>, namely, resource 1 there. The exit point of resource 
+      9 in </span><b>Fig. 2.3.4A</b><span style='font-weight:normal'> is the exit 
+      point of the finish resource of </span><b>Fig. 2.3.4B</b><span
+style='font-weight:normal'>, namely, resource 2 there.</span></p>
+    <p><b>Fig. 2.3.4C</b><span style='font-weight:normal'> is the page which is 
+      referenced as resource 24 in </span><b>Fig. 2.3.4B</b><span
+style='font-weight:normal'>.</span></p>
+    <p>A course can easily contain several hundreds of these nested maps. Since 
+      the accessibility of each individual resource in the course depends on the 
+      state of all possible paths linking it to the start resource of the course 
+      across all intermediate maps, the computation and disk-I/O effort per single 
+      transaction could quickly become prohibitive. Thus, all maps and conditions 
+      are compiled into a pre-processed binary data structure at the start of 
+      a session.</p>
+    <table border=1 cellspacing=0 cellpadding=0>
+      <tr> 
+        <td width=442 valign=top class="Normal"> 
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;map&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;1&quot; 
+            src=&quot;&quot; type=&quot;start&quot; title=&quot;Start&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;2&quot; 
+            src=&quot;&quot; type=&quot;finish&quot; title=&quot;Finish&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;5&quot; 
+            src=&quot;/res/msu/korte/tests/pretest.problem&quot; type=&quot;mandatory&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Pretest&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;9&quot; 
+            src=&quot;/res/msu/korte/parts/part1.sequence&quot; type=&quot;mandatory&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Part 
+            1&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;11&quot; 
+            src=&quot;/res/msu/korte/tests/midterm.sequence&quot; type=&quot;mandatory&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Midterm&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;15&quot; 
+            src=&quot;/res/msu/korte/parts/part2.sequence&quot; type=&quot;mandatory&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Part 
+            2&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;19&quot; 
+            type=&quot;stop&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/pretest.problem].status=solved&quot;&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;20&quot; 
+            src=&quot;/res/msu/korte/refresh/refresher.sequence&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Refresher&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;29&quot; 
+            src=&quot;/res/msu/korte/tests/final.sequence&quot; type=&quot;mandatory&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Final 
+            Exam&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;30&quot; 
+            type=&quot;stop&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/midterm.sequence].percent&gt;60&quot;&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;36&quot; 
+            src=&quot;/res/msu/korte/refresh/review.sequence&quot;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Review&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;43&quot; 
+            type=&quot;force&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/midterm.sequence].percent&lt;10&quot;&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;58&quot; 
+            src=&quot;/res/msu/korte/chapters/applications.sequence&quot; type=&quot;optional&quot; 
+            </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Applications&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;70&quot; 
+            type=&quot;stop&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/final.sequence].percent&gt;60&quot;&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;1&quot; 
+            to=&quot;5&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;9&quot; 
+            to=&quot;11&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;11&quot; 
+            to=&quot;15&quot; condition=&quot;30&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot; 
+            to=&quot;9&quot; condition=&quot;19&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot; 
+            to=&quot;20&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;20&quot; 
+            to=&quot;5&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;11&quot; 
+            to=&quot;36&quot; condition=&quot;43&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;36&quot; 
+            to=&quot;9&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;36&quot; 
+            to=&quot;11&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;15&quot; 
+            to=&quot;29&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;29&quot; 
+            to=&quot;2&quot; condition=&quot;70&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;11&quot; 
+            to=&quot;11&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;/map&gt;</span></p>
+        </td>
+      </tr>
+    </table>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.4A</b></span><span
+style='font-size:14.0pt'> Ð Example of a course map that has nested sequences</span></p>
+    <br clear=ALL
+style='page-break-before:always'>
+    <table border=1 cellspacing=0 cellpadding=0>
+      <tr> 
+        <td width=442 valign=top class="Normal"> 
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;map&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;1&quot; 
+            src=&quot;&quot; type=&quot;start&quot; title=&quot;Start&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;2&quot; 
+            src=&quot;&quot; type=&quot;finish&quot; title=&quot;Finish&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;5&quot; 
+            src=&quot;/res/msu/korte/parts/part1intro.html&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> title=&quot;Part 
+            1 Introduction&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;6&quot; 
+            src=&quot;/res/msu/korte/parts/part1dir.xml&quot; title=&quot;Directions&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;12&quot; 
+            src=&quot;/res/msu/korte/tests/part11.problem&quot; title=&quot;Problem 
+            1&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;13&quot; 
+            src=&quot;/res/msu/korte/tests/part13.problem&quot; title=&quot;Problem 
+            3&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;19&quot; 
+            src=&quot;/res/msu/korte/tests/part12.problem&quot; title=&quot;Problem 
+            2&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;24&quot; 
+            src=&quot;/res/msu/korte/parts/summary.page&quot; title=&quot;Summary&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;47&quot; 
+            type=&quot;stop&quot;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/part11.problem].status=solved&quot;&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;48&quot; 
+            type=&quot;stop&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/part12.problem].status=solved&quot;&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;49&quot; 
+            type=&quot;stop&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/korte/tests/part13.problem].status=solved&quot;&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> &lt;/condition&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot; 
+            to=&quot;6&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;1&quot; 
+            to=&quot;5&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;6&quot; 
+            to=&quot;12&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;6&quot; 
+            to=&quot;13&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;6&quot; 
+            to=&quot;19&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;12&quot; 
+            to=&quot;24&quot; condition=&quot;47&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;19&quot; 
+            to=&quot;24&quot; condition=&quot;48&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;13&quot; 
+            to=&quot;24&quot; condition=&quot;49&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;24&quot; 
+            to=&quot;2&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;/map&gt;</span></p>
+        </td>
+      </tr>
+    </table>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.4B</b></span><span
+style='font-size:14.0pt'> Ð Example of a sequence (</span><span
+style='font-size:14.0pt;font-family:"Courier New"'>part1.sequence</span><span
+style='font-size:14.0pt'>) that has nested pages</span></p>
+    <table border=1 cellspacing=0 cellpadding=0>
+      <tr> 
+        <td width=443 valign=top class="Normal"> 
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;map&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;1&quot; 
+            src=&quot;&quot; type=&quot;start&quot; title=&quot;Start&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;2&quot; 
+            src=&quot;&quot; type=&quot;finish&quot; title=&quot;Finish&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;5&quot; 
+            src=&quot;/res/msu/smith/racecar.problem&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;6&quot; 
+            src=&quot;/res/msu/smith/toofast.html&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;8&quot; 
+            src=&quot;/res/msu/smith/tooslow.html&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;resource id=&quot;15&quot; 
+            src=&quot;/res/msu/smith/accelerate.html&quot;&gt;&lt;/resource&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;40&quot; 
+            type=&quot;force&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/smith/racecar.problem].status=solved&quot;&gt;&lt;/condition&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;41&quot; 
+            type=&quot;stop&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/smith/racecar.problem].answer=friction&quot;&gt;&lt;/condition&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;42&quot; 
+            type=&quot;stop&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'> value=&quot;user.assessments[this./msu/smith/racecar.problem].answer=sliding&quot;&gt;&lt;/condition&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;condition id=&quot;43&quot; 
+            type=&quot;stop&quot; </span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>value=&quot;user.assessments[this./msu/smith/racecar.problem].answer=nonconstant&quot;&gt;&lt;/condition&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;1&quot; 
+            to=&quot;5&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot; 
+            to=&quot;6&quot; condition=&quot;41&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot; 
+            to=&quot;8&quot; condition=&quot;42&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot; 
+            to=&quot;15&quot; condition=&quot;43&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;6&quot; 
+            to=&quot;2&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;8&quot; 
+            to=&quot;2&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;15&quot; 
+            to=&quot;2&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;link from=&quot;5&quot; 
+            to=&quot;2&quot; condition=&quot;40&quot;&gt;&lt;/link&gt;</span></p>
+          <p class=Preformatted><span style='font-size:8.0pt'>&lt;/map&gt;</span></p>
+        </td>
+      </tr>
+    </table>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.4C</b></span><span
+style='font-size:14.0pt'> Ð Example of a page (</span><span style='font-size:
+14.0pt;font-family:"Courier New"'>summary.page</span><span style='font-size:
+14.0pt'>)</span></p>
+    <br clear=ALL
+style='page-break-before:always'>
+    <p><span style='font-size:14.0pt'><img border=0 width=432
+height=456 id="_x0000_i1033" src="handout_files/image009.jpg"></span></p>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.5 Ð </b></span><span
+style='font-size:14.0pt'>Flow chart of the course initialization routine run when 
+      a learner first accesses a course during a session (see Figs. 2.1.6A and 
+      2.1.8A for the procedures </span><span style='font-size:14.0pt;font-family:
+"Courier New"'>loadmap</span><span style='font-size:14.0pt'> and </span><span
+style='font-size:14.0pt;font-family:"Courier New"'>traceroute</span><span
+style='font-size:14.0pt'>)</span></p>
+    <h3><a name="_Toc514840863"></a><a name="_Toc514920453"></a><a
+name="_Toc421867116">Initialization of a Course for a Learner</a></h3>
+    <p>When a learner first enters a course during a session, the system will 
+      initialize this course for the learner. In particular, at this point, the 
+      course map and all nested (embedded) maps and resources are evaluated, and 
+      the information is compiled into two binary structures, which are stored 
+      with the session information: the resource properties hash, and the link 
+      conditions array. This information will be used over the duration of the 
+      session for several purposes: navigation (which resource is the next, which 
+      one the previous?), for access control (can the resource be reached under 
+      the link conditions given the current state of the student?), and to register 
+      assessment results within the context of a certain course and map (there 
+      might be several instances of the same problem resource within a course).</p>
+    <h3><a name="_Toc514840864"></a><a name="_Toc514920454"></a><a
+name="_Toc421867117">Evaluation of the Map Structure for a Course</a></h3>
+    <p>The URL of the course is passed to the procedure <span
+style='font-family:"Courier New"'>readmap</span> (<b>Fig. 2.3.5</b><span
+style='font-weight:normal'>). Procedure </span><span style='font-family:"Courier New"'>readmap</span> 
+      first initializes the resource properties as an empty hash, seeds the link 
+      conditions array with a 0<sup>th</sup> element, which is set to ÒtrueÓ, 
+      priority ÒnormalÓ, and sets the map counter to 0 (<b>Fig. 2.3.5, Step R1</b><span
+style='font-weight:normal'>). While the resource properties hash, the link conditions 
+      array and the map counter are global variable of the initialization process, 
+      all other variables are local to the procedures (an important property for 
+      these routines to run recursively). The procedure </span><span
+style='font-family:"Courier New"'>readmap</span> then calls procedure <span
+style='font-family:"Courier New"'>loadmap</span> for the URL of the course (<b>Fig. 
+      2.3.5, Step R2</b><span style='font-weight:normal'>).</span></p>
+    <p><b>Figs. 2.1.6, 2.1.7</b><span style='font-weight:normal'> show a dump 
+      of excerpts of the binary structure generated in </span><span
+style='font-family:"Courier New"'>loadmap</span> for the nested maps of example 
+      <b>Fig. 2.3.4</b><span style='font-weight:normal'>.</span></p>
+    <p>Procedure <span style='font-family:"Courier New"'>loadmap</span> (<b>Fig. 
+      2.3.6A</b><span style='font-weight:normal'>) first checks if the map URL 
+      has already been processed (multiple inclusion of the same map in a course 
+      structure) (</span><b>Fig. 2.3.6A, Step L1</b><span style='font-weight:normal'>) 
+      Ð if it was, it has been assigned a map counter value in the resource properties 
+      hash. If the map has been processed, there is no need to process it again, 
+      and </span><span style='font-family:"Courier New"'>loadmap</span> returns.</p>
+    <p>If the map has not been processed yet, the map counter is incremented and 
+      the map is registered under the current value in the resource properties 
+      hash (<b>Fig. 2.3.6A, Step L2</b><span style='font-weight:normal'>). The 
+      file is then opened (</span><b>Fig. 2.3.6A, Step L3</b><span
+style='font-weight:normal'>), which might entail prior replication, and the contents 
+      are parsed. If there are no further entries, </span><span
+style='font-family:"Courier New"'>loadmap</span> returns (<b>Fig. 2.3.6A, Step 
+      L4</b><span style='font-weight:normal'>).</span></p>
+    <p>The new entry tag is then read (<b>Fig. 2.3.6A, Step L5</b><span
+style='font-weight:normal'>) and the type is determined (</span><b>Fig. 2.3.6A, 
+      Step L6</b><span style='font-weight:normal'>). </span></p>
+    <p>If the entry is a resource (<b>Step L7</b><span
+style='font-weight:normal'>), a resource ID is formed by combining the map counter 
+      and the resource ID within the map. For example, the ÒPart I IntroductionÓ 
+      resource of part1.sequence (</span><b>Fig. 2.3.4B</b><span
+style='font-weight:normal'>) was assigned the resource ID 2.5, since it has the 
+      internal resource ID 5 in the 2<sup>nd</sup> map processed (see </span><b>Fig. 
+      2.3.6B</b><span style='font-weight:normal'> under Òids_Ó). If the same URL 
+      is found again, additional IDs are assigned to it. It is necessary to store 
+      the IDs under the URL in the resource properties hash for reverse lookup 
+      if a user simply requests a URL. If the resource is a start or finish resources, 
+      the resource ID is registered as the start or finish resource of the map, 
+      respectively (</span><b>Fig. 2.3.6B</b><span style='font-weight:normal'>, 
+      Òmap_start_Ó, Òmap_finish_Ó). The properties of the resource (URL, Title, 
+      Priority, etc) are now stored under the resource ID, see for example </span><b>Fig. 
+      2.3.6B</b><span
+style='font-weight:normal'> Òtitle_2.5Ó.</span></p>
+    <p>If the resource is not a map itself (<b>Fig. 2.3.6A</b><span
+style='font-weight:normal'>, </span><b>Step L8</b><span style='font-weight:
+normal'>), the next entry is read. Otherwise, procedure </span><span
+style='font-family:"Courier New"'>loadmap </span>calls itself recursively to process 
+      that map (<b>Step L9</b><span style='font-weight:normal'>).</span></p>
+    <p>If in <b>Step L6</b><span style='font-weight:normal'>, the type of the 
+      entry was determined to be a condition, a condition ID is formed (</span><b>Step 
+      L10</b><span style='font-weight:normal'>) by again combining the map counter 
+      with the internal ID. The condition is also added to the end of the condition 
+      array (see </span><b>Fig. 10</b><span style='font-weight:normal'>), which 
+      is a compilation of all conditions in the course (</span><b>Step L11</b><span
+style='font-weight:normal'>). The conditions in this array are evaluated when 
+      a transaction occurs that could change the state of the student, and the 
+      state of each condition is stored by the index number in the session environment. 
+      A reference to the index number in the condition array is stored under the 
+      condition ID (</span><b>Fig. 2.3.6D</b><span style='font-weight:normal'>, 
+      Òcondid_Ó).</span></p>
+    <p>If the entry is a link (<b>Step L6</b><span
+style='font-weight:normal'>), a link ID is generated (</span><b>Step L12</b><span
+style='font-weight:normal'>). This ID is formed by combining the map counter and 
+      another counter which is incremented for every new link within the map. 
+      Under this ID, the IDs of the originating and the destination resource of 
+      the link are stored, as well as that of the link condition (</span><b>Fig. 
+      2.3.6D</b><span
+style='font-weight:normal'>). For the originating resource, in </span><b>Step 
+      L13 </b><span style='font-weight:normal'>the link ID is added to the list 
+      of outgoing links (</span><b>Fig. 2.3.6C</b><span style='font-weight:normal'>, 
+      Òto_Ó), and for the destination resource, the link ID is added to the list 
+      of incoming links (</span><b>Fig. 2.3.6C</b><span style='font-weight:normal'>, 
+      Òfrom_Ó).</span></p>
+    <p>After the last entry has been processed, procedure <span
+style='font-family:"Courier New"'>loadmap</span> returns. After the last map has 
+      been processed, the original course-level instance of <span
+style='font-family:"Courier New"'>loadmap</span> returns to <span
+style='font-family:"Courier New"'>readmap</span> (<b>Fig. 2.3.5</b><span
+style='font-weight:normal'>, </span><b>Step R2</b><span style='font-weight:
+normal'>).</span></p>
+    <p><img border=0 width=432 height=547 id="_x0000_i1034"
+src="handout_files/image010.jpg"></p>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.6A</b></span><span
+style='font-size:14.0pt'> Ð Flow chart of procedure </span><span
+style='font-size:14.0pt;font-family:"Courier New"'>loadmap</span></p>
+    <br clear=ALL
+style='page-break-before:always'>
+    <table border=1 cellspacing=0 cellpadding=0>
+      <tr> 
+        <td width=443 valign=top class="Normal"> 
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/chapters/applications.sequence: 
+            1.58</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/parts/part1.sequence: 1.9</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/parts/part1dir.xml: 2.6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/parts/part1intro.html: 2.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/parts/part2.sequence: 1.15</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/parts/summary.page: 2.24</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/refresh/refresher.sequence: 1.20</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/refresh/review.sequence: 1.36</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/tests/final.sequence: 1.29</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/tests/midterm.sequence: 1.11</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/tests/part11.problem: 2.12</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/tests/part12.problem: 2.19</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/tests/part13.problem: 2.13</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/korte/tests/pretest.problem: 1.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/smith/accelerate.html: 3.15</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/smith/racecar.problem: 3.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/smith/toofast.html: 3.6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>ids_/res/msu/smith/tooslow.html: 3.8</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'><b>É</b></span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>map_start_/res/msu/korte/foo.sequence: 1.1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>map_start_/res/msu/korte/parts/part1.sequence: 2.1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>map_start_/res/msu/korte/parts/summary.page: 3.1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'><b>É</b></span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>map_finish_/res/msu/korte/foo.sequence: 1.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>map_finish_/res/msu/korte/parts/part1.sequence: 2.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>map_finish_/res/msu/korte/parts/summary.page: 3.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'><b>É</b></span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_1.11: Midterm</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_1.15: Part 2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_1.20: Refresher</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_1.29: Final Exam</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_1.36: Review</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_1.5: Pretest</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_1.58: Applications</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_1.9: Part 1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_2.12: Problem 1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_2.13: Problem 3</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_2.19: Problem 2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_2.24: Summary</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_2.5: Part 1 Introduction</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>title_2.6: Directions</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'><b>É</b></span></p>
+        </td>
+      </tr>
+    </table>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.6B</b></span><span
+style='font-size:14.0pt'> Ð Dump of the resource properties hash. Excerpt of the 
+      resource properties gathered in procedure </span><span style='font-size:
+14.0pt;font-family:"Courier New"'>loadmap</span></p>
+    <table border=1 cellspacing=0 cellpadding=0>
+      <tr> 
+        <td width=443 valign=top class="Normal"> 
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_1.1: 1.1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_1.11: 1.3,1.7,1.12</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_1.15: 1.10</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_1.20: 1.6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_1.29: 1.11</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_1.36: 1.8,1.9</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_1.5: 1.4,1.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_1.9: 1.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_2.1: 2.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_2.12: 2.6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_2.13: 2.8</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_2.19: 2.7</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_2.24: 2.9</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_2.5: 2.1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_2.6: 2.3,2.4,2.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_3.1: 3.1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_3.15: 3.7</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_3.5: 3.2,3.3,3.4,3.8</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_3.6: 3.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>to_3.8: 3.6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'><b>É</b></span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_1.11: 1.2,1.9,1.12</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_1.15: 1.3</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_1.2: 1.11</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_1.20: 1.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_1.29: 1.10</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_1.36: 1.7</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_1.5: 1.1,1.6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_1.9: 1.4,1.8</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_2.12: 2.3</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_2.13: 2.4</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_2.19: 2.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_2.2: 2.9</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_2.24: 2.6,2.7,2.8</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_2.5: 2.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_2.6: 2.1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_3.15: 3.4</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_3.2: 3.5,3.6,3.7,3.8</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_3.5: 3.1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_3.6: 3.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>from_3.8: 3.3</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'><b>É</b></span></p>
+        </td>
+      </tr>
+    </table>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.6C</b></span><span
+style='font-size:14.0pt'> Ð Dump of the resource properties hash. Excerpt of information 
+      gathered about links between resources in subroutine </span><span
+style='font-size:14.0pt;font-family:"Courier New"'>loadmap</span><span
+style='font-size:14.0pt'>.</span></p>
+    <table border=1 cellspacing=0 cellpadding=0>
+      <tr> 
+        <td width=148 valign=top class="Normal"> 
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_1.1: 1.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_1.10: 1.29</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_1.11: 1.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_1.12: 1.11</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_1.2: 1.11</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_1.3: 1.15</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_1.4: 1.9</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_1.5: 1.20</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_1.6: 1.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_1.7: 1.36</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_1.8: 1.9</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_1.9: 1.11</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_2.1: 2.6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_2.2: 2.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_2.3: 2.12</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_2.4: 2.13</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_2.5: 2.19</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_2.6: 2.24</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_2.7: 2.24</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_2.8: 2.24</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_2.9: 2.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_3.1: 3.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_3.2: 3.6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_3.3: 3.8</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_3.4: 3.15</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_3.5: 3.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_3.6: 3.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_3.7: 3.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>goesto_3.8: 3.2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'><b>É</b></span></p>
+        </td>
+        <td width=148 valign=top class="Normal"> 
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_1.1: 1.1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_1.10: 1.15</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_1.11: 1.29</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_1.12: 1.11</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_1.2: 1.9</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_1.3: 1.11</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_1.4: 1.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_1.5: 1.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_1.6: 1.20</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_1.7: 1.11</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_1.8: 1.36</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_1.9: 1.36</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_2.1: 2.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_2.2: 2.1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_2.3: 2.6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_2.4: 2.6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_2.5: 2.6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_2.6: 2.12</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_2.7: 2.19</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_2.8: 2.13</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_2.9: 2.24</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_3.1: 3.1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_3.2: 3.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_3.3: 3.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_3.4: 3.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_3.5: 3.6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_3.6: 3.8</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_3.7: 3.15</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>comesfrom_3.8: 3.5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'><b>É</b></span></p>
+        </td>
+        <td width=148 valign=top class="Normal"> 
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_1.1: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_1.10: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_1.11: 1.70</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_1.12: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_1.2: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_1.3: 1.30</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_1.4: 1.19</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_1.5: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_1.6: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_1.7: 1.43</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_1.8: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_1.9: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_2.1: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_2.2: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_2.3: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_2.4: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_2.5: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_2.6: 2.47</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_2.7: 2.48</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_2.8: 2.49</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_2.9: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_3.1: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_3.2: 3.41</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_3.3: 3.42</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_3.4: 3.43</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_3.5: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_3.6: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_3.7: 0</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>undercond_3.8: 3.40</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'><b>É</b></span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>condid_1.19: 8</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>condid_1.30: 9</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>condid_1.43: 10</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>condid_1.70: 11</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>condid_2.47: 5</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>condid_2.48: 6</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>condid_2.49: 7</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>condid_3.40: 1</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>condid_3.41: 2</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>condid_3.42: 3</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'>condid_3.43: 4</span></p>
+          <p style='line-height:90%'><span style='font-size:8.0pt;
+  font-family:"Courier New"'><b>É</b></span></p>
+        </td>
+      </tr>
+    </table>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.6D</b></span><span
+style='font-size:14.0pt'> Ð Dump of the resource properties hash. Excerpt of information 
+      gathered about links and link conditions between resources in subroutine 
+      </span><span style='font-size:14.0pt;font-family:"Courier New"'>loadmap</span><span
+style='font-size:14.0pt'>.</span></p>
+    <span style='font-size:14.0pt;font-family:"Times New Roman"'><br clear=ALL
+style='page-break-before:always'>
+    </span> 
+    <table border=1 cellspacing=0 cellpadding=0>
+      <tr> 
+        <td width=443 valign=top class="Normal"> 
+          <p><span style='font-size:12.0pt'>0 : true:normal</span></p>
+          <p><span style='font-size:12.0pt'>1 : user.assessments[this./msu/smith/racecar.problem].status=solved:force</span></p>
+          <p><span style='font-size:12.0pt'>2 : user.assessments[this./msu/smith/racecar.problem].answer=friction:stop</span></p>
+          <p><span style='font-size:12.0pt'>3 : user.assessments[this./msu/smith/racecar.problem].answer=sliding:stop</span></p>
+          <p><span style='font-size:12.0pt'>4 : user.assessments[this./msu/smith/racecar.problem].answer=nonconstant:stop</span></p>
+          <p><span style='font-size:12.0pt'>5 : user.assessments[this./msu/korte/tests/part11.problem].status=solved:stop</span></p>
+          <p><span style='font-size:12.0pt'>6 : user.assessments[this./msu/korte/tests/part12.problem].status=solved:stop</span></p>
+          <p><span style='font-size:12.0pt'>7 : user.assessments[this./msu/korte/tests/part13.problem].status=solved:stop</span></p>
+          <p><span style='font-size:12.0pt'>8 : user.assessments[this./msu/korte/tests/pretest.problem].status=solved:stop</span></p>
+          <p><span style='font-size:12.0pt'>9 : user.assessments[this./msu/korte/tests/midterm.sequence].percent&gt;60:stop</span></p>
+          <p><span style='font-size:12.0pt'>10 : user.assessments[this./msu/korte/tests/midterm.sequence].percent&lt;10:force</span></p>
+          <p><span style='font-size:12.0pt'>11 : user.assessments[this./msu/korte/tests/final.sequence].percent&gt;60:stop</span></p>
+          <p><span style='font-size:18.0pt'><b>É</b></span></p>
+        </td>
+      </tr>
+    </table>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.7</b></span><span
+style='font-size:14.0pt'> Ð Excerpt of the dump of the condition array constructed 
+      in procedure </span><span style='font-size:14.0pt;font-family:"Courier New"'>loadmap 
+      </span><i>(the final syntax of conditions has not yet been determined)</i></p>
+    <h3><a name="_Toc514920455"></a><a name="_Toc421867118">Paths and Path Conditions</a></h3>
+    <p>The next mayor step will be to determine all possible paths and conditions 
+      leading up to a resource for access control.</p>
+    <p><span style='font-family:"Courier New"'>readmap</span> checks if the course 
+      has a start resource from its map_start entry in the resource properties 
+      (Step R2), and if does not, continue to store the two global binary data 
+      structures (<b>Steps R5,R6</b><span style='font-weight:normal'>) Ð in this 
+      special case, all resources which are part of any maps in the course are 
+      assumed to be accessible.</span></p>
+    <p>If the course has a start resource, <span style='font-family:
+"Courier New"'>readmap</span> calls the procedure <span style='font-family:
+"Courier New"'>traceroute</span> (<b>Fig. 2.3.8A</b><span style='font-weight:
+normal'>) with the following parameters (</span><b>Step R4</b><span
+style='font-weight:normal'>): The cumulative condition along this path or route 
+      so far is set to ÒtrueÓ (the map is accessible); the resource ID of the 
+      start resource of the course map; and an empty list for all resources processed 
+      so far along this route. It is again important to note that all variables 
+      except the global binary structures are local to </span><span style='font-family:"Courier New"'>traceroute</span>, 
+      since <span style='font-family:"Courier New"'>traceroute</span> will recursively 
+      call itself whenever there is a branching to follow all possible paths of 
+      the maps.</p>
+    <p><span style='font-family:"Courier New"'>traceroute</span> will establish 
+      a section within the resource properties hash that builds up all conditions 
+      leading up to a resource. <b>Fig. 2.3.8B</b><span style='font-weight:
+normal'> shows an excerpt of the final result. For example, resource 2.5, the 
+      introduction to part 1, can be reached under condition 8 (see </span><b>Fig. 
+      2.3.7</b><span style='font-weight:normal'>), meaning, after solving the 
+      pretest problem.</span></p>
+    <p><span style='font-family:"Courier New"'>traceroute</span> first checks 
+      if the resource has already been processed on this route by its resource 
+      ID (<b>Fig. 2.3.8A</b><span style='font-weight:normal'>, </span><b>Step 
+      T1</b><span style='font-weight:normal'>) Ð this test avoids that </span><span
+style='font-family:"Courier New"'>traceroute</span> runs into endless loops when 
+      the links on the map loop. Next, the resource ID is added to the list of 
+      processed resources on this route (<b>Step T2</b><span style='font-weight:normal'>).</span></p>
+    <p>The resource conditions are now ORÕd with the cumulative conditions on 
+      this route (<b>Step T3</b><span style='font-weight:normal'>) Ð the route 
+      represents another way of getting to the resource. A small routine with 
+      simplification rules for boolean expressions is called to simplify the potentially 
+      very long expression.</span></p>
+    <p>In the next step, it is determined if the resource is itself a map (<b>Step 
+      T4</b><span style='font-weight:normal'>). If it is, the exit route conditions 
+      can differ from the entry route condition by all additional conditions along 
+      the paths in the embedded maps (for non-map resources, entry and exit route 
+      conditions are the same). If however the embedded map does not have a start 
+      resource (</span><b>Step T5</b><span style='font-weight:normal'>), that 
+      is not the case Ð again, the missing of entry point to an embedded link 
+      structure is interpreted as the resources being openly accessible.</span></p>
+    <p>If the embedded map does have a start resource, <span
+style='font-family:"Courier New"'>traceroute</span> is called recursively with 
+      the current route conditions, the ID of the start resource of that map, 
+      and the list of already processed resource IDs (<b>Step T6</b><span style='font-weight:
+normal'>). Upon return, if the embedded map does not have a finish resource, the 
+      entry and exit conditions of this map are assumed to be the same (</span><b>Step 
+      T7</b><span style='font-weight:normal'>). If the map had a finish resource, 
+      the route condition so far is set to the resource condition of the finish 
+      resource of the embedded map (</span><b>Step T8</b><span style='font-weight:normal'>) 
+      Ð in order go on from here, the user would have had to reach the finish 
+      resource of the embedded map.</span></p>
+    <p>Now the route conditions are correctly set for exiting the resource and 
+      going on from here. <span style='font-family:"Courier New"'>traceroute </span>now 
+      loops over all outgoing links of the resource (<b>Step T9</b><span
+style='font-weight:normal'>). If the link does have a link condition (</span><b>Step 
+      T10</b><span style='font-weight:normal'>), then for this path, the cumulative 
+      route condition so far AND the link condition (</span><b>Step T11</b><span
+style='font-weight:normal'>). If there is no link condition, then there is no 
+      change in route conditions (</span><b>Step T12</b><span style='font-weight:
+normal'>).</span></p>
+    <p>To further process the routes along this link, <span
+style='font-family:"Courier New"'>traceroute</span> is called recursively with 
+      the resource ID of the destination resource of the link, the new route conditions, 
+      and the list of already processed resources (<b>Step T13</b><span
+style='font-weight:normal'>). </span><span style='font-family:"Courier New"'>traceroute</span> 
+      returns after processing the last outgoing link of the resource it had been 
+      called for.</p>
+    <p><b>Fig. 2.3.8B</b><span style='font-weight:normal'> shows part of the output 
+      of </span><span style='font-family:"Courier New"'>traceroute</span> for 
+      the example <b>Fig. 2.3.4</b><span style='font-weight:normal'>.</span></p>
+    <br clear=ALL
+style='page-break-before:always'>
+    <p><span style='font-size:14.0pt'><img border=0 width=432
+height=557 id="_x0000_i1035" src="handout_files/image011.jpg"></span></p>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.8A</b></span><span
+style='font-size:14.0pt'> Ð Flow chart of procedure </span><span
+style='font-size:14.0pt;font-family:"Courier New"'>traceroute</span></p>
+    <br clear=ALL
+style='page-break-before:always'>
+    <table border=1 cellspacing=0 cellpadding=0>
+      <tr> 
+        <td width=443 valign=top class="Normal"> 
+          <p>conditions_1.1: 0</p>
+          <p>conditions_1.11:</p>
+          <p>(((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1))</p>
+          <p>conditions_1.15:</p>
+          <p>((((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1)))&amp;9</p>
+          <p>conditions_1.2:</p>
+          <p>(((((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1)))&amp;9)&amp;11</p>
+          <p>conditions_1.20: 0</p>
+          <p>conditions_1.29:</p>
+          <p>((((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1)))&amp;9</p>
+          <p>conditions_1.36:</p>
+          <p>((((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1)))&amp;10</p>
+          <p>conditions_1.5: 0</p>
+          <p>conditions_1.9: 8</p>
+          <p>conditions_2.1: 8</p>
+          <p>conditions_2.12: 8</p>
+          <p>conditions_2.13: 8</p>
+          <p>conditions_2.19: 8</p>
+          <p>conditions_2.2:</p>
+          <p>(((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)))|((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1))</p>
+          <p>conditions_2.24: ((8&amp;5)|(8&amp;7)|(8&amp;6))</p>
+          <p>conditions_2.5: 8</p>
+          <p>conditions_2.6: 8</p>
+          <p>conditions_3.1: ((8&amp;5)|(8&amp;7)|(8&amp;6))</p>
+          <p>conditions_3.15: ((8&amp;5&amp;4)|(8&amp;7&amp;4)|(8&amp;6&amp;4))</p>
+          <p>conditions_3.2: ((8&amp;5&amp;2)|(8&amp;5&amp;3)|(8&amp;5&amp;4)|(8&amp;5&amp;1)|(8&amp;7&amp;2)|(8&amp;7&amp;3)|(8&amp;7&amp;4)|(8&amp;7&amp;1)|(8&amp;6&amp;2)|(8&amp;6&amp;3)|(8&amp;6&amp;4)|(8&amp;6&amp;1))</p>
+          <p>conditions_3.5: ((8&amp;5)|(8&amp;7)|(8&amp;6))</p>
+          <p>conditions_3.6: ((8&amp;5&amp;2)|(8&amp;7&amp;2)|(8&amp;6&amp;2))</p>
+          <p>conditions_3.8: ((8&amp;5&amp;3)|(8&amp;7&amp;3)|(8&amp;6&amp;3))</p>
+        </td>
+      </tr>
+    </table>
+    <p><span style='font-size:14.0pt'><b>Fig. 2.3.8B Ð </b></span><span
+style='font-size:14.0pt'>Dump of resource properties hash. Excerpt of cumulative 
+      link conditions to reach a certain resource.</span></p>
+    <h3><a name="_Toc514840865"></a><a name="_Toc514920456"></a><a
+name="_Toc421867119">Multivalued Boolean Evaluation of Link Priorities</a></h3>
+    <p>When a user accessed a resource on a map and desires to access the ÒnextÓ 
+      resource, the request is processed by a number of steps. From the data examplified 
+      in <b>Fig. 2.3.6C</b><span style='font-weight:normal'>, it is determined 
+      which outgoing links exist. From the data in </span><b>Fig. 2.3.6D</b><span style='font-weight:normal'> 
+      it is determined to which resources those links lead. For each of the resources, 
+      the expressions in </span><b>Fig. 2.3.8A</b><span style='font-weight:normal'> 
+      are evaluated as follows. Stored in the session environment is the evaluation 
+      of the table </span><b>Fig. 10</b><span
+style='font-weight:normal'>, where the boolean part is evaluated as Ò0Ó or Ò1Ó. 
+      In addition, a multivalued boolean value is computed incorporating the condition 
+      priority. A false blocking condition is assigned the value zero, all other 
+      false conditions the value 1. A true forced condition is assigned the value 
+      3, all other true conditions the value 2. </span></p>
+    <p>In the expressions <b>Fig. 2.3.8A</b><span style='font-weight:
+normal'> an Ò&amp;Ó (ÒANDÓ) is processed as the minimum (min) operation, a Ò|Ó 
+      (ÒORÓ) is processed as the maximum (max) operation. The outcome Ò0Ó means 
+      ÒblockedÓ, the outcome Ò1Ó mean Ònot recommendedÓ, the outcome Ò2Ó recommended, 
+      and the outcome Ò3Ó forced.</span></p>
+  </div>
+  <p>&nbsp;</p>
+</div>
+<br
+clear=ALL style='page-break-before:always;'>
+<div class=Section2> </div>
+</body>
+</html>
Index: doc/gutshtml/SessionThre2.html
diff -u doc/gutshtml/SessionThre2.html:1.1 doc/gutshtml/SessionThre2.html:1.2
--- doc/gutshtml/SessionThre2.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionThre2.html	Tue Jul 22 10:47:00 2003
@@ -1,105 +1,210 @@
-<html>
-<head>
-<meta name=Title content="Session Three: lonsql (Gerd)">
-<meta http-equiv=Content-Type content="text/html; charset=macintosh">
-<title>Session Three: lonsql (Gerd)</title>
-<style><!--
-.Section1
-	{page:Section1;}
-.Section2
-	{page:Section2;}
--->
-</style>
-</head>
-<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
-<div class=Section1> 
-  <h2>Session Three: lonsql (Gerd)</h2>
-  <p>This section describes issues associated with LON-CAPA and a SQL database.</p>
-  <p>The SQL database in LON-CAPA is used for catalog searches against resource 
-    metadata only. The authoritative version of the resource metadata is Ð as 
-    discussed Ð an XML-file on the normal file system (same file name as resource 
-    plus Ò.metaÓ). The SQL-database is a cache of these files, and can be reconstructed 
-    from the XML files at any time.</p>
-  <p>The current database is implemented assuming a non-adjustable architecture 
-    involving these data fields (specific to each version of a resource). </p>
-  <p> 1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
-    title </p>
-  <p> 2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
-    author </p>
-  <p> 3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
-    subject </p>
-  <p> 4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
-    notes </p>
-  <p> 5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
-    abstract </p>
-  <p> 6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
-    mime </p>
-  <p> 7.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
-    language </p>
-  <p> 8.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
-    creationdate </p>
-  <p> 9.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
-    lastrevisiondate </p>
-  <p> 10.<span style='font:7.0pt "Times New Roman"'>&nbsp; </span> owner </p>
-  <p> 11.<span style='font:7.0pt "Times New Roman"'>&nbsp; </span> copyright </p>
-  <h3><a name="_Toc421867145">Purpose within LON-CAPA</a></h3>
-  <p>LON-CAPA is meant to distribute A LOT of educational content to A LOT of 
-    people. It is ineffective to directly rely on contents within the ext2 filesystem 
-    to be speedily scanned for on-the-fly searches of content descriptions. (Simply 
-    put, it takes a cumbersome amount of time to open, read, analyze, and close 
-    thousands of files.) </p>
-  <p>The solution is to hash-index various data fields that are descriptive of 
-    the educational resources on a LON-CAPA server machine. Descriptive data fields 
-    are referred to as &quot;metadata&quot;. The question then arises as to how 
-    this metadata is handled in terms of the rest of the LON-CAPA network without 
-    burdening client and daemon processes. I now answer this question in the format 
-    of Problem and Solution below. </p>
-  <p><b>PROBLEM SITUATION:</b><span style='font-weight:normal'> If Server A wants 
-    data from Server B, Server A uses a lonc process to send a database command 
-    to a Server B lond process.</span></p>
-  <p>&nbsp;&nbsp;&nbsp; lonc= loncapa client process&nbsp;&nbsp;&nbsp; A-lonc= 
-    a lonc process on Server A</p>
-  <p>&nbsp;&nbsp;&nbsp; lond= loncapa daemon process</p>
-  <p><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    database command</span></p>
-  <p><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; A-lonc&nbsp; --------TCP/IP----------------&gt; 
-    B-lond</span></p>
-  <p>The problem emerges that A-lonc and B-lond are kept waiting for the MySQL 
-    server to &quot;do its stuff&quot;, or in other words, perform the conceivably 
-    sophisticated, data-intensive, time-sucking database transaction.&nbsp; By 
-    tying up a lonc and lond process, this significantly cripples the capabilities 
-    of LON-CAPA servers. </p>
-  <p>While commercial databases have a variety of features that ATTEMPT to deal 
-    with this, freeware databases are still experimenting and exploring with different 
-    schemes with varying degrees of performance stability.</p>
-  <p><b>THE SOLUTION:</b><span style='font-weight:normal'> A separate daemon process 
-    was created that B-lond works with to handle database requests.&nbsp; This 
-    daemon process is called &quot;lonsql&quot;.</span></p>
-  <p>&nbsp; So,</p>
-  <p><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    database command</span></p>
-  <p><span style='font-family:"Courier New"'>&nbsp; A-lonc&nbsp; ---------TCP/IP-----------------&gt; 
-    B-lond =====&gt; B-lonsql</span></p>
-  <p><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &lt;---------------------------------/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    |</span></p>
-  <p><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &quot;ok, I'll get back to you...&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    |</span></p>
-  <p><span style='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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    |</span></p>
-  <p><span style='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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/</span></p>
-  <p><span style='font-family:"Courier New"'>&nbsp; A-lond&nbsp; &lt;-------------------------------&nbsp; 
-    B-lonc&nbsp;&nbsp; &lt;======</span></p>
-  <p><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-    &quot;Guess what? I have the result!&quot;</span></p>
-  <p>Of course, depending on success or failure, the messages may vary, but the 
-    principle remains the same where a separate pool of children processes (lonsql's) 
-    handle the MySQL database manipulations.</p>
-</div>
-<br
-clear=ALL style='page-break-before:always;'>
-<div class=Section2> </div>
-</body>
-</html>
+<html>
+
+<head>
+
+<meta name=Title content="Session Three: lonsql (Gerd)">
+
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+
+<title>Session Three: lonsql (Gerd)</title>
+
+<style><!--
+
+.Section1
+
+	{page:Section1;}
+
+.Section2
+
+	{page:Section2;}
+
+-->
+
+</style>
+
+</head>
+
+<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
+
+<div class=Section1> 
+
+  <h2>Session Three: lonsql (Gerd)</h2>
+
+  <p>This section describes issues associated with LON-CAPA and a SQL database.</p>
+
+  <p>The SQL database in LON-CAPA is used for catalog searches against resource 
+
+    metadata only. The authoritative version of the resource metadata is Ð as 
+
+    discussed Ð an XML-file on the normal file system (same file name as resource 
+
+    plus Ò.metaÓ). The SQL-database is a cache of these files, and can be reconstructed 
+
+    from the XML files at any time.</p>
+
+  <p>The current database is implemented assuming a non-adjustable architecture 
+
+    involving these data fields (specific to each version of a resource). </p>
+
+  <p> 1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
+
+    title </p>
+
+  <p> 2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
+
+    author </p>
+
+  <p> 3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
+
+    subject </p>
+
+  <p> 4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
+
+    notes </p>
+
+  <p> 5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
+
+    abstract </p>
+
+  <p> 6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
+
+    mime </p>
+
+  <p> 7.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
+
+    language </p>
+
+  <p> 8.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
+
+    creationdate </p>
+
+  <p> 9.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
+
+    lastrevisiondate </p>
+
+  <p> 10.<span style='font:7.0pt "Times New Roman"'>&nbsp; </span> owner </p>
+
+  <p> 11.<span style='font:7.0pt "Times New Roman"'>&nbsp; </span> copyright </p>
+
+  <h3><a name="_Toc421867145">Purpose within LON-CAPA</a></h3>
+
+  <p>LON-CAPA is meant to distribute A LOT of educational content to A LOT of 
+
+    people. It is ineffective to directly rely on contents within the ext2 filesystem 
+
+    to be speedily scanned for on-the-fly searches of content descriptions. (Simply 
+
+    put, it takes a cumbersome amount of time to open, read, analyze, and close 
+
+    thousands of files.) </p>
+
+  <p>The solution is to hash-index various data fields that are descriptive of 
+
+    the educational resources on a LON-CAPA server machine. Descriptive data fields 
+
+    are referred to as &quot;metadata&quot;. The question then arises as to how 
+
+    this metadata is handled in terms of the rest of the LON-CAPA network without 
+
+    burdening client and daemon processes. I now answer this question in the format 
+
+    of Problem and Solution below. </p>
+
+  <p><b>PROBLEM SITUATION:</b><span style='font-weight:normal'> If Server A wants 
+
+    data from Server B, Server A uses a lonc process to send a database command 
+
+    to a Server B lond process.</span></p>
+
+  <p>&nbsp;&nbsp;&nbsp; lonc= loncapa client process&nbsp;&nbsp;&nbsp; A-lonc= 
+
+    a lonc process on Server A</p>
+
+  <p>&nbsp;&nbsp;&nbsp; lond= loncapa daemon process</p>
+
+  <p><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    database command</span></p>
+
+  <p><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; A-lonc&nbsp; --------TCP/IP----------------&gt; 
+
+    B-lond</span></p>
+
+  <p>The problem emerges that A-lonc and B-lond are kept waiting for the MySQL 
+
+    server to &quot;do its stuff&quot;, or in other words, perform the conceivably 
+
+    sophisticated, data-intensive, time-sucking database transaction.&nbsp; By 
+
+    tying up a lonc and lond process, this significantly cripples the capabilities 
+
+    of LON-CAPA servers. </p>
+
+  <p>While commercial databases have a variety of features that ATTEMPT to deal 
+
+    with this, freeware databases are still experimenting and exploring with different 
+
+    schemes with varying degrees of performance stability.</p>
+
+  <p><b>THE SOLUTION:</b><span style='font-weight:normal'> A separate daemon process 
+
+    was created that B-lond works with to handle database requests.&nbsp; This 
+
+    daemon process is called &quot;lonsql&quot;.</span></p>
+
+  <p>&nbsp; So,</p>
+
+  <p><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    database command</span></p>
+
+  <p><span style='font-family:"Courier New"'>&nbsp; A-lonc&nbsp; ---------TCP/IP-----------------&gt; 
+
+    B-lond =====&gt; B-lonsql</span></p>
+
+  <p><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &lt;---------------------------------/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    |</span></p>
+
+  <p><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &quot;ok, I'll get back to you...&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    |</span></p>
+
+  <p><span style='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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    |</span></p>
+
+  <p><span style='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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/</span></p>
+
+  <p><span style='font-family:"Courier New"'>&nbsp; A-lond&nbsp; &lt;-------------------------------&nbsp; 
+
+    B-lonc&nbsp;&nbsp; &lt;======</span></p>
+
+  <p><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+    &quot;Guess what? I have the result!&quot;</span></p>
+
+  <p>Of course, depending on success or failure, the messages may vary, but the 
+
+    principle remains the same where a separate pool of children processes (lonsql's) 
+
+    handle the MySQL database manipulations.</p>
+
+</div>
+
+<br
+
+clear=ALL style='page-break-before:always;'>
+
+<div class=Section2> </div>
+
+</body>
+
+</html>
+
Index: doc/gutshtml/SessionThree.html
diff -u doc/gutshtml/SessionThree.html:1.1 doc/gutshtml/SessionThree.html:1.2
--- doc/gutshtml/SessionThree.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionThree.html	Tue Jul 22 10:47:00 2003
@@ -1 +1,499 @@
-<html><head><meta name=Titlecontent=" Session Three: Roles and lonnet/loncommon useful functions (Guy)"><meta http-equiv=Content-Type content="text/html; charset=macintosh"><link rel=Edit-Time-Data href="Session%20Three_files/editdata.mso"><title> Session Three: Roles and lonnet/loncommon useful functions (Guy)</title><style><!--.Section1	{page:Section1;}.Section2	{page:Section2;}--></style></head><body bgcolor=#FFFFFF link=blue vlink=purple class="Normal" lang=EN-US><div class=Section1><span style='font-size:12.0pt;font-family:Arial;'><b><i><br clear=ALL style='page-break-before:always'>  </i></b></span>   <h2><a name="_Toc421867053">Session Three: Roles and lonnet/loncommon useful     functions (Guy)</a></h2>  <h3><a name=name></a><a name="_Toc421867054">NAME</a></h3>  <p>Apache::lonnet - Subroutines to ask questions about things in the network.</p>  <div align=center style='text-align:center'>     <hr size=2 width="100%" align=center>  </div>  <h3><a name=synopsis></a><a name="_Toc421867055">SYNOPSIS</a></h3>  <p>Invoked by other LON-CAPA modules, when they need to talk to or about objects     in the network.</p>  <pre>&nbsp; &amp;Apache::lonnet::SUBROUTINENAME(ARGUMENTS);</pre>  <p>Common parameters:</p>  <ul type=disc>    <li>$uname : an internal username (if $cname expecting a course Id specifically)     </li>    <li>$udom : a domain (if $cdom expecting a course's domain specifically) </li>    <li>$symb : a resource instance identifier </li>    <li>$namespace : the name of a .db file that contains the data needed or being       set. </li>  </ul>  <div align=center style='text-align:center'>     <hr size=2 width="100%" align=center>  </div>  <h3><a name=introduction></a><a name="_Toc421867056">INTRODUCTION</a></h3>  <p>This module provides subroutines which interact with the lonc/lond (TCP)     network layer of LON-CAPA. And Can be used to ask about - classes - users     - resources</p>  <p>For many of these objects you can also use this to store data about them     or modify them in various ways.</p>  <p>This is part of the LearningOnline Network with CAPA project described at     <ahref="http://www.lon-capa.org./">http://www.lon-capa.org.</a></p>  <div align=center style='text-align:center'>     <hr size=2 width="100%" align=center>  </div>  <h3><a name="return_messages"></a><a name="_Toc421867057">RETURN MESSAGES</a></h3>  <ul type=disc>    <li>con_lost : unable to contact remote host </li>    <li>con_delayed : unable to contact remote host, message will be delivered       when the connection is brought back up </li>    <li>con_failed : unable to contact remote host and unable to save message       for later delivery </li>    <li>error: : an error a occured, a description of the error follows the :     </li>    <li>no_such_host : unable to fund a host associated with the user/domain that       was requested </li>  </ul>  <div align=center style='text-align:center'>     <hr size=2 width="100%" align=center>  </div>  <h3><a name="session_environment_functions"></a><a name="_Toc421867058">Session     Environment Functions</a></h3>  <ul type=disc>    <li><code><span style='font-family:     Courier'>appenv(%hash)</span></code> : the value of %hash is written to the       user envirnoment file, and will be restored for each access this user makes       during this session, also modifies the %ENV for the current process </li>    <li><code><span style='font-family:     Courier'>delenv($regexp)</span></code> : removes all items from the session       environment file that matches the regular expression in $regexp. The values       are also delted from the current processes %ENV. </li>  </ul>  <h3><a name="user_information"></a><a name="_Toc421867059">User Information</a></h3>  <ul type=disc>    <li><code><span style='font-family:     Courier'>queryauthenticate($uname,$udom)</span></code> : try to determine       user's current authentication scheme </li>    <li><code><span style='font-family:     Courier'>authenticate($uname,$upass,$udom)</span></code> : try to authenticate       user from domain's lib servers (first use the current one), $upass should       be the users password </li>    <li><code><span style='font-family:     Courier'>homeserver($uname,$udom)</span></code> : find the server which has       the user's directory and files (there must be only one) . This caches the       answer and also caches if there is an error.</li>    <li><code><span style='font-family:     Courier'>idget($udom,@ids)</span></code> : find the usernames behind a list       of IDs (IDs are a unique resource in a domain, there must be only 1 ID per       username, and only 1 username per ID in a specific domain) (returns hash:       id=&gt;name,id=&gt;name) </li>    <li><code><span style='font-family:     Courier'>idrget($udom,@unames)</span></code> : find the IDs behind a list       of usernames (returns hash: name=&gt;id,name=&gt;id) </li>    <li><code><span style='font-family:     Courier'>idput($udom,%ids)</span></code> : store away a list of names and       associated IDs </li>    <li><code><span style='font-family:     Courier'>rolesinit($udom,$username,$authhost)</span></code> : get user privileges     </li>    <li><code><span style='font-family:     Courier'>usection($udom,$uname,$cname)</span></code> : finds the section       of student in the course $cname, return section name/number or '' for ``not       in course'' and '-1' for ``no section'' </li>    <li><code><span style='font-family:     Courier'>userenvironment($udom,$uname,@what)</span></code> : gets the values       of the keys passed in @what from the requested user's environment, returns       a hash </li>  </ul>  <h3><a name="user_roles"></a><a name="_Toc421867060">User Roles</a></h3>  <ul type=disc>    <li><code><span style='font-family:     Courier'>allowed($priv,$uri)</span></code> : check for a user privilege;       returns codes for allowed actions F: full access U,I,K: authentication modes       (cxx only) '': forbidden 1: user needs to choose course 2: browse allowed     </li>    <li><code><span style='font-family:     Courier'>definerole($rolename,$sysrole,$domrole,$courole)</span></code> :       define role; define a custom role rolename set privileges in format of lonTabs/roles.tab       for system, domain, and course level </li>    <li><code><span style='font-family:     Courier'>plaintext($short)</span></code> : return value in %prp hash (rolesplain.tab);       plain text explanation of a user role term </li>  </ul>  <h3><a name="user_modification"></a><a name="_Toc421867061">User Modification</a></h3>  <ul type=disc>    <li><code><span     style='font-family:Courier'>assignrole($udom,$uname,$url,$role,$end,$start)</span></code>       : assign role; give a role to a user for the level given by URL. Optional       start and end dates (leave empty string or zero for ``no date'') </li>    <li><span style='font-family:     "Courier New"'>changepass($uname,$udom,$currentpass,$newpass,$server):</span>       attempts to change a users, password, possible return values are: <span     style='font-family:"Courier New"'>ok, pwchange_failure, non_authorized, auth_mode_error,       unknown_user, refused</span></li>    <li><code><span     style='font-family:Courier'>modifyuserauth($udom,$uname,$umode,$upass)</span></code>       : modify user authentication </li>    <li><code><span     style='font-family:Courier'>modifyuser($udom,$uname,$uid,$umode,$upass,$first,$middle,$last,$gene)</span></code>       : modify user </li>    <li>modifystudent($udom,$uname,$uid,$umode,$upass,$first,$middle,$last,$gene,$usec,       $end,$start) : modify student </li>    <li><code><span     style='font-family:Courier'>assigncustomrole($udom,$uname,$url,$rdom,$rnam,$rolename,$end,$start)</span></code>       : assign custom role; give a custom role to a user for the level given by       URL. Specify name and domain of role author, and role name </li>    <li><code><span     style='font-family:Courier'>revokerole($udom,$uname,$url,$role)</span></code>       : revoke a role for url </li>    <li><code><span     style='font-family:Courier'>revokecustomrole($udom,$uname,$url,$role)</span></code>       : revoke a custom role </li>  </ul>  <h3><a name="course_infomation"></a><a name="_Toc421867062">Course Infomation</a></h3>  <ul type=disc>    <li><code><span style='font-family:     Courier'>coursedescription($courseid)</span></code> : course description     </li>    <li><span style='font-family:     "Courier New"'>courseresdata($coursenum,$coursedomain,@which) :</span> request       for current parameter setting for a specific course, @what should be a list       of parameters to ask about. This routine caches answers for 5 minutes.</li>  </ul>  <h3><a name="course_modification"></a><a name="_Toc421867063">Course Modification</a></h3>  <ul type=disc>    <li><code><span     style='font-family:Courier'>writecoursepref($courseid,%prefs)</span></code>       : write preferences (environment database) for a course </li>    <li><code><span     style='font-family:Courier'>createcourse($udom,$description,$url)</span></code>       : make/modify course </li>  </ul>  <h3><a name="resource_subroutines"></a><a name="_Toc421867064">Resource Subroutines</a></h3>  <ul type=disc>    <li><code><span style='font-family:     Courier'>subscribe($fname)</span></code> : subscribe to a resource, returns       URL if possible (probably should use repcopy instead) </li>    <li><code><span style='font-family:     Courier'>repcopy($filename)</span></code> : subscribes to the requested file,       and attempts to replicate from the owning library server, Might return HTTP_SERVICE_UNAVAILABLE,       HTTP_NOT_FOUND, FORBIDDEN, OK, or HTTP_BAD_REQUEST, also attempts to grab       the metadata for the resource. Expects the local filesystem pathname (/home/httpd/html/res/....)     </li>  </ul>  <h3><a name="resource_information"></a><a name="_Toc421867065">Resource Information</a></h3>  <ul type=disc>    <li>EXT($varname,$symb,$udom, $uname) : evaluates and returns the value of       a vairety of different possible values, $varname should be a request string,       and the other parameters can be used to specify who and what one is asking       about. </li>  </ul>  <p><span style='font-size:10.0pt'>Possible values for $varname are environment.lastname     (or other item from the environment hash), user.name (or someother aspect     about the user), resource.0.maxtries (or some other part and parameter of     a resource)</span></p>  <ul type=disc>    <li><code><span     style='font-family:Courier'>directcondval($number)</span></code> : get current       value of a condition; reads from a state string </li>    <li><code><span     style='font-family:Courier'>condval($condidx)</span></code> : value of condition       index based on state </li>    <li><code><span     style='font-family:Courier'>metadata($uri,$what,$liburi,$prefix,$depthcount)</span></code>       : request a resource's metadata, $what should be either a specific key,       or either 'keys' (to get a list of possible keys) or 'packages' to get a       list of packages that this resource currently uses, the last 3 arguments       are only used internally for recursive metadata. This function automatically       caches all requests</li>    <li><code><span     style='font-family:Courier'>metadata_query($query,$custom,$customshow)</span></code>       : make a metadata query against the network of library servers; returns       file handle of where SQL and regex results will be stored for query</li>    <li><code><span     style='font-family:Courier'>symbread($filename)</span></code> : return symbolic       list entry (filename argument optional); returns the data handle </li>    <li><span style='font-family:     "Courier New"'>symbverify($symb,$thisfn):</span> verifies that $symb actually       exists and is a possible symb for the URL in $thisfn, returns a 1 on success,       0 on failure, user must be in a course, as it assumes the existance of the       course init hash, and uses $ENV('request.course.id'}</li>    <li><span style='font-family:     "Courier New"'>symbclean($symb):</span> removes versions numbers from a symb,       returns the cleaned symb</li>    <li><span style='font-family:     "Courier New"'>is_on_map($uri) :</span> checks if the $uri is somewhere on       the current course map, user must be in a course for it to work</li>    <li><code><span     style='font-family:Courier'>numval($salt)</span></code> : return random seed       value (addend for rndseed) </li>    <li><code><span     style='font-family:Courier'>rndseed($symb,$courseid,$udom,$username)</span></code>       : create a random sum; returns a random seed, all arguments are optional,       if they aren't sent it uses the environment to derive them. Note: if symb       isn't sent and it can't get one from &amp;symbread it will use the current       time as its return value </li>    <li><code><span     style='font-family:Courier'>ireceipt($funame,$fudom,$fucourseid,$fusymb)</span></code>       : return unique, unfakeable, receipt </li>    <li><code><span     style='font-family:Courier'>receipt()</span></code> : API to ireceipt working       off of ENV values; given out to users </li>    <li><code><span     style='font-family:Courier'>countacc($url)</span></code> : count the number       of accesses to a given URL </li>    <li><code><span     style='font-family:Courier'>checkout($symb,$tuname,$tudom,$tcrsid)</span></code>       : creates a record of a user having looked at an item, most likely printed       out or otherwise using a resource </li>    <li><code><span     style='font-family:Courier'>checkin($token)</span></code> : updates that       a resource has beeen returned (a hard copy version for instance) and returns       the data that $token was Checkout with ($symb, $tuname, $tudom, and $tcrsid)     </li>    <li><code><span     style='font-family:Courier'>expirespread($uname,$udom,$stype,$usymb)</span></code>       : set expire date for spreadsheet </li>    <li><code><span     style='font-family:Courier'>devalidate($symb)</span></code> : devalidate       temporary spreadsheet calculations, forcing spreadsheet to reevaluate the       resource scores next time. </li>  </ul>  <h3><a name="storing/retreiving_data"></a><a name="_Toc421867066"><spanstyle='"storing\/retreiving_data"'>Storing/Retrieving Data</span></a></h3>  <ul type=disc>    <li><code><span     style='font-family:Courier'>store($storehash,$symb,$namespace,$udom,$uname)</span></code>       : stores hash permanently for this url; hashref needs to be given and should       be a \%hashname; the remaining args aren't required and if they aren't passed       or are '' they will be derived from the ENV </li>    <li><code><span     style='font-family:Courier'>cstore($storehash,$symb,$namespace,$udom,$uname)</span></code>       : same as store but uses critical subroutine </li>    <li><code><span     style='font-family:Courier'>restore($symb,$namespace,$udom,$uname)</span></code>       : returns hash for this symb; all args are optional </li>    <li><code><span     style='font-family:Courier'>tmpstore($storehash,$symb,$namespace,$udom,$uname)</span></code>       : storage that works very similar to store/cstore, but all data is stored       in a temporary location and can be reset using tmpreset, $storehash should       be a hash reference, returns nothing on success </li>    <li><code><span     style='font-family:Courier'>tmprestore($symb,$namespace,$udom,$uname)</span></code>       : storage that works very similar to restore, but all data is stored in       a temporary location and can be reset using tmpreset. Returns a hash of       values on success, error string otherwise. </li>    <li><code><span     style='font-family:Courier'>tmpreset($symb,$namespace,$udom,$uname)</span></code>       : temporary storage reset, deltes all keys for $symb form the temporary       storage hash. </li>    <li><code><span     style='font-family:Courier'>get($namespace,$storearr,$udom,$uname)</span></code>       : returns hash with keys from array reference filled in from namesp ($udomain       and $uname are optional) </li>    <li><code><span     style='font-family:Courier'>del($namespace,$storearr,$udom,$uname)</span></code>       : deletes keys out of array from namesp ($udomain and $uname are optional)     </li>    <li><code><span     style='font-family:Courier'>dump($namespace,$udom,$uname,$regexp)</span></code>       : dumps the complete (or key matching regexp) namespace into a hash ($udomain,       $uname and $regexp are optional) </li>    <li><code><span     style='font-family:Courier'>put($namespace,$storehash,$udomain,$uname)</span></code>       : stores hash in namesp ($udomain and $uname are optional) </li>    <li><code><span     style='font-family:Courier'>cput($namespace,$storehash,$udomain,$uname)</span></code>       : critical put ($udomain and $uname are optional) </li>    <li><code><span     style='font-family:Courier'>eget($namespace,$storearr,$udomain,$uname)</span></code>       : returns hash with keys from array reference filled in from namesp (encrypts       the return communication) ($udomain and $uname are optional) </li>    <li><code><span     style='font-family:Courier'>log($udom,$name,$home,$message)</span></code>       : write to permanent log for user; use critical subroutine </li>  </ul>  <h3><a name="network_status_functions"></a><a name="_Toc421867067">Network Status     Functions</a></h3>  <ul type=disc>    <li><code><span     style='font-family:Courier'>dirlist($uri)</span></code> : return directory       list based on URI </li>    <li><code><span     style='font-family:Courier'>spareserver()</span></code> : find server with       least workload from spare.tab </li>  </ul>  <h3><a name="apache_request"></a><a name="_Toc421867068">Apache Request</a></h3>  <ul type=disc>    <li><code><span     style='font-family:Courier'>ssi($url,%hash)</span></code> : server side include,       does a complete request cycle on url to localhost, posts hash </li>  </ul>  <h3><a name="data_to_string_to_data"></a><a name="_Toc421867069">Data to String     to Data</a></h3>  <ul type=disc>    <li><code><span     style='font-family:Courier'>hash2str(%hash)</span></code> : convert a hash       into a string complete with escaping and '=' and '&amp;' separators, supports       elements that are arrayrefs and hashrefs </li>    <li><code><span     style='font-family:Courier'>hashref2str($hashref)</span></code> : convert       a hashref into a string complete with escaping and '=' and '&amp;' separators,       supports elements that are arrayrefs and hashrefs </li>    <li><code><span     style='font-family:Courier'>arrayref2str($arrayref)</span></code> : convert       an arrayref into a string complete with escaping and '&amp;' separators,       supports elements that are arrayrefs and hashrefs </li>    <li><code><span     style='font-family:Courier'>str2hash($string)</span></code> : convert string       to hash using unescaping and splitting on '=' and '&amp;', supports elements       that are arrayrefs and hashrefs </li>    <li><code><span     style='font-family:Courier'>str2array($string)</span></code> : convert string       to hash using unescaping and splitting on '&amp;', supports elements that       are arrayrefs and hashrefs </li>  </ul>  <h3><a name="logging_routines"></a><a name="_Toc421867070">Logging Routines</a></h3>  <p>These routines allow one to make log messages in the lonnet.log and lonnet.perm     logfiles.</p>  <ul type=disc>    <li><code><span     style='font-family:Courier'>logtouch()</span></code> : make sure the logfile,       lonnet.log, exists </li>    <li><code><span     style='font-family:Courier'>logthis()</span></code> : append message to the       normal lonnet.log file, it gets preiodically rolled over and deleted. </li>    <li><code><span     style='font-family:Courier'>logperm()</span></code> : append a permanent       message to lonnet.perm.log, this log file never gets deleted by any automated       portion of the system, only messages of critical importance should go in       here. </li>  </ul>  <h3><a name="general_helper_routines"></a><a name="_Toc421867071">General File     Helper Routines</a></h3>  <ul type=disc>    <li><code><span     style='font-family:Courier'>getfile($file)</span></code> : serves up a file,       returns the contents of a file or -1; replicates and subscribes to the file     </li>    <li><code><span     style='font-family:Courier'>filelocation($dir,$file)</span></code> : returns       file system location of a file based on URI; meant to be ``fairly clean''       absolute reference, $dir is a directory that relative $file lookups are       to looked in ($dir of /a/dir and a file of ../bob will become /a/bob) </li>    <li><code><span     style='font-family:Courier'>hreflocation($dir,$file)</span></code> : returns       file system location or a URL; same as filelocation except for hrefs </li>    <li><code><span     style='font-family:Courier'>declutter()</span></code> : declutters URLs (remove       docroot, beginning slashes, 'res' etc) </li>  </ul>  <h3><a name="_Toc421867072">HTTP Helper Routines</a></h3>  <ul type=disc>    <li><code><span     style='font-family:Courier'>escape()</span></code> : unpack non-word characters       into CGI-compatible hex codes </li>    <li><code><span     style='font-family:Courier'>unescape()</span></code> : pack CGI-compatible       hex codes into actual non-word ASCII character </li>  </ul></div><h1>&nbsp;</h1><h3><a name="underlying_communication_routines_(shoul"></a><aname="_Toc421867073">Private: Underlying communication routines (Shouldn't call)</a></h3><ul type=disc>  <li><code><span style='font-family:     Courier'>subreply()</span></code> : tries to pass a message to lonc, returns     con_lost if incapable </li>  <li><code><span style='font-family:     Courier'>reply()</span></code> : uses subreply to send a message to remote     machine, logs all failures </li>  <li><code><span style='font-family:     Courier'>critical()</span></code> : passes a critical message to another     server; if cannot get through then place message in connection buffer directory     and returns con_delayed, if incapable of saving message, returns con_failed   </li>  <li><code><span style='font-family:     Courier'>reconlonc()</span></code> : tries to reconnect lonc client processes.   </li></ul><h3><a name="resource_access_logging"></a><a name="_Toc421867074">Private: Resource   Access Logging</a></h3><ul type=disc>  <li><code><span style='font-family:     Courier'>flushcourselogs()</span></code> : flush (save) buffer logs and access     logs </li>  <li><code><span style='font-family:     Courier'>courselog($what)</span></code> : save message for course in hash   </li>  <li><code><span style='font-family:     Courier'>courseacclog($what)</span></code> : save message for course using     &amp;courselog(). Perform special processing for specific resource types (problems,     exams, quizzes, etc). </li>  <li><code><span style='font-family:     Courier'>goodbye()</span></code> : flush course logs and log shutting down;     it is called in srm.conf as a PerlChildExitHandler </li></ul><h3><a name=other></a><a name="_Toc421867075">Private: Other</a></h3><p><code><span style='font-family:"Courier New"'>symblist($mapname,%newhash)</span></code><spanstyle='font-family:"Courier New"'> :</span> update symbolic storage links </p><h3><a name="_Toc421867076">Coding Guidelines</a></h3><p class=H5><span style='layout-grid-mode:both'>Things to keep in mind while coding handlers for LON-CAPA </span></p><p><spanstyle='font-size:14.0pt'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;   </span></span><span style='font-size:14.0pt'>DON'T write to Access machine disks   with permanent data, use store/restore </span></p><p><spanstyle='font-size:14.0pt'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;   </span></span><span style='font-size:14.0pt'>DON'T </span><spanstyle='font-size:14.0pt;font-family:"Courier New"'>use print()</span><spanstyle='font-size:14.0pt'>, use </span><span style='font-size:14.0pt;font-family:"Courier New"'>$request-&gt;print()</span><span style='font-size:14.0pt'> </span></p><p><spanstyle='font-size:14.0pt'>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;   </span></span><span style='font-size:14.0pt'>DON'T launch children </span></p><p><spanstyle='font-size:14.0pt'>4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;   </span></span><span style='font-size:14.0pt'>DO use </span><spanstyle='font-size:14.0pt;font-family:"Courier New"'>$Apache::lonnet::perlvar{'lonDaemons'}/tmp</span><spanstyle='font-size:14.0pt'> for temporary data. </span></p><p><spanstyle='font-size:14.0pt'>5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;   </span></span><span style='font-size:14.0pt'>DO query the return value of every   file operation. </span></p><p><spanstyle='font-size:14.0pt'>6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;   </span></span><span style='font-size:14.0pt'>DO </span><span style='font-size:14.0pt;font-family:"Courier New"'>use strict;</span><span style='font-size:14.0pt'> </span></p><p><spanstyle='font-size:14.0pt'>7.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;   </span></span><span style='font-size:14.0pt'>DO </span><span style='font-size:14.0pt;font-family:"Courier New"'>use strict;</span><span style='font-size:14.0pt'> </span></p><p><spanstyle='font-size:14.0pt'>8.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;   </span></span><span style='font-size:14.0pt'>DO familiarize your self with the   functions in </span><span style='font-size:14.0pt;font-family:"Courier New"'>lonnet.pm</span><spanstyle='font-size:14.0pt'> and use them to communicate with other servers and when   you handler needs to ask questions. </span></p><p>9.<spanstyle='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span><spanstyle='font-size:14.0pt'>DON'T use </span><span style='font-size:14.0pt;font-family:"Courier New"'>&amp;Apache::lonnet::reply()</span><spanstyle='font-size:14.0pt'> </span></p><brclear=ALL style='page-break-before:always;'><div class=Section2> </div></body></html>
\ No newline at end of file
+<html>
+<head>
+<meta name=Title
+content=" Session Three: Roles and lonnet/loncommon useful functions (Guy)">
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+<link rel=Edit-Time-Data href="Session%20Three_files/editdata.mso">
+<title> Session Three: Roles and lonnet/loncommon useful functions (Guy)</title>
+<style><!--
+.Section1
+	{page:Section1;}
+.Section2
+	{page:Section2;}
+-->
+</style>
+</head>
+<body bgcolor=#FFFFFF link=blue vlink=purple class="Normal" lang=EN-US>
+<div class=Section1><span style='font-size:12.0pt;font-family:Arial;'><b><i><br clear=ALL style='page-break-before:always'>
+  </i></b></span> 
+  <h2><a name="_Toc421867053">Session Three: Roles and lonnet/loncommon useful 
+    functions (Guy)</a></h2>
+  <h3><a name=name></a><a name="_Toc421867054">NAME</a></h3>
+  <p>Apache::lonnet - Subroutines to ask questions about things in the network.</p>
+  <div align=center style='text-align:center'> 
+    <hr size=2 width="100%" align=center>
+  </div>
+  <h3><a name=synopsis></a><a name="_Toc421867055">SYNOPSIS</a></h3>
+  <p>Invoked by other LON-CAPA modules, when they need to talk to or about objects 
+    in the network.</p>
+  <pre>&nbsp; &amp;Apache::lonnet::SUBROUTINENAME(ARGUMENTS);</pre>
+  <p>Common parameters:</p>
+  <ul type=disc>
+    <li>$uname : an internal username (if $cname expecting a course Id specifically) 
+    </li>
+    <li>$udom : a domain (if $cdom expecting a course's domain specifically) </li>
+    <li>$symb : a resource instance identifier </li>
+    <li>$namespace : the name of a .db file that contains the data needed or being 
+      set. </li>
+  </ul>
+  <div align=center style='text-align:center'> 
+    <hr size=2 width="100%" align=center>
+  </div>
+  <h3><a name=introduction></a><a name="_Toc421867056">INTRODUCTION</a></h3>
+  <p>This module provides subroutines which interact with the lonc/lond (TCP) 
+    network layer of LON-CAPA. And Can be used to ask about - classes - users 
+    - resources</p>
+  <p>For many of these objects you can also use this to store data about them 
+    or modify them in various ways.</p>
+  <p>This is part of the LearningOnline Network with CAPA project described at 
+    <a
+href="http://www.lon-capa.org./">http://www.lon-capa.org.</a></p>
+  <div align=center style='text-align:center'> 
+    <hr size=2 width="100%" align=center>
+  </div>
+  <h3><a name="return_messages"></a><a name="_Toc421867057">RETURN MESSAGES</a></h3>
+  <ul type=disc>
+    <li>con_lost : unable to contact remote host </li>
+    <li>con_delayed : unable to contact remote host, message will be delivered 
+      when the connection is brought back up </li>
+    <li>con_failed : unable to contact remote host and unable to save message 
+      for later delivery </li>
+    <li>error: : an error a occured, a description of the error follows the : 
+    </li>
+    <li>no_such_host : unable to fund a host associated with the user/domain that 
+      was requested </li>
+  </ul>
+  <div align=center style='text-align:center'> 
+    <hr size=2 width="100%" align=center>
+  </div>
+  <h3><a name="session_environment_functions"></a><a name="_Toc421867058">Session 
+    Environment Functions</a></h3>
+  <ul type=disc>
+    <li><code><span style='font-family:
+     Courier'>appenv(%hash)</span></code> : the value of %hash is written to the 
+      user envirnoment file, and will be restored for each access this user makes 
+      during this session, also modifies the %ENV for the current process </li>
+    <li><code><span style='font-family:
+     Courier'>delenv($regexp)</span></code> : removes all items from the session 
+      environment file that matches the regular expression in $regexp. The values 
+      are also delted from the current processes %ENV. </li>
+  </ul>
+  <h3><a name="user_information"></a><a name="_Toc421867059">User Information</a></h3>
+  <ul type=disc>
+    <li><code><span style='font-family:
+     Courier'>queryauthenticate($uname,$udom)</span></code> : try to determine 
+      user's current authentication scheme </li>
+    <li><code><span style='font-family:
+     Courier'>authenticate($uname,$upass,$udom)</span></code> : try to authenticate 
+      user from domain's lib servers (first use the current one), $upass should 
+      be the users password </li>
+    <li><code><span style='font-family:
+     Courier'>homeserver($uname,$udom)</span></code> : find the server which has 
+      the user's directory and files (there must be only one) . This caches the 
+      answer and also caches if there is an error.</li>
+    <li><code><span style='font-family:
+     Courier'>idget($udom,@ids)</span></code> : find the usernames behind a list 
+      of IDs (IDs are a unique resource in a domain, there must be only 1 ID per 
+      username, and only 1 username per ID in a specific domain) (returns hash: 
+      id=&gt;name,id=&gt;name) </li>
+    <li><code><span style='font-family:
+     Courier'>idrget($udom,@unames)</span></code> : find the IDs behind a list 
+      of usernames (returns hash: name=&gt;id,name=&gt;id) </li>
+    <li><code><span style='font-family:
+     Courier'>idput($udom,%ids)</span></code> : store away a list of names and 
+      associated IDs </li>
+    <li><code><span style='font-family:
+     Courier'>rolesinit($udom,$username,$authhost)</span></code> : get user privileges 
+    </li>
+    <li><code><span style='font-family:
+     Courier'>usection($udom,$uname,$cname)</span></code> : finds the section 
+      of student in the course $cname, return section name/number or '' for ``not 
+      in course'' and '-1' for ``no section'' </li>
+    <li><code><span style='font-family:
+     Courier'>userenvironment($udom,$uname,@what)</span></code> : gets the values 
+      of the keys passed in @what from the requested user's environment, returns 
+      a hash </li>
+  </ul>
+  <h3><a name="user_roles"></a><a name="_Toc421867060">User Roles</a></h3>
+  <ul type=disc>
+    <li><code><span style='font-family:
+     Courier'>allowed($priv,$uri)</span></code> : check for a user privilege; 
+      returns codes for allowed actions F: full access U,I,K: authentication modes 
+      (cxx only) '': forbidden 1: user needs to choose course 2: browse allowed 
+    </li>
+    <li><code><span style='font-family:
+     Courier'>definerole($rolename,$sysrole,$domrole,$courole)</span></code> : 
+      define role; define a custom role rolename set privileges in format of lonTabs/roles.tab 
+      for system, domain, and course level </li>
+    <li><code><span style='font-family:
+     Courier'>plaintext($short)</span></code> : return value in %prp hash (rolesplain.tab); 
+      plain text explanation of a user role term </li>
+  </ul>
+  <h3><a name="user_modification"></a><a name="_Toc421867061">User Modification</a></h3>
+  <ul type=disc>
+    <li><code><span
+     style='font-family:Courier'>assignrole($udom,$uname,$url,$role,$end,$start)</span></code> 
+      : assign role; give a role to a user for the level given by URL. Optional 
+      start and end dates (leave empty string or zero for ``no date'') </li>
+    <li><span style='font-family:
+     "Courier New"'>changepass($uname,$udom,$currentpass,$newpass,$server):</span> 
+      attempts to change a users, password, possible return values are: <span
+     style='font-family:"Courier New"'>ok, pwchange_failure, non_authorized, auth_mode_error, 
+      unknown_user, refused</span></li>
+    <li><code><span
+     style='font-family:Courier'>modifyuserauth($udom,$uname,$umode,$upass)</span></code> 
+      : modify user authentication </li>
+    <li><code><span
+     style='font-family:Courier'>modifyuser($udom,$uname,$uid,$umode,$upass,$first,$middle,$last,$gene)</span></code> 
+      : modify user </li>
+    <li>modifystudent($udom,$uname,$uid,$umode,$upass,$first,$middle,$last,$gene,$usec, 
+      $end,$start) : modify student </li>
+    <li><code><span
+     style='font-family:Courier'>assigncustomrole($udom,$uname,$url,$rdom,$rnam,$rolename,$end,$start)</span></code> 
+      : assign custom role; give a custom role to a user for the level given by 
+      URL. Specify name and domain of role author, and role name </li>
+    <li><code><span
+     style='font-family:Courier'>revokerole($udom,$uname,$url,$role)</span></code> 
+      : revoke a role for url </li>
+    <li><code><span
+     style='font-family:Courier'>revokecustomrole($udom,$uname,$url,$role)</span></code> 
+      : revoke a custom role </li>
+  </ul>
+  <h3><a name="course_infomation"></a><a name="_Toc421867062">Course Infomation</a></h3>
+  <ul type=disc>
+    <li><code><span style='font-family:
+     Courier'>coursedescription($courseid)</span></code> : course description 
+    </li>
+    <li><span style='font-family:
+     "Courier New"'>courseresdata($coursenum,$coursedomain,@which) :</span> request 
+      for current parameter setting for a specific course, @what should be a list 
+      of parameters to ask about. This routine caches answers for 5 minutes.</li>
+  </ul>
+  <h3><a name="course_modification"></a><a name="_Toc421867063">Course Modification</a></h3>
+  <ul type=disc>
+    <li><code><span
+     style='font-family:Courier'>writecoursepref($courseid,%prefs)</span></code> 
+      : write preferences (environment database) for a course </li>
+    <li><code><span
+     style='font-family:Courier'>createcourse($udom,$description,$url)</span></code> 
+      : make/modify course </li>
+  </ul>
+  <h3><a name="resource_subroutines"></a><a name="_Toc421867064">Resource Subroutines</a></h3>
+  <ul type=disc>
+    <li><code><span style='font-family:
+     Courier'>subscribe($fname)</span></code> : subscribe to a resource, returns 
+      URL if possible (probably should use repcopy instead) </li>
+    <li><code><span style='font-family:
+     Courier'>repcopy($filename)</span></code> : subscribes to the requested file, 
+      and attempts to replicate from the owning library server, Might return HTTP_SERVICE_UNAVAILABLE, 
+      HTTP_NOT_FOUND, FORBIDDEN, OK, or HTTP_BAD_REQUEST, also attempts to grab 
+      the metadata for the resource. Expects the local filesystem pathname (/home/httpd/html/res/....) 
+    </li>
+  </ul>
+  <h3><a name="resource_information"></a><a name="_Toc421867065">Resource Information</a></h3>
+  <ul type=disc>
+    <li>EXT($varname,$symb,$udom, $uname) : evaluates and returns the value of 
+      a vairety of different possible values, $varname should be a request string, 
+      and the other parameters can be used to specify who and what one is asking 
+      about. </li>
+  </ul>
+  <p><span style='font-size:10.0pt'>Possible values for $varname are environment.lastname 
+    (or other item from the environment hash), user.name (or someother aspect 
+    about the user), resource.0.maxtries (or some other part and parameter of 
+    a resource)</span></p>
+  <ul type=disc>
+    <li><code><span
+     style='font-family:Courier'>directcondval($number)</span></code> : get current 
+      value of a condition; reads from a state string </li>
+    <li><code><span
+     style='font-family:Courier'>condval($condidx)</span></code> : value of condition 
+      index based on state </li>
+    <li><code><span
+     style='font-family:Courier'>metadata($uri,$what,$liburi,$prefix,$depthcount)</span></code> 
+      : request a resource's metadata, $what should be either a specific key, 
+      or either 'keys' (to get a list of possible keys) or 'packages' to get a 
+      list of packages that this resource currently uses, the last 3 arguments 
+      are only used internally for recursive metadata. This function automatically 
+      caches all requests</li>
+    <li><code><span
+     style='font-family:Courier'>metadata_query($query,$custom,$customshow)</span></code> 
+      : make a metadata query against the network of library servers; returns 
+      file handle of where SQL and regex results will be stored for query</li>
+    <li><code><span
+     style='font-family:Courier'>symbread($filename)</span></code> : return symbolic 
+      list entry (filename argument optional); returns the data handle </li>
+    <li><span style='font-family:
+     "Courier New"'>symbverify($symb,$thisfn):</span> verifies that $symb actually 
+      exists and is a possible symb for the URL in $thisfn, returns a 1 on success, 
+      0 on failure, user must be in a course, as it assumes the existance of the 
+      course init hash, and uses $ENV('request.course.id'}</li>
+    <li><span style='font-family:
+     "Courier New"'>symbclean($symb):</span> removes versions numbers from a symb, 
+      returns the cleaned symb</li>
+    <li><span style='font-family:
+     "Courier New"'>is_on_map($uri) :</span> checks if the $uri is somewhere on 
+      the current course map, user must be in a course for it to work</li>
+    <li><code><span
+     style='font-family:Courier'>numval($salt)</span></code> : return random seed 
+      value (addend for rndseed) </li>
+    <li><code><span
+     style='font-family:Courier'>rndseed($symb,$courseid,$udom,$username)</span></code> 
+      : create a random sum; returns a random seed, all arguments are optional, 
+      if they aren't sent it uses the environment to derive them. Note: if symb 
+      isn't sent and it can't get one from &amp;symbread it will use the current 
+      time as its return value </li>
+    <li><code><span
+     style='font-family:Courier'>ireceipt($funame,$fudom,$fucourseid,$fusymb)</span></code> 
+      : return unique, unfakeable, receipt </li>
+    <li><code><span
+     style='font-family:Courier'>receipt()</span></code> : API to ireceipt working 
+      off of ENV values; given out to users </li>
+    <li><code><span
+     style='font-family:Courier'>countacc($url)</span></code> : count the number 
+      of accesses to a given URL </li>
+    <li><code><span
+     style='font-family:Courier'>checkout($symb,$tuname,$tudom,$tcrsid)</span></code> 
+      : creates a record of a user having looked at an item, most likely printed 
+      out or otherwise using a resource </li>
+    <li><code><span
+     style='font-family:Courier'>checkin($token)</span></code> : updates that 
+      a resource has beeen returned (a hard copy version for instance) and returns 
+      the data that $token was Checkout with ($symb, $tuname, $tudom, and $tcrsid) 
+    </li>
+    <li><code><span
+     style='font-family:Courier'>expirespread($uname,$udom,$stype,$usymb)</span></code> 
+      : set expire date for spreadsheet </li>
+    <li><code><span
+     style='font-family:Courier'>devalidate($symb)</span></code> : devalidate 
+      temporary spreadsheet calculations, forcing spreadsheet to reevaluate the 
+      resource scores next time. </li>
+  </ul>
+  <h3><a name="storing/retreiving_data"></a><a name="_Toc421867066"><span
+style='"storing\/retreiving_data"'>Storing/Retrieving Data</span></a></h3>
+  <ul type=disc>
+    <li><code><span
+     style='font-family:Courier'>store($storehash,$symb,$namespace,$udom,$uname)</span></code> 
+      : stores hash permanently for this url; hashref needs to be given and should 
+      be a \%hashname; the remaining args aren't required and if they aren't passed 
+      or are '' they will be derived from the ENV </li>
+    <li><code><span
+     style='font-family:Courier'>cstore($storehash,$symb,$namespace,$udom,$uname)</span></code> 
+      : same as store but uses critical subroutine </li>
+    <li><code><span
+     style='font-family:Courier'>restore($symb,$namespace,$udom,$uname)</span></code> 
+      : returns hash for this symb; all args are optional </li>
+    <li><code><span
+     style='font-family:Courier'>tmpstore($storehash,$symb,$namespace,$udom,$uname)</span></code> 
+      : storage that works very similar to store/cstore, but all data is stored 
+      in a temporary location and can be reset using tmpreset, $storehash should 
+      be a hash reference, returns nothing on success </li>
+    <li><code><span
+     style='font-family:Courier'>tmprestore($symb,$namespace,$udom,$uname)</span></code> 
+      : storage that works very similar to restore, but all data is stored in 
+      a temporary location and can be reset using tmpreset. Returns a hash of 
+      values on success, error string otherwise. </li>
+    <li><code><span
+     style='font-family:Courier'>tmpreset($symb,$namespace,$udom,$uname)</span></code> 
+      : temporary storage reset, deltes all keys for $symb form the temporary 
+      storage hash. </li>
+    <li><code><span
+     style='font-family:Courier'>get($namespace,$storearr,$udom,$uname)</span></code> 
+      : returns hash with keys from array reference filled in from namesp ($udomain 
+      and $uname are optional) </li>
+    <li><code><span
+     style='font-family:Courier'>del($namespace,$storearr,$udom,$uname)</span></code> 
+      : deletes keys out of array from namesp ($udomain and $uname are optional) 
+    </li>
+    <li><code><span
+     style='font-family:Courier'>dump($namespace,$udom,$uname,$regexp)</span></code> 
+      : dumps the complete (or key matching regexp) namespace into a hash ($udomain, 
+      $uname and $regexp are optional) </li>
+    <li><code><span
+     style='font-family:Courier'>put($namespace,$storehash,$udomain,$uname)</span></code> 
+      : stores hash in namesp ($udomain and $uname are optional) </li>
+    <li><code><span
+     style='font-family:Courier'>cput($namespace,$storehash,$udomain,$uname)</span></code> 
+      : critical put ($udomain and $uname are optional) </li>
+    <li><code><span
+     style='font-family:Courier'>eget($namespace,$storearr,$udomain,$uname)</span></code> 
+      : returns hash with keys from array reference filled in from namesp (encrypts 
+      the return communication) ($udomain and $uname are optional) </li>
+    <li><code><span
+     style='font-family:Courier'>log($udom,$name,$home,$message)</span></code> 
+      : write to permanent log for user; use critical subroutine </li>
+  </ul>
+  <h3><a name="network_status_functions"></a><a name="_Toc421867067">Network Status 
+    Functions</a></h3>
+  <ul type=disc>
+    <li><code><span
+     style='font-family:Courier'>dirlist($uri)</span></code> : return directory 
+      list based on URI </li>
+    <li><code><span
+     style='font-family:Courier'>spareserver()</span></code> : find server with 
+      least workload from spare.tab </li>
+  </ul>
+  <h3><a name="apache_request"></a><a name="_Toc421867068">Apache Request</a></h3>
+  <ul type=disc>
+    <li><code><span
+     style='font-family:Courier'>ssi($url,%hash)</span></code> : server side include, 
+      does a complete request cycle on url to localhost, posts hash </li>
+  </ul>
+  <h3><a name="data_to_string_to_data"></a><a name="_Toc421867069">Data to String 
+    to Data</a></h3>
+  <ul type=disc>
+    <li><code><span
+     style='font-family:Courier'>hash2str(%hash)</span></code> : convert a hash 
+      into a string complete with escaping and '=' and '&amp;' separators, supports 
+      elements that are arrayrefs and hashrefs </li>
+    <li><code><span
+     style='font-family:Courier'>hashref2str($hashref)</span></code> : convert 
+      a hashref into a string complete with escaping and '=' and '&amp;' separators, 
+      supports elements that are arrayrefs and hashrefs </li>
+    <li><code><span
+     style='font-family:Courier'>arrayref2str($arrayref)</span></code> : convert 
+      an arrayref into a string complete with escaping and '&amp;' separators, 
+      supports elements that are arrayrefs and hashrefs </li>
+    <li><code><span
+     style='font-family:Courier'>str2hash($string)</span></code> : convert string 
+      to hash using unescaping and splitting on '=' and '&amp;', supports elements 
+      that are arrayrefs and hashrefs </li>
+    <li><code><span
+     style='font-family:Courier'>str2array($string)</span></code> : convert string 
+      to hash using unescaping and splitting on '&amp;', supports elements that 
+      are arrayrefs and hashrefs </li>
+  </ul>
+  <h3><a name="logging_routines"></a><a name="_Toc421867070">Logging Routines</a></h3>
+  <p>These routines allow one to make log messages in the lonnet.log and lonnet.perm 
+    logfiles.</p>
+  <ul type=disc>
+    <li><code><span
+     style='font-family:Courier'>logtouch()</span></code> : make sure the logfile, 
+      lonnet.log, exists </li>
+    <li><code><span
+     style='font-family:Courier'>logthis()</span></code> : append message to the 
+      normal lonnet.log file, it gets preiodically rolled over and deleted. </li>
+    <li><code><span
+     style='font-family:Courier'>logperm()</span></code> : append a permanent 
+      message to lonnet.perm.log, this log file never gets deleted by any automated 
+      portion of the system, only messages of critical importance should go in 
+      here. </li>
+  </ul>
+  <h3><a name="general_helper_routines"></a><a name="_Toc421867071">General File 
+    Helper Routines</a></h3>
+  <ul type=disc>
+    <li><code><span
+     style='font-family:Courier'>getfile($file)</span></code> : serves up a file, 
+      returns the contents of a file or -1; replicates and subscribes to the file 
+    </li>
+    <li><code><span
+     style='font-family:Courier'>filelocation($dir,$file)</span></code> : returns 
+      file system location of a file based on URI; meant to be ``fairly clean'' 
+      absolute reference, $dir is a directory that relative $file lookups are 
+      to looked in ($dir of /a/dir and a file of ../bob will become /a/bob) </li>
+    <li><code><span
+     style='font-family:Courier'>hreflocation($dir,$file)</span></code> : returns 
+      file system location or a URL; same as filelocation except for hrefs </li>
+    <li><code><span
+     style='font-family:Courier'>declutter()</span></code> : declutters URLs (remove 
+      docroot, beginning slashes, 'res' etc) </li>
+  </ul>
+  <h3><a name="_Toc421867072">HTTP Helper Routines</a></h3>
+  <ul type=disc>
+    <li><code><span
+     style='font-family:Courier'>escape()</span></code> : unpack non-word characters 
+      into CGI-compatible hex codes </li>
+    <li><code><span
+     style='font-family:Courier'>unescape()</span></code> : pack CGI-compatible 
+      hex codes into actual non-word ASCII character </li>
+  </ul>
+</div>
+<h1>&nbsp;</h1>
+<h3><a name="underlying_communication_routines_(shoul"></a><a
+name="_Toc421867073">Private: Underlying communication routines (Shouldn't call)</a></h3>
+<ul type=disc>
+  <li><code><span style='font-family:
+     Courier'>subreply()</span></code> : tries to pass a message to lonc, returns 
+    con_lost if incapable </li>
+  <li><code><span style='font-family:
+     Courier'>reply()</span></code> : uses subreply to send a message to remote 
+    machine, logs all failures </li>
+  <li><code><span style='font-family:
+     Courier'>critical()</span></code> : passes a critical message to another 
+    server; if cannot get through then place message in connection buffer directory 
+    and returns con_delayed, if incapable of saving message, returns con_failed 
+  </li>
+  <li><code><span style='font-family:
+     Courier'>reconlonc()</span></code> : tries to reconnect lonc client processes. 
+  </li>
+</ul>
+<h3><a name="resource_access_logging"></a><a name="_Toc421867074">Private: Resource 
+  Access Logging</a></h3>
+<ul type=disc>
+  <li><code><span style='font-family:
+     Courier'>flushcourselogs()</span></code> : flush (save) buffer logs and access 
+    logs </li>
+  <li><code><span style='font-family:
+     Courier'>courselog($what)</span></code> : save message for course in hash 
+  </li>
+  <li><code><span style='font-family:
+     Courier'>courseacclog($what)</span></code> : save message for course using 
+    &amp;courselog(). Perform special processing for specific resource types (problems, 
+    exams, quizzes, etc). </li>
+  <li><code><span style='font-family:
+     Courier'>goodbye()</span></code> : flush course logs and log shutting down; 
+    it is called in srm.conf as a PerlChildExitHandler </li>
+</ul>
+<h3><a name=other></a><a name="_Toc421867075">Private: Other</a></h3>
+<p><code><span style='font-family:"Courier New"'>symblist($mapname,%newhash)</span></code><span
+style='font-family:"Courier New"'> :</span> update symbolic storage links </p>
+<h3><a name="_Toc421867076">Coding Guidelines</a></h3>
+<p class=H5><span style='layout-grid-mode:
+both'>Things to keep in mind while coding handlers for LON-CAPA </span></p>
+<p><span
+style='font-size:14.0pt'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; 
+  </span></span><span style='font-size:14.0pt'>DON'T write to Access machine disks 
+  with permanent data, use store/restore </span></p>
+<p><span
+style='font-size:14.0pt'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; 
+  </span></span><span style='font-size:14.0pt'>DON'T </span><span
+style='font-size:14.0pt;font-family:"Courier New"'>use print()</span><span
+style='font-size:14.0pt'>, use </span><span style='font-size:14.0pt;font-family:
+"Courier New"'>$request-&gt;print()</span><span style='font-size:14.0pt'> </span></p>
+<p><span
+style='font-size:14.0pt'>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; 
+  </span></span><span style='font-size:14.0pt'>DON'T launch children </span></p>
+<p><span
+style='font-size:14.0pt'>4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; 
+  </span></span><span style='font-size:14.0pt'>DO use </span><span
+style='font-size:14.0pt;font-family:"Courier New"'>$Apache::lonnet::perlvar{'lonDaemons'}/tmp</span><span
+style='font-size:14.0pt'> for temporary data. </span></p>
+<p><span
+style='font-size:14.0pt'>5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; 
+  </span></span><span style='font-size:14.0pt'>DO query the return value of every 
+  file operation. </span></p>
+<p><span
+style='font-size:14.0pt'>6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; 
+  </span></span><span style='font-size:14.0pt'>DO </span><span style='font-size:
+14.0pt;font-family:"Courier New"'>use strict;</span><span style='font-size:
+14.0pt'> </span></p>
+<p><span
+style='font-size:14.0pt'>7.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; 
+  </span></span><span style='font-size:14.0pt'>DO </span><span style='font-size:
+14.0pt;font-family:"Courier New"'>use strict;</span><span style='font-size:
+14.0pt'> </span></p>
+<p><span
+style='font-size:14.0pt'>8.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; 
+  </span></span><span style='font-size:14.0pt'>DO familiarize your self with the 
+  functions in </span><span style='font-size:14.0pt;font-family:"Courier New"'>lonnet.pm</span><span
+style='font-size:14.0pt'> and use them to communicate with other servers and when 
+  you handler needs to ask questions. </span></p>
+<p>9.<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span><span
+style='font-size:14.0pt'>DON'T use </span><span style='font-size:14.0pt;
+font-family:"Courier New"'>&amp;Apache::lonnet::reply()</span><span
+style='font-size:14.0pt'> </span></p>
+<br
+clear=ALL style='page-break-before:always;'>
+<div class=Section2> </div>
+</body>
+</html>
Index: doc/gutshtml/SessionTw1.html
diff -u doc/gutshtml/SessionTw1.html:1.1 doc/gutshtml/SessionTw1.html:1.2
--- doc/gutshtml/SessionTw1.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionTw1.html	Tue Jul 22 10:47:00 2003
@@ -1 +1,353 @@
-<html><head><meta name=Title content="Session Two: Spreadsheet and Messaging (Matthew)"><meta http-equiv=Content-Type content="text/html; charset=macintosh"><link rel=Edit-Time-Data href="Session%20Tw1_files/editdata.mso"><title>Session Two: Spreadsheet and Messaging (Matthew)</title><style><!--.MsoHeading7	{font-size:16.0pt;	font-family:"Times New Roman";	color:black;}.MsoHeader	{tab-stops:center 3.0in right 6.0in;	font-size:10.0pt;	font-family:"Times New Roman";}.MsoBodyText	{line-height:24.0pt;	font-size:12.0pt;	font-family:"Times New Roman";	layout-grid-mode:line;}.MsoBodyText2	{font-size:10.0pt;	font-family:"Times New Roman";	color:black;}.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 Two: Spreadsheet and Messaging (Matthew)</h2>  <h3><a name="_Toc421867092">Spreadsheets</a></h3>  <p class=MsoBodyText2>The spreadsheet presents data on student performance on     homework problems. Spreadsheets are handled by loncom/interface/lonspreadsheet.pm     and are completely web based. A person who has selected a student role will     access the spreadsheets using the [GRDS] button. A course coordinator is given     access via the [SPRS] button. Students are not able to see data on anyone's     performance but their own. Students are also not allowed to save spreadsheets.   </p>  <h3><a name="_Toc421867093">Spreadsheet Structure and Hierarchy</a></h3>  <p><span style='color:black'>The spreadsheets are laid out in the typical fashion,     with some limitations. There can only be 52 columns, addressed [A-Za-z]. There     may be any number of rows, but currently there do not exist facilities to     add rows other than those automatically generated. </span></p>  <p><span style='color:black'>There are three levels of spreadsheets, as illustrated     in <b>Fig. 2.2.1</b></span><span style='color:black'>.</span><span style='font-size:16.0pt;color:black'> <img width=432 height=278src="Session%20Tw1_files/image003.png" v:shapes="_x0000_i1025"> </span></p>  <p class=MsoHeading7><b>Fig. 2.1.1</b><span style='font-weight:normal'> Ð Spreadsheet     Hierarchy </span></p>  <p><span style='color:black'>The rightmost spreadsheets are the assessment spreadsheets.     The middle spreadsheets are the student spreadsheets. The left spreadsheet     is the course spreadsheet. </span></p>  <h3><a name="_Toc421867094">Export Rows</a></h3>  <p><span style='color:black'>The hierarchy of spreadsheets described above allows     data from the lower level spreadsheets (assessment and student) to be exported     up to the higher level spreadsheets (student and course, respectively). Row     0 is the export row. Only the cells A0-Z0 are exported. Cells a0-z0 are not     exported and can be used as 'scratch' space for the results exported in A0-Z0.     </span></p>  <p><span style='color:black'>The export rows in the image are shown shaded in     figure 2.2.1. Where the exported rows appear in the student and course spreadsheets     is indicated by arrows. </span></p>  <h3><a name="_Toc421867095">Assessment Spreadsheet</a></h3>  <p><span style='color:black'>The assessment spreadsheet gives data on the students     performance on a specific resource in LON-CAPA (typically a *.problem resource).     Parameters such as the due date, the number of tries possible, the number     of attempts made, the correctness of the student solution, and any &lt;parameter&gt;     tags inserted in the resource will be shown. <b>Fig. 2.2.2</b></span><span style='color:black'>     shows an example of an assessment spreadsheet.</span></p>  <p> <img width=432 height=290src="Session%20Tw1_files/image005.jpg" v:shapes="_x0000_i1026"> </p>  <p><span style='font-size:14.0pt'><b>Fig. 2.2.2</b></span><spanstyle='font-size:14.0pt'> Ð Example Spreadsheet on Assessment Level</span></p>  <h3><a name="_Toc421867096">Student Spreadsheet</a></h3>  <p class=MsoBodyText2>Each assessment spreadsheet exports a row into the student     spreadsheet. Fig 2.2.3 shows an example student spreadsheet. The student spreadsheet     exports a row to the course spreadsheet. </p>  <p class=MsoHeader><b>Fig. 2.2.3</b><spanstyle='font-weight:normal'> shows the next level up spreadsheet with the exported     data from this sheet.</span></p>  <p class=MsoHeader> <img width=431 height=240src="Session%20Tw1_files/image007.jpg" v:shapes="_x0000_i1027"> </p>  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.3</b></span><span style='font-size:14.0pt'>     Ð Default Spreadsheet on Student Level</span></p>  <h3><a name="_Toc421867097">Course Spreadsheet</a></h3>  <p>The course spreadsheet gives a summary of each students performance in the     course as a whole. <b>Fig 2.2.4</b><span style='font-weight:normal'> shows the default course spreadsheet. </span></p>  <p class=MsoHeader> <img width=432 height=143src="Session%20Tw1_files/image009.jpg" v:shapes="_x0000_i1028"> </p>  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.4</b></span><span style='font-size:14.0pt'>     Ð Default Spreadsheet on Course Level</span></p>  <h3><a name="_Toc421867098">Spreadsheet definition</a></h3>  <p class=MsoBodyText2>The default spreadsheets are defined via xml. <b>Fig.     2.2.5</b><span style='font-weight:normal'> shows a sample definition of a     spreadsheet. However, it is possible to work with spreadsheets and never edit     the xml for the spreadsheet itself. By modifying the contents of cells via     the web interface and saving the results, instructors can create as complicated     a spreadsheet as they like. It is now possible for users to upload spreadsheets     to the library server, publish them, and set them as the default sheets for     their course. </span></p>  <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>[www@zaphod www]$ cat /home/httpd/html/res/adm/includes/default.assesscalc</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;field col=A row=0&gt;[stores_0_solved]&lt;/field&gt;</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;field col=B row=0&gt;'Tries:'&lt;/field&gt;</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;field col=C row=0&gt;[stores_0_tries]&lt;/field&gt;</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;field col=D row=0&gt;'Timestamp:'&lt;/field&gt;</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;field col=E row=0&gt;[timestamp]&lt;/field&gt;</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;field col=F row=0&gt;'Duedate:'&lt;/field&gt;</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;field col=G row=0&gt;[parameter_0_duedate]&lt;/field&gt;</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;field col=W row=0&gt;'Available Points:'&lt;/field&gt;</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;field col=X row=0&gt;[parameter_0_weight]&lt;/field&gt;</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;field col=Y row=0&gt;'Awarded Points:'&lt;/field&gt;</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;field col=Z row=0&gt;[parameter_0_weight]*[stores_0_awarded]&lt;/field&gt;</span></p>  </div>  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.5</b></span><span style='font-size:14.0pt'>     Ð Default Spreadsheet on Assessment Level</span></p>  <h3><a name="_Toc421867099">Template Row</a></h3>  <p class=MsoBodyText2>The template row of a spreadsheets will make the contents     of a given column identical for each row. The contents of the template row     are shown verbatim, and not evaluated. Fig 2.2.6 shows the template row in     use. </p>  <p class=MsoHeader> <img width=432 height=215src="Session%20Tw1_files/image011.jpg" v:shapes="_x0000_i1029"> </p>  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.7</b></span><span style='font-size:14.0pt'>     Ð Customized Spreadsheet on Student Level</span><b> </b><span style='font-size:8.0pt;font-weight:normal'>Shows     a course-customized student-level spreadsheet with many of these functions,     templates and wildcards in action. In the dialog window, </span><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&amp;SUM(Òd*Ó)</span><spanstyle='font-size:8.0pt'> is entered as the expression for cell H0, which will     add up all cells in column d. The template row is used to define expressions     for columns a, b, c, and d, where for b and d both the Ô#Õ wildcard and access     to the EXT function is used in order to multiply the respective X and Z cells     in each row with 1 or 0 depending on whether the value in G (the duedate)     is smaller or larger than the system time (Ò?Ó is the standard Perl choice     operator).</span></p>  <h3><a name="_Toc421867100">What goes in a cell</a></h3>  <p class=MsoBodyText2>A cell contains either parameter data (which cannot be     changed) or perl code. Additionally, cells can contain references to other     cells and these references can be passed as parameters to perl functions.     Parameters can be accessed via the cell they are stored in or by the parameter     name. </p>  <h3><a name="_Toc421867101">Parameter Access</a></h3>  <p class=MsoBodyText2>Parameters can be accessed by enclosing the parameter     name in square brackets. A new feature allows the accessing of parameters     by enclosing only enough information to lead to a unique parameter. &quot;[part_0_duedate]&quot;     will give the same value as &quot;[duedate]&quot; if there are no other parameters     which contain the string &quot;duedate&quot;. </p>  <h3><a name="_Toc421867102">Addressing other cells</a></h3>  <p><span style='color:black'>Cells are specified by the letter-number combination     of their position in the table, for example &quot;A5&quot;. There are also     wildcards '*' and '#' which are used in ranges and templates, respectively,     and symbolic names. </span></p>  <p><span style='color:black'>Valid ranges are for example &quot;A5..C7&quot;     which is the square between cells A5 to C7, as in A5, A6, A7, B5, etc. Also,     wildcards can be used, as in &quot;A*&quot; for column A, or &quot;*5&quot;     for row 5. For example, &amp;SUM(&quot;d*&quot;) will add up all cells in     column d. The table below gives a brief summary of the range options. </span></p>  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     all rows, all columns</span></p>  <p><span style='color:black'>B*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all rows     in column B</span></p>  <p><span style='color:black'>*5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all     columns in row 5</span></p>  <p><span style='color:black'>C5..F25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     all cells in the rectangle between C5 and F25</span></p>  <p>The template row allows the use of &quot;A#&quot;, which will result in &quot;A5&quot;     in row 5, &quot;A6&quot; in row 6, etc.<spanstyle='font-size:16.0pt'> </span></p>  <p><b>Spreadsheet Functions </b></p>  <p class=MsoHeader><span style='color:black'>Many perl functions are available     in the spreadsheet (see &quot;The Safe Environment&quot; below). Additionally,     some spreadsheet specific functions have been defined as well. A complete     list is available by executing 'perldoc loncapa/loncom/interface/lonspreadsheet.pm'     on the command line. An abbreviated table appears in Fig. 2.2.7.</span></p>  <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>     <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:11.0pt'>&amp;NUM(<i>range</i></span><span style='font-size:11.0pt'>) Ð number       of non-empty cells in <i>range</i></span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:11.0pt'>&amp;BIN(<i>low, high, range</i></span><span style='font-size:11.0pt'>)       Ð number of non-empty cells in <i>range</i></span><span style='font-size:11.0pt'>       with values between <i>low</i></span><span style='font-size:11.0pt'> and       <i>high</i></span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:11.0pt'>&amp;SUM(<i>range</i></span><span style='font-size:11.0pt'>) Ð sum of       the non-empty cells in <i>range</i></span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:11.0pt'>&amp;MEAN(<i>range</i></span><span style='font-size:11.0pt'>) Ð mean value       of non-empty cells in <i>range</i></span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:11.0pt'>&amp;STDDEV(<i>range</i></span><span style='font-size:11.0pt'>) Ð standard       deviation of non-empty cells in <i>range</i></span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:11.0pt'>&amp;PROD(<i>range</i></span><span style='font-size:11.0pt'>) Ð product       of non-empty cells in <i>range</i></span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:11.0pt'>&amp;MAX(<i>range</i></span><span style='font-size:11.0pt'>) Ð maximum       value of non-empty cell in <i>range</i></span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:11.0pt'>&amp;MIN(<i>range</i></span><span style='font-size:11.0pt'>) Ð minimum       value of non-empty cells in <i>range</i></span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:11.0pt'>&amp;SUMMAX(<i>n ,range</i></span><span style='font-size:11.0pt'>) Ð sum       of the maximum <i>n</i></span><span style='font-size:11.0pt'> non-empty       cells in range</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:11.0pt'>&amp;SUMMIN(<i>n, range</i></span><span style='font-size:11.0pt'>) Ð sum       of the minimum <i>n</i></span><span style='font-size:11.0pt'> non-empty       cells in range</span></p>    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:11.0pt'>&amp;EXT(<i>expression</i></span><span style='font-size:11.0pt'>) Ð access       to EXT function in </span><span style='font-size:11.0pt;font-family:"Courier New"'>lonnet</span></p>  </div>  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.7</b></span><span style='font-size:14.0pt'>     Ð Available Functions in Spreadsheet</span></p>  <h3><a name="_Toc421867103">The Safe Environment</a></h3>  <p><span style='color:black'>The spreadsheet cells are evaluated in a &quot;Safe&quot;     environment. The module Safe.pm is included in the standard systemperl RPM     put out by the LON-CAPA developers, but is written by Tim Bunce and Malcolm     Beattie. If you execute 'perldoc Safe' you can read the documentation for     the module. </span></p>  <p><span style='color:black'>The Safe.pm module allows users to &quot;compile     and execute code in restricted compartments&quot;. We use this to allow users     to implement in their spreadsheets a restricted set of perl functions, variables,     and operators. No one using the spreadsheet should ever need access to the     basic IO functions of Perl, for example, so these are not made available to     the users. </span></p>  <p><span style='color:black'>Each cell is evaluated within the same safe space,     so cells can actually contain function and declarations. </span></p>  <p><span style='color:black'>There is information the user may need which is     not contained in the cells of the spreadsheet. So we poke a hole in the safe     space using the Safe::Hole module. This lets us allow access to external information.     Obviously this needs to be done with some degree of caution. </span></p>  <p><span style='color:black'>At the beginning of lonspreadsheet.pm we have the     following code: </span></p>  <p><span style='font-family:"Courier New";color:black'>use Safe;</span></p>  <p><span style='font-family:"Courier New";color:black'>use Safe::Hole;</span></p>  <p><span style='color:black'>The function &amp;initsheet, which is called when     a spreadsheet is created or modified, defines the safe space for the execution     of spreadsheet code: </span></p>  <p><span style='font-family:"Courier New";color:black'>sub initsheet {</span></p>  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; my     $safeeval = new Safe(shift);</span></p>  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; my     $safehole = new Safe::Hole;</span></p>  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;permit(&quot;entereval&quot;);</span></p>  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;permit(&quot;:base_math&quot;);</span></p>  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;permit(&quot;sort&quot;);</span></p>  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;deny(&quot;:base_io&quot;);</span></p>  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safehole-&gt;wrap(\&amp;Apache::lonnet::EXT,$safeeval,'&amp;EXT');</span></p>  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; my     $code=&lt;&lt;'ENDDEFS';</span></p>  <p><span style='font-family:"Courier New";color:black'>.</span></p>  <p><span style='font-family:"Courier New";color:black'><i>functions and variables     needed in the safe space are defined here</i></span></p>  <p><span style='font-family:"Courier New";color:black'>.</span></p>  <p><span style='font-family:"Courier New";color:black'>ENDDEFS</span></p>  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;reval($code);</span></p>  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; return     $safeeval;</span></p>  <p><span style='font-family:"Courier New";color:black'>}</span></p>  <h3><a name="_Toc421867104">Change is coming</a></h3>  <p><span style='color:black'>Currently the spreadsheet is scheduled to undergo     major revisions by the end of the summer. The goal of these revisions is to     increase the speed and add some requested functionality. We hope to add: </span></p>  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     Improved exporting of the spreadsheet date to client side spreadsheets </span></p>  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     Exporting of spreadsheet xml - allowing users to save spreadsheets from their     classes for reuse. </span></p>  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     Additional spreadsheet functions.</span></p>  <h3>&nbsp; </h3>  <h3><a name="_Toc421867105">Discussion</a></h3>  <p><span style='color:black'>loncapa/loncom/interface/lonfeedback.pm handles     feedback on resources. Feedback can be for course discussion of a resource     or to communicate with the author of the resource. In the latter case, a screenshot     of the resource and (if applicable) the students previous attempts to solve     the problem. </span></p>  <p><span style='color:black'>Course discussion messages appear at the bottom     of the resource being discussed. There are two types of attribution in course     discussion messages. Users may choose to have their LON-CAPA id shown to everyone     or they may have it shown only to instructors. Complete anonymity is not an     option. If the users choose to hide their LON-CAPA id (an 'anonymous' message),     they can set the name given in the [PREF] page. </span></p>  <p><span style='color:black'><b>Figures 2.2.8</b></span><spanstyle='color:black'> through <b>2.2.10</b></span><span style='color:black'> show     a course discussion feedback cycle. </span></p>  <p><span style='color:black'> <img width=256 height=63src="Session%20Tw1_files/image013.jpg" v:shapes="_x0000_i1030"> </span></p>  <p><span style='color:black'><b>Fig 2.2.8</b></span><spanstyle='color:black'> - A Simple Resource</span></p>  <p><span style='color:black'> <img width=301 height=240src="Session%20Tw1_files/image015.jpg" v:shapes="_x0000_i1031"> </span></p>  <p><span style='color:black'><b>Fig. 2.2.9</b></span><spanstyle='color:black'> Composing Discussion Feedback&nbsp; </span></p>  <p><span style='color:black'> <img width=292 height=170src="Session%20Tw1_files/image017.jpg" v:shapes="_x0000_i1032"> </span></p>  <p><span style='color:black'><b>Fig 2.2.10</b></span><spanstyle='color:black'> The Resource with Anonymous and Non-anonymous Discussion</span></p>  <h3><a name="_Toc421867106">Messaging</a></h3></div><h1><span style='font-size:10.0pt;font-family:"Courier New";font-weight:normal'>&nbsp;</span></h1><p><span style='color:black'>loncapa/loncom/interface/lonmsg.pm provides functions   for sending users messages. All messaging is currently done via lonmsg.pm. The   following subroutines handle the sending of various types of messages: </span></p><p><span style='font-family:"Courier New";color:black'>author_res_msg </span></p><p><span style='color:black'>Send a message to the author of a resource. </span></p><p><span style='font-family:"Courier New";color:black'>user_crit_msg </span></p><p><span style='color:black'>Send a critical message to a user. Critical messages   require the user to acknowledge receipt before any other action in LON-CAPA   can be taken. </span></p><p><span style='font-family:"Courier New";color:black'>user_crit_received </span></p><p><span style='color:black'>Notify the sender of a critical message that the   message has been received. </span></p><p><span style='font-family:"Courier New";color:black'>user_normal_msg </span></p><p><span style='color:black'>Send a non-critical message to a user. </span></p><p><span style='font-family:"Courier New";color:black'>statuschange </span></p><p><span style='color:black'>Change the status of a message (read, replied, forwarded,   etc) </span></p><p><span style='color:black'>The lonmsg::handler takes care of the display and   sending of messages. If you have the time, communicate with yourself! Note:   Critical messages are displayed on login to LON-CAPA. Some message types are   only available for course coordinators. </span></p><h3><span style='color:black'>&nbsp;</span></h3><h3><a name="_Toc421867107">Resource Feedback</a></h3><p><img border=0 width=432 height=304 id="_x0000_i1028"src="handout_files/image004.jpg"></p><p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.11</b></span><span style='font-size:14.0pt'>   Ð Example of a Feedback</span></p><brclear=ALL style='page-break-before:always;'><div class=Section2> </div></body></html>
\ No newline at end of file
+<html>
+<head>
+<meta name=Title content="Session Two: Spreadsheet and Messaging (Matthew)">
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+<link rel=Edit-Time-Data href="Session%20Tw1_files/editdata.mso">
+<title>Session Two: Spreadsheet and Messaging (Matthew)</title>
+<style><!--
+.MsoHeading7
+	{font-size:16.0pt;
+	font-family:"Times New Roman";
+	color:black;}
+.MsoHeader
+	{tab-stops:center 3.0in right 6.0in;
+	font-size:10.0pt;
+	font-family:"Times New Roman";}
+.MsoBodyText
+	{line-height:24.0pt;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	layout-grid-mode:line;}
+.MsoBodyText2
+	{font-size:10.0pt;
+	font-family:"Times New Roman";
+	color:black;}
+.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 Two: Spreadsheet and Messaging (Matthew)</h2>
+  <h3><a name="_Toc421867092">Spreadsheets</a></h3>
+  <p class=MsoBodyText2>The spreadsheet presents data on student performance on 
+    homework problems. Spreadsheets are handled by loncom/interface/lonspreadsheet.pm 
+    and are completely web based. A person who has selected a student role will 
+    access the spreadsheets using the [GRDS] button. A course coordinator is given 
+    access via the [SPRS] button. Students are not able to see data on anyone's 
+    performance but their own. Students are also not allowed to save spreadsheets. 
+  </p>
+  <h3><a name="_Toc421867093">Spreadsheet Structure and Hierarchy</a></h3>
+  <p><span style='color:black'>The spreadsheets are laid out in the typical fashion, 
+    with some limitations. There can only be 52 columns, addressed [A-Za-z]. There 
+    may be any number of rows, but currently there do not exist facilities to 
+    add rows other than those automatically generated. </span></p>
+  <p><span style='color:black'>There are three levels of spreadsheets, as illustrated 
+    in <b>Fig. 2.2.1</b></span><span style='color:
+black'>.</span><span style='font-size:16.0pt;color:black'> <img width=432 height=278
+src="Session%20Tw1_files/image003.png" v:shapes="_x0000_i1025"> </span></p>
+  <p class=MsoHeading7><b>Fig. 2.1.1</b><span style='font-weight:normal'> Ð Spreadsheet 
+    Hierarchy </span></p>
+  <p><span style='color:black'>The rightmost spreadsheets are the assessment spreadsheets. 
+    The middle spreadsheets are the student spreadsheets. The left spreadsheet 
+    is the course spreadsheet. </span></p>
+  <h3><a name="_Toc421867094">Export Rows</a></h3>
+  <p><span style='color:black'>The hierarchy of spreadsheets described above allows 
+    data from the lower level spreadsheets (assessment and student) to be exported 
+    up to the higher level spreadsheets (student and course, respectively). Row 
+    0 is the export row. Only the cells A0-Z0 are exported. Cells a0-z0 are not 
+    exported and can be used as 'scratch' space for the results exported in A0-Z0. 
+    </span></p>
+  <p><span style='color:black'>The export rows in the image are shown shaded in 
+    figure 2.2.1. Where the exported rows appear in the student and course spreadsheets 
+    is indicated by arrows. </span></p>
+  <h3><a name="_Toc421867095">Assessment Spreadsheet</a></h3>
+  <p><span style='color:black'>The assessment spreadsheet gives data on the students 
+    performance on a specific resource in LON-CAPA (typically a *.problem resource). 
+    Parameters such as the due date, the number of tries possible, the number 
+    of attempts made, the correctness of the student solution, and any &lt;parameter&gt; 
+    tags inserted in the resource will be shown. <b>Fig. 2.2.2</b></span><span style='color:black'> 
+    shows an example of an assessment spreadsheet.</span></p>
+  <p> <img width=432 height=290
+src="Session%20Tw1_files/image005.jpg" v:shapes="_x0000_i1026"> </p>
+  <p><span style='font-size:14.0pt'><b>Fig. 2.2.2</b></span><span
+style='font-size:14.0pt'> Ð Example Spreadsheet on Assessment Level</span></p>
+  <h3><a name="_Toc421867096">Student Spreadsheet</a></h3>
+  <p class=MsoBodyText2>Each assessment spreadsheet exports a row into the student 
+    spreadsheet. Fig 2.2.3 shows an example student spreadsheet. The student spreadsheet 
+    exports a row to the course spreadsheet. </p>
+  <p class=MsoHeader><b>Fig. 2.2.3</b><span
+style='font-weight:normal'> shows the next level up spreadsheet with the exported 
+    data from this sheet.</span></p>
+  <p class=MsoHeader> <img width=431 height=240
+src="Session%20Tw1_files/image007.jpg" v:shapes="_x0000_i1027"> </p>
+  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.3</b></span><span style='font-size:14.0pt'> 
+    Ð Default Spreadsheet on Student Level</span></p>
+  <h3><a name="_Toc421867097">Course Spreadsheet</a></h3>
+  <p>The course spreadsheet gives a summary of each students performance in the 
+    course as a whole. <b>Fig 2.2.4</b><span style='font-weight:
+normal'> shows the default course spreadsheet. </span></p>
+  <p class=MsoHeader> <img width=432 height=143
+src="Session%20Tw1_files/image009.jpg" v:shapes="_x0000_i1028"> </p>
+  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.4</b></span><span style='font-size:14.0pt'> 
+    Ð Default Spreadsheet on Course Level</span></p>
+  <h3><a name="_Toc421867098">Spreadsheet definition</a></h3>
+  <p class=MsoBodyText2>The default spreadsheets are defined via xml. <b>Fig. 
+    2.2.5</b><span style='font-weight:normal'> shows a sample definition of a 
+    spreadsheet. However, it is possible to work with spreadsheets and never edit 
+    the xml for the spreadsheet itself. By modifying the contents of cells via 
+    the web interface and saving the results, instructors can create as complicated 
+    a spreadsheet as they like. It is now possible for users to upload spreadsheets 
+    to the library server, publish them, and set them as the default sheets for 
+    their course. </span></p>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'> 
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+8.0pt;font-family:"Courier New"'>[www@zaphod www]$ cat /home/httpd/html/res/adm/includes/default.assesscalc</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+8.0pt;font-family:"Courier New"'>&lt;field col=A row=0&gt;[stores_0_solved]&lt;/field&gt;</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+8.0pt;font-family:"Courier New"'>&lt;field col=B row=0&gt;'Tries:'&lt;/field&gt;</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+8.0pt;font-family:"Courier New"'>&lt;field col=C row=0&gt;[stores_0_tries]&lt;/field&gt;</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+8.0pt;font-family:"Courier New"'>&lt;field col=D row=0&gt;'Timestamp:'&lt;/field&gt;</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+8.0pt;font-family:"Courier New"'>&lt;field col=E row=0&gt;[timestamp]&lt;/field&gt;</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+8.0pt;font-family:"Courier New"'>&lt;field col=F row=0&gt;'Duedate:'&lt;/field&gt;</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+8.0pt;font-family:"Courier New"'>&lt;field col=G row=0&gt;[parameter_0_duedate]&lt;/field&gt;</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+8.0pt;font-family:"Courier New"'>&lt;field col=W row=0&gt;'Available Points:'&lt;/field&gt;</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+8.0pt;font-family:"Courier New"'>&lt;field col=X row=0&gt;[parameter_0_weight]&lt;/field&gt;</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+8.0pt;font-family:"Courier New"'>&lt;field col=Y row=0&gt;'Awarded Points:'&lt;/field&gt;</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+8.0pt;font-family:"Courier New"'>&lt;field col=Z row=0&gt;[parameter_0_weight]*[stores_0_awarded]&lt;/field&gt;</span></p>
+  </div>
+  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.5</b></span><span style='font-size:14.0pt'> 
+    Ð Default Spreadsheet on Assessment Level</span></p>
+  <h3><a name="_Toc421867099">Template Row</a></h3>
+  <p class=MsoBodyText2>The template row of a spreadsheets will make the contents 
+    of a given column identical for each row. The contents of the template row 
+    are shown verbatim, and not evaluated. Fig 2.2.6 shows the template row in 
+    use. </p>
+  <p class=MsoHeader> <img width=432 height=215
+src="Session%20Tw1_files/image011.jpg" v:shapes="_x0000_i1029"> </p>
+  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.7</b></span><span style='font-size:14.0pt'> 
+    Ð Customized Spreadsheet on Student Level</span><b> </b><span style='font-size:8.0pt;font-weight:normal'>Shows 
+    a course-customized student-level spreadsheet with many of these functions, 
+    templates and wildcards in action. In the dialog window, </span><span
+style='font-size:8.0pt;font-family:"Courier New"'>&amp;SUM(Òd*Ó)</span><span
+style='font-size:8.0pt'> is entered as the expression for cell H0, which will 
+    add up all cells in column d. The template row is used to define expressions 
+    for columns a, b, c, and d, where for b and d both the Ô#Õ wildcard and access 
+    to the EXT function is used in order to multiply the respective X and Z cells 
+    in each row with 1 or 0 depending on whether the value in G (the duedate) 
+    is smaller or larger than the system time (Ò?Ó is the standard Perl choice 
+    operator).</span></p>
+  <h3><a name="_Toc421867100">What goes in a cell</a></h3>
+  <p class=MsoBodyText2>A cell contains either parameter data (which cannot be 
+    changed) or perl code. Additionally, cells can contain references to other 
+    cells and these references can be passed as parameters to perl functions. 
+    Parameters can be accessed via the cell they are stored in or by the parameter 
+    name. </p>
+  <h3><a name="_Toc421867101">Parameter Access</a></h3>
+  <p class=MsoBodyText2>Parameters can be accessed by enclosing the parameter 
+    name in square brackets. A new feature allows the accessing of parameters 
+    by enclosing only enough information to lead to a unique parameter. &quot;[part_0_duedate]&quot; 
+    will give the same value as &quot;[duedate]&quot; if there are no other parameters 
+    which contain the string &quot;duedate&quot;. </p>
+  <h3><a name="_Toc421867102">Addressing other cells</a></h3>
+  <p><span style='color:black'>Cells are specified by the letter-number combination 
+    of their position in the table, for example &quot;A5&quot;. There are also 
+    wildcards '*' and '#' which are used in ranges and templates, respectively, 
+    and symbolic names. </span></p>
+  <p><span style='color:black'>Valid ranges are for example &quot;A5..C7&quot; 
+    which is the square between cells A5 to C7, as in A5, A6, A7, B5, etc. Also, 
+    wildcards can be used, as in &quot;A*&quot; for column A, or &quot;*5&quot; 
+    for row 5. For example, &amp;SUM(&quot;d*&quot;) will add up all cells in 
+    column d. The table below gives a brief summary of the range options. </span></p>
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+    all rows, all columns</span></p>
+  <p><span style='color:black'>B*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all rows 
+    in column B</span></p>
+  <p><span style='color:black'>*5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all 
+    columns in row 5</span></p>
+  <p><span style='color:black'>C5..F25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+    all cells in the rectangle between C5 and F25</span></p>
+  <p>The template row allows the use of &quot;A#&quot;, which will result in &quot;A5&quot; 
+    in row 5, &quot;A6&quot; in row 6, etc.<span
+style='font-size:16.0pt'> </span></p>
+  <p><b>Spreadsheet Functions </b></p>
+  <p class=MsoHeader><span style='color:black'>Many perl functions are available 
+    in the spreadsheet (see &quot;The Safe Environment&quot; below). Additionally, 
+    some spreadsheet specific functions have been defined as well. A complete 
+    list is available by executing 'perldoc loncapa/loncom/interface/lonspreadsheet.pm' 
+    on the command line. An abbreviated table appears in Fig. 2.2.7.</span></p>
+  <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'> 
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+11.0pt'>&amp;NUM(<i>range</i></span><span style='font-size:11.0pt'>) Ð number 
+      of non-empty cells in <i>range</i></span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+11.0pt'>&amp;BIN(<i>low, high, range</i></span><span style='font-size:11.0pt'>) 
+      Ð number of non-empty cells in <i>range</i></span><span style='font-size:11.0pt'> 
+      with values between <i>low</i></span><span style='font-size:11.0pt'> and 
+      <i>high</i></span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+11.0pt'>&amp;SUM(<i>range</i></span><span style='font-size:11.0pt'>) Ð sum of 
+      the non-empty cells in <i>range</i></span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+11.0pt'>&amp;MEAN(<i>range</i></span><span style='font-size:11.0pt'>) Ð mean value 
+      of non-empty cells in <i>range</i></span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+11.0pt'>&amp;STDDEV(<i>range</i></span><span style='font-size:11.0pt'>) Ð standard 
+      deviation of non-empty cells in <i>range</i></span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+11.0pt'>&amp;PROD(<i>range</i></span><span style='font-size:11.0pt'>) Ð product 
+      of non-empty cells in <i>range</i></span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+11.0pt'>&amp;MAX(<i>range</i></span><span style='font-size:11.0pt'>) Ð maximum 
+      value of non-empty cell in <i>range</i></span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+11.0pt'>&amp;MIN(<i>range</i></span><span style='font-size:11.0pt'>) Ð minimum 
+      value of non-empty cells in <i>range</i></span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+11.0pt'>&amp;SUMMAX(<i>n ,range</i></span><span style='font-size:11.0pt'>) Ð sum 
+      of the maximum <i>n</i></span><span style='font-size:11.0pt'> non-empty 
+      cells in range</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+11.0pt'>&amp;SUMMIN(<i>n, range</i></span><span style='font-size:11.0pt'>) Ð sum 
+      of the minimum <i>n</i></span><span style='font-size:11.0pt'> non-empty 
+      cells in range</span></p>
+    <p class=MsoHeader style='border:none;padding:0in;'><span style='font-size:
+11.0pt'>&amp;EXT(<i>expression</i></span><span style='font-size:11.0pt'>) Ð access 
+      to EXT function in </span><span style='font-size:11.0pt;font-family:
+"Courier New"'>lonnet</span></p>
+  </div>
+  <p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.7</b></span><span style='font-size:14.0pt'> 
+    Ð Available Functions in Spreadsheet</span></p>
+  <h3><a name="_Toc421867103">The Safe Environment</a></h3>
+  <p><span style='color:black'>The spreadsheet cells are evaluated in a &quot;Safe&quot; 
+    environment. The module Safe.pm is included in the standard systemperl RPM 
+    put out by the LON-CAPA developers, but is written by Tim Bunce and Malcolm 
+    Beattie. If you execute 'perldoc Safe' you can read the documentation for 
+    the module. </span></p>
+  <p><span style='color:black'>The Safe.pm module allows users to &quot;compile 
+    and execute code in restricted compartments&quot;. We use this to allow users 
+    to implement in their spreadsheets a restricted set of perl functions, variables, 
+    and operators. No one using the spreadsheet should ever need access to the 
+    basic IO functions of Perl, for example, so these are not made available to 
+    the users. </span></p>
+  <p><span style='color:black'>Each cell is evaluated within the same safe space, 
+    so cells can actually contain function and declarations. </span></p>
+  <p><span style='color:black'>There is information the user may need which is 
+    not contained in the cells of the spreadsheet. So we poke a hole in the safe 
+    space using the Safe::Hole module. This lets us allow access to external information. 
+    Obviously this needs to be done with some degree of caution. </span></p>
+  <p><span style='color:black'>At the beginning of lonspreadsheet.pm we have the 
+    following code: </span></p>
+  <p><span style='font-family:"Courier New";color:black'>use Safe;</span></p>
+  <p><span style='font-family:"Courier New";color:black'>use Safe::Hole;</span></p>
+  <p><span style='color:black'>The function &amp;initsheet, which is called when 
+    a spreadsheet is created or modified, defines the safe space for the execution 
+    of spreadsheet code: </span></p>
+  <p><span style='font-family:"Courier New";color:black'>sub initsheet {</span></p>
+  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; my 
+    $safeeval = new Safe(shift);</span></p>
+  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; my 
+    $safehole = new Safe::Hole;</span></p>
+  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;permit(&quot;entereval&quot;);</span></p>
+  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;permit(&quot;:base_math&quot;);</span></p>
+  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;permit(&quot;sort&quot;);</span></p>
+  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;deny(&quot;:base_io&quot;);</span></p>
+  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safehole-&gt;wrap(\&amp;Apache::lonnet::EXT,$safeeval,'&amp;EXT');</span></p>
+  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; my 
+    $code=&lt;&lt;'ENDDEFS';</span></p>
+  <p><span style='font-family:"Courier New";color:black'>.</span></p>
+  <p><span style='font-family:"Courier New";color:black'><i>functions and variables 
+    needed in the safe space are defined here</i></span></p>
+  <p><span style='font-family:"Courier New";color:black'>.</span></p>
+  <p><span style='font-family:"Courier New";color:black'>ENDDEFS</span></p>
+  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; $safeeval-&gt;reval($code);</span></p>
+  <p><span style='font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; return 
+    $safeeval;</span></p>
+  <p><span style='font-family:"Courier New";color:black'>}</span></p>
+  <h3><a name="_Toc421867104">Change is coming</a></h3>
+  <p><span style='color:black'>Currently the spreadsheet is scheduled to undergo 
+    major revisions by the end of the summer. The goal of these revisions is to 
+    increase the speed and add some requested functionality. We hope to add: </span></p>
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+    Improved exporting of the spreadsheet date to client side spreadsheets </span></p>
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+    Exporting of spreadsheet xml - allowing users to save spreadsheets from their 
+    classes for reuse. </span></p>
+  <p><span style='color:black'>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+    Additional spreadsheet functions.</span></p>
+  <h3>&nbsp; </h3>
+  <h3><a name="_Toc421867105">Discussion</a></h3>
+  <p><span style='color:black'>loncapa/loncom/interface/lonfeedback.pm handles 
+    feedback on resources. Feedback can be for course discussion of a resource 
+    or to communicate with the author of the resource. In the latter case, a screenshot 
+    of the resource and (if applicable) the students previous attempts to solve 
+    the problem. </span></p>
+  <p><span style='color:black'>Course discussion messages appear at the bottom 
+    of the resource being discussed. There are two types of attribution in course 
+    discussion messages. Users may choose to have their LON-CAPA id shown to everyone 
+    or they may have it shown only to instructors. Complete anonymity is not an 
+    option. If the users choose to hide their LON-CAPA id (an 'anonymous' message), 
+    they can set the name given in the [PREF] page. </span></p>
+  <p><span style='color:black'><b>Figures 2.2.8</b></span><span
+style='color:black'> through <b>2.2.10</b></span><span style='color:black'> show 
+    a course discussion feedback cycle. </span></p>
+  <p><span style='color:black'> <img width=256 height=63
+src="Session%20Tw1_files/image013.jpg" v:shapes="_x0000_i1030"> </span></p>
+  <p><span style='color:black'><b>Fig 2.2.8</b></span><span
+style='color:black'> - A Simple Resource</span></p>
+  <p><span style='color:black'> <img width=301 height=240
+src="Session%20Tw1_files/image015.jpg" v:shapes="_x0000_i1031"> </span></p>
+  <p><span style='color:black'><b>Fig. 2.2.9</b></span><span
+style='color:black'> Composing Discussion Feedback&nbsp; </span></p>
+  <p><span style='color:black'> <img width=292 height=170
+src="Session%20Tw1_files/image017.jpg" v:shapes="_x0000_i1032"> </span></p>
+  <p><span style='color:black'><b>Fig 2.2.10</b></span><span
+style='color:black'> The Resource with Anonymous and Non-anonymous Discussion</span></p>
+  <h3><a name="_Toc421867106">Messaging</a></h3>
+</div>
+<h1><span style='font-size:10.0pt;font-family:"Courier New";font-weight:normal'>&nbsp;</span></h1>
+<p><span style='color:black'>loncapa/loncom/interface/lonmsg.pm provides functions 
+  for sending users messages. All messaging is currently done via lonmsg.pm. The 
+  following subroutines handle the sending of various types of messages: </span></p>
+<p><span style='font-family:"Courier New";color:black'>author_res_msg </span></p>
+<p><span style='color:black'>Send a message to the author of a resource. </span></p>
+<p><span style='font-family:"Courier New";color:black'>user_crit_msg </span></p>
+<p><span style='color:black'>Send a critical message to a user. Critical messages 
+  require the user to acknowledge receipt before any other action in LON-CAPA 
+  can be taken. </span></p>
+<p><span style='font-family:"Courier New";color:black'>user_crit_received </span></p>
+<p><span style='color:black'>Notify the sender of a critical message that the 
+  message has been received. </span></p>
+<p><span style='font-family:"Courier New";color:black'>user_normal_msg </span></p>
+<p><span style='color:black'>Send a non-critical message to a user. </span></p>
+<p><span style='font-family:"Courier New";color:black'>statuschange </span></p>
+<p><span style='color:black'>Change the status of a message (read, replied, forwarded, 
+  etc) </span></p>
+<p><span style='color:black'>The lonmsg::handler takes care of the display and 
+  sending of messages. If you have the time, communicate with yourself! Note: 
+  Critical messages are displayed on login to LON-CAPA. Some message types are 
+  only available for course coordinators. </span></p>
+<h3><span style='color:black'>&nbsp;</span></h3>
+<h3><a name="_Toc421867107">Resource Feedback</a></h3>
+<p><img border=0 width=432 height=304 id="_x0000_i1028"
+src="handout_files/image004.jpg"></p>
+<p class=MsoHeader><span style='font-size:14.0pt'><b>Fig. 2.2.11</b></span><span style='font-size:14.0pt'> 
+  Ð Example of a Feedback</span></p>
+<br
+clear=ALL style='page-break-before:always;'>
+<div class=Section2> </div>
+</body>
+</html>
Index: doc/gutshtml/SessionTw2.html
diff -u doc/gutshtml/SessionTw2.html:1.1 doc/gutshtml/SessionTw2.html:1.2
--- doc/gutshtml/SessionTw2.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionTw2.html	Tue Jul 22 10:47:00 2003
@@ -1,1583 +1,3166 @@
-<html>
-<head>
-<meta name=Title content="Session Two: Statistics/Chart (Behrouz)">
-<meta http-equiv=Content-Type content="text/html; charset=macintosh">
-<link rel=Edit-Time-Data href="Session%20Tw2_files/editdata.mso">
-<link rel=OLE-Object-Data href="Session%20Tw2_files/oledata.mso">
-<title>Session Two: Statistics/Chart (Behrouz)</title>
-<style><!--
-.MsoFootnoteText
-	{font-size:10.0pt;
-	font-family:"Times New Roman";}
-.MsoHeader
-	{tab-stops:center 3.0in right 6.0in;
-	font-size:10.0pt;
-	font-family:"Times New Roman";}
-.MsoFootnoteReference
-	{vertical-align:super;}
-.MsoBodyText
-	{line-height:24.0pt;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	layout-grid-mode:line;}
-.MsoBodyTextIndent
-	{text-indent:-.5in;
-	font-size:10.0pt;
-	font-family:"Times New Roman";}
-.MsoBodyText2
-	{font-size:10.0pt;
-	font-family:"Times New Roman";
-	color:black;}
-.MsoBodyTextIndent2
-	{text-align:justify;
-	line-height:150%;
-	font-size:11.0pt;
-	font-family:"Times New Roman";}
-.MsoHyperlink
-	{color:blue;
-	text-decoration:underline;
-	text-underline:single;}
-.H5
-	{font-size:10.0pt;
-	font-family:"Times New Roman";
-	layout-grid-mode:line;
-	font-weight:bold;}
-.FirstParagraph
-	{text-align:justify;
-	font-size:10.0pt;
-	font-family:"Times New Roman";}
-.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 Two: Statistics/Chart (Behrouz)</h2>
-<p><span style='layout-grid-mode:line'>In LON-CAPA, we are involved with two kinds 
-  of large data sets: </span></p>
-<p> <span style='layout-grid-mode:line'>1)<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span> <span
-style='layout-grid-mode:line'>Educational resources such as </span>web pages, 
-  demonstrations, simulations, and individualized problems designed for use on 
-  homework assignments, quizzes, and examinations<span style='layout-grid-mode:
-line'>; </span></p>
-<p> <span style='layout-grid-mode:line'>2)<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span> <span
-style='layout-grid-mode:line'>Information about users who create, modify, assess, 
-  or use these resources. </span></p>
-<p><span style='layout-grid-mode:line'>Usually, instructors/ course coordinators 
-  wish to assess the studentsÕ educational situation or evaluate the problems 
-  have bee presented in the course, after the students used the educational materials. 
-  There are two main modules in LON_CAPA that provide the statistical information 
-  for instructors/ course-coordinators: <i>lonchart.pm </i></span><span style='layout-grid-mode:line'>and 
-  <i>lonstatistics.pm</i></span><span
-style='layout-grid-mode:line'>. When an instructorÕs access is authorized, he/she 
-  can find useful reports about the course, regarding maps, problems included 
-  in each map, and the students who tried to solve the problems. When an instructor 
-  selects a course, he/she has two buttons in remote control to obtain the statistical 
-  information: Ò<i>chart</i></span><span style='layout-grid-mode:
-line'>Ó or Ò<i>stat</i></span><span style='layout-grid-mode:line'>Ó button.</span></p>
-<h3 style='line-height:150%'><a name="_Toc421867139"><span style='layout-grid-mode:
-line'>lonchart.pm</span></a></h3>
-<p><span style='font-size:11.0pt;layout-grid-mode:line'>Ò<i>chart</i></span><span
-style='font-size:11.0pt;layout-grid-mode:line'>Ó button in remote control calls 
-  lonchart.pm, which provides a quick review of students tries on different problems 
-  of a course for an instructor.&nbsp; The instructor may monitor the number of 
-  tries of every student in each map and its problems.<span style='color:red'> 
-  </span>The number of solved problems in a map is shown in the end of each map 
-  with a different color (green). The overall solved problems and total number 
-  of problems in the map can be seen at the end of line according to every individual 
-  student in a different color (blue). A sample of chart is shown in <b>Fig. 3.2.1</b></span></p>
-<p><span style='font-size:9.0pt;border:solid windowtext .5pt;
-padding:0in'>xxxxxxx1:msu ! 001 ! 1*11*121 <span style='color:green'>8</span> 
-  1231.31423212 <span style='color:green'>12 </span>&nbsp;2111211284.131 <span style='color:green'>13</span> 
-  É&nbsp; 231113112221 <span style='color:green'>12</span>&nbsp; <span style='color:navy'>162 
-  / 188<br>
-  </span>xxxxxxx2:msu ! 003 ! 12113162 <span style='color:green'>8</span> 1+11&nbsp; 
-  1&nbsp; 21x111<span style='color:green'>10</span> 11211322246132 <span
-style='color:green'>14</span> É ############<span style='color:green'>&nbsp; &nbsp;&nbsp;0&nbsp; 
-  </span><span
-style='color:navy'>149 / 188</span><span style='color:green'> <br>
-  <br>
-  </span></span></p>
-<div style='border:solid windowtext .5pt;padding:1.0pt 0in 1.0pt 1.0pt'> 
-  <p style='border:none;padding:0in;'>1..9: correct by student in 1..9 tries </p>
-  <p style='border:none;padding:0in;'>*: correct by student in more than 9 tries 
-  </p>
-  <p style='border:none;padding:0in;'>+: correct by override </p>
-  <p style='border:none;padding:0in;'>-: incorrect by override </p>
-  <p style='border:none;padding:0in;'>.: incorrect attempted </p>
-  <p style='border:none;padding:0in;'>#: ungraded attempted </p>
-  <p style='border:none;padding:0in;'>Ô Ô: not attempted </p>
-  <p style='border:none;padding:0in;'>x: excused</p>
-</div>
-<p><span style='font-size:14.0pt'><b>Fig. 3.2.1</b></span><span
-style='font-size:14.0pt'> Chart of map, problems, and studentsÕ tries, and a quick 
-  statistics of solved problems</span></p>
-<p><span style='layout-grid-mode:line'>1. When an instructor loads the chart in 
-  his/her machine once, its data is cached in his/her local machine. If he/she 
-  runs the chart again, the course chart is loaded very quickly from the cache.</span></p>
-<p><span style='layout-grid-mode:line'>2. An instructor can sort the chart according 
-  to user name, last name, as well as, the section which student belongs to.</span></p>
-<div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'> 
-  <p align=center style='text-align:center;
-border:none;padding:0in;'><span style='font-size:8.0pt;font-family:Arial;
-display:none'>Top of Form</span></p>
-</div>
-<div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 0in 4.0pt'> 
-  <p align=center style='
-text-align:center;
-border:none;padding:
-0in;'><b>Sort by: &nbsp; </b><span
-style='font-weight:normal'>&nbsp;&nbsp;&nbsp; <img width=53 height=23
-src="Session%20Tw2_files/image003.png" v:shapes="_x0000_i1025"> &nbsp;&nbsp;&nbsp; 
-    <img width=51 height=23
-src="Session%20Tw2_files/image006.png" v:shapes="_x0000_i1026"> &nbsp;&nbsp;&nbsp; 
-    <img width=40 height=23
-src="Session%20Tw2_files/image009.png" v:shapes="_x0000_i1027"> <br>
-    <br>
-    </span></p>
-</div>
-<p>3. The instructor is able to select the ÒexpiredÓ students (who dropped the 
-  course earlier) or ÒactiveÓ students or ÒanyÓ (all the) students.</p>
-<div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 0in'> 
-  <p align=center style='
-text-align:center;
-border:none;padding:0in;
-'><br>
-    <b>Student Status: &nbsp; </b><span style='font-weight:normal'> <img width=66 height=18
-src="Session%20Tw2_files/image012.png" v:shapes="_x0000_i1028"> &nbsp;&nbsp;&nbsp; 
-    <img width=77 height=23
-src="Session%20Tw2_files/image015.png" v:shapes="_x0000_i1029"> </span></p>
-</div>
-<div style='border:none;border-top:solid windowtext .75pt;padding:1.0pt 0in 0in 0in'> 
-  <p align=center style='text-align:center;border:none;
-padding:0in;'><span
-style='font-size:8.0pt;font-family:Arial;display:none'>Bottom of Form</span></p>
-</div>
-<h3 style='line-height:200%'><a name="_Toc421867140"><span style='layout-grid-mode:
-line'>lonstatistics.pm</span></a></h3>
-<p><span style='layout-grid-mode:line'>In ÒstatÓ button of Òremote controlÓ, a 
-  menu with three options is provided for instructor: </span></p>
-<p> <span style='layout-grid-mode:line'>1)<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span> <span
-style='layout-grid-mode:line'>Problem stats</span></p>
-<p> <span style='layout-grid-mode:line'>2)<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span> <span
-style='layout-grid-mode:line'>Problem Analysis</span></p>
-<p> <span style='font-size:11.0pt;
-layout-grid-mode:line'>3)<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; 
-  </span></span> <span style='layout-grid-mode:line'>Student Assessment</span></p>
-<h4 style='line-height:150%'><span style='font-size:6.0pt;font-family:Arial;
-layout-grid-mode:line;font-weight:normal'> &nbsp; </span></h4>
-<h4><span style='font-size:12.0pt;font-family:Arial;layout-grid-mode:line'> &nbsp; 
-  </span></h4>
-<h4><span style='font-size:12.0pt;font-family:Arial;layout-grid-mode:line;
-font-weight:normal'>Problem Stats</span></h4>
-<p><span style='layout-grid-mode:line'>Ò<i>Problem Stats</i></span><span
-style='layout-grid-mode:line'>Ó button provides a table<a href="#_ftn1" name="_ftnref1" title=""><span class=MsoFootnoteReference> 
-  [1] </span></a> which includes statistical information about every problem, 
-  as you see in <b>Fig. 3.2.2</b></span><span style='layout-grid-mode:line'>. 
-  The function ExtractStudentData in lonstatitics Perl Module fetches all the 
-  data from a particular student<a name="_Hlt9981185"></a> .db file into a big 
-  hash in local machine. It uses dump function, which communicates via lonc/lond 
-  to get the student data from student repository (data server) and then all versions 
-  of student submissions computed according to every problem. The results are 
-  stored in an array in the memory.&nbsp; Before computing the studentsÕ tries 
-  in a particular problem, the different parts of problem are distinguished by 
-  considering the meta-data, which is provided for every problem. </span></p>
-<p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/mmp\/kap1\/calckap1\.sequence\0022 \\t \0022_blank\0022"'><span
-class=MsoHyperlink><span style='color:blue'>Homework Set 1</span></span></span> 
-</p>
-<table border=1 cellspacing=0 cellpadding=0>
-  <tr> 
-    <td width=21 class="Normal"> <p align=center style='text-align:center'><b>P#</b></p></td>
-    <td width=72 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=94 height=23
-  src="Session%20Tw2_files/image018.png" v:shapes="_x0000_i1030"> </b></p></td>
-    <td width=37 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=41 height=23
-  src="Session%20Tw2_files/image021.png" v:shapes="_x0000_i1031"> </b></p></td>
-    <td width=29 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=31 height=23
-  src="Session%20Tw2_files/image024.png" v:shapes="_x0000_i1032"> </b></p></td>
-    <td width=26 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=28 height=23
-  src="Session%20Tw2_files/image027.png" v:shapes="_x0000_i1033"> </b></p></td>
-    <td width=30 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=32 height=23
-  src="Session%20Tw2_files/image030.png" v:shapes="_x0000_i1034"> </b></p></td>
-    <td width=31 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=33 height=23
-  src="Session%20Tw2_files/image033.png" v:shapes="_x0000_i1035"> </b></p></td>
-    <td width=29 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=31 height=23
-  src="Session%20Tw2_files/image036.png" v:shapes="_x0000_i1036"> </b></p></td>
-    <td width=36 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=40 height=23
-  src="Session%20Tw2_files/image039.png" v:shapes="_x0000_i1037"> </b></p></td>
-    <td width=32 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=35 height=23
-  src="Session%20Tw2_files/image042.png" v:shapes="_x0000_i1038"> </b></p></td>
-    <td width=26 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=28 height=23
-  src="Session%20Tw2_files/image045.png" v:shapes="_x0000_i1039"> </b></p></td>
-    <td width=33 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=36 height=23
-  src="Session%20Tw2_files/image048.png" v:shapes="_x0000_i1040"> </b></p></td>
-    <td width=35 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=38 height=23
-  src="Session%20Tw2_files/image051.png" v:shapes="_x0000_i1041"> </b></p></td>
-    <td width=37 class="Normal"> <p align=center style='text-align:center'><b> 
-        <img width=41 height=23
-  src="Session%20Tw2_files/image054.png" v:shapes="_x0000_i1042"> </b></p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>1</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob11\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Calculator Skills</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>267</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>3</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>1.04</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>256</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>0.0</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.04</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>0.2</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>5.7</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>0.03</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>0.00</p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>2</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob10\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Numbers</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>414</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>17</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>1.62</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>255</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>0.4</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.38</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>1.6</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>5.7</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>0.11</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>0.02</p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>3</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/03_Units_Scaling\/msu-prob22\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Speed</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>698</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>13</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>2.73</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>255</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>0.4</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.63</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>2.2</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>1.9</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>0.06</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>0.02</p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>4</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob13\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Perimeter</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>388</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>7</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>1.52</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>255</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>0.4</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.34</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>0.9</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>2.4</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>-0.00</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>0.02</p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>5</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/devolibrary\/type-math\/fraction-rlt-235\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Reduce a Fraction</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>315</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>4</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>1.23</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>256</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>0.0</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.19</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>0.5</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>2.3</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>0.01</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>0.00</p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>6</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/devolibrary\/type-math\/fract-add-sub-div-p11\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Calculating with Fractions</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>393</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>7</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>1.54</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>255</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>0.4</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.35</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>0.9</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>2.0</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>0.15</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>0.02</p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>7</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob04\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Area of a Balloon</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>254</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>601</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>12</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>2.37</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>247</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>2.8</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.59</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>1.8</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>1.8</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>-0.05</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>-0.02</p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>8</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob07\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Volume of a Balloon</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>252</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>565</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>11</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>2.24</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>243</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>3.6</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.57</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>1.9</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>2.0</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>-0.06</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>-0.03</p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>9</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob12\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Numerical Value of Fraction</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>268</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>4</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>1.05</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>256</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>0.0</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.04</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>0.2</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>3.4</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>0.01</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>0.00</p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>10</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/03_Units_Scaling\/msu-prob17\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Units</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>1116</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>20</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>4.36</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>246</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>3.9</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.78</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>4.2</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>1.9</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>0.18</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>0.03</p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>11</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/06_Vectors_Scalars\/msu-prob07\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Vector versus Scalar</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>254</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>749</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>11</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>2.95</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>251</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>1.2</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.66</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>2.2</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>1.1</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>-0.05</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>-0.05</p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>12</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/06_Vectors_Scalars\/msu-prob10\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Adding Vectors</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>253</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>1026</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>20</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>4.06</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>250</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>1.2</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.76</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>3.6</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>1.8</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>0.14</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>0.00</p></td>
-  </tr>
-  <tr> 
-    <td width=21 class="Normal"> <p>13</p></td>
-    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/02_Math_2_Trig\/msu-prob13\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Proximity</span></span></span></span></p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>249</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>663</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>19</p></td>
-    <td width=30 bgcolor="white" class="Normal"> <p>2.66</p></td>
-    <td width=31 bgcolor="white" class="Normal"> <p>239</p></td>
-    <td width=29 bgcolor="white" class="Normal"> <p>1</p></td>
-    <td width=36 bgcolor="white" class="Normal"> <p>3.6</p></td>
-    <td width=32 bgcolor="white" class="Normal"> <p>0.64</p></td>
-    <td width=26 bgcolor="white" class="Normal"> <p>2.3</p></td>
-    <td width=33 bgcolor="white" class="Normal"> <p>2.8</p></td>
-    <td width=35 bgcolor="white" class="Normal"> <p>0.11</p></td>
-    <td width=37 bgcolor="white" class="Normal"> <p>-0.10</p></td>
-  </tr>
-</table>
-<p><span style='font-size:14.0pt'><b>Fig. 3.2.2</b></span><span
-style='font-size:14.0pt'>: Statistics table includes general statistics of every 
-  problem of the course</span></p>
-<p><span style='font-size:11.0pt;layout-grid-mode:line'>Every part of <i>multi-part</i></span><span style='font-size:11.0pt;layout-grid-mode:
-line'> problems is distinguished as a separate problem. The <i>multi-instance</i></span><span
-style='font-size:11.0pt;layout-grid-mode:line'> problem is also considered separately, 
-  because a particular problem or one part of it might be used in different maps. 
-  Finally, the array, which includes all computed information from all students, 
-  sorted according to the problem order, underlying in homework sets order. Therefore, 
-  in this step we can compute the following statistical information:</span></p>
-<p> <span style='font-size:11.0pt;
-layout-grid-mode:line'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
-  </span></span> <span style='font-size:11.0pt;layout-grid-mode:line'><b>#Stdnts</b></span><span
-style='font-size:11.0pt;layout-grid-mode:line'>: &nbsp;&nbsp;&nbsp;&nbsp; Total 
-  number of students who take a look at the problem.(Let #Stdnts is equal to <i>n</i></span><span style='font-size:
-11.0pt;layout-grid-mode:line'>)</span></p>
-<p> <span style='font-size:11.0pt;
-layout-grid-mode:line'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
-  </span></span> <span style='font-size:11.0pt;layout-grid-mode:line'><b>Tries:</b></span><span
-style='font-size:11.0pt;layout-grid-mode:line'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-  Total number of tries to solve the problem (</span><span style='font-size:11.0pt'> 
-  <img width=28 height=34
-src="Session%20Tw2_files/image057.png" v:shapes="_x0000_i1043"> where <i><sub> 
-  <img width=12 height=18
-src="Session%20Tw2_files/image060.png" v:shapes="_x0000_i1044"> </sub></i></span><span style='font-size:11.0pt'>denote 
-  a student try<span style='layout-grid-mode:line'>).</span></span></p>
-<p> <span style='font-size:11.0pt;
-layout-grid-mode:line'>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
-  </span></span> <span style='font-size:11.0pt;layout-grid-mode:line'><b>Mod: 
-  </b></span><span style='font-size:11.0pt;layout-grid-mode:line'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-  Mode, </span><span style='font-size:11.0pt'>Maximum Number of Tries for solving 
-  the problem.</span></p>
-<p> <span style='font-size:11.0pt;
-layout-grid-mode:line'>4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
-  </span></span> <span style='font-size:11.0pt'><b>Mean:</b></span><span
-style='font-size:11.0pt'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Average Number 
-  of the Tries. </span></p>
-<p><span style='font-size:11.0pt'> <img width=11 height=13
-src="Session%20Tw2_files/image063.png" v:shapes="_x0000_i1045"> = <img width=38 height=34
-src="Session%20Tw2_files/image066.png" v:shapes="_x0000_i1046"> </span></p>
-<p> 5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
-  <span style='font-size:11.0pt;layout-grid-mode:line'><b>#YES:</b></span><span
-style='font-size:11.0pt'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Number of students 
-  solved the problem correctly.</span></p>
-<p> <span style='font-size:11.0pt'>6.<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span> <span
-style='font-size:11.0pt'><b>#yes:</b></span><span style='font-size:11.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-  Number of students solved the problem by override. </span></p>
-<p><span style='font-size:11.0pt'>Sometimes, a student gets a correct answer after 
-  talking with the instructor. This type of correct answer is called Òcorrected 
-  by override.</span></p>
-<p> <span style='font-size:11.0pt'>7.<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span> <span
-style='font-size:11.0pt'><b>%Wrng:</b></span><span style='font-size:11.0pt'> &nbsp;&nbsp; 
-  Percentage of students tried to solve the problem but still incorrect. </span></p>
-<p><span style='font-size:11.0pt'> <img width=137 height=31
-src="Session%20Tw2_files/image069.png" v:shapes="_x0000_i1047"> </span></p>
-<p> <span style='font-size:11.0pt'>8.<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span> <span
-style='font-size:11.0pt'><b>S.D.:</b></span><span style='font-size:11.0pt'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-  <i>Standard Deviation</i></span><span style='font-size:11.0pt'> of the studentsÕ 
-  tries. </span></p>
-<p><span style='font-size:11.0pt'> <img width=98 height=40
-src="Session%20Tw2_files/image072.png" v:shapes="_x0000_i1048"> </span></p>
-<p> <span style='font-size:11.0pt'>9.<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span> <span
-style='font-size:11.0pt'><b>Skew.:</b></span><span style='font-size:11.0pt'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-  <i>Skewness</i></span><span
-style='font-size:11.0pt'> of the studentsÕ tries. </span></p>
-<p><span style='font-size:11.0pt'> <img width=194 height=76
-src="Session%20Tw2_files/image075.png" v:shapes="_x0000_i1049"> </span></p>
-<p> <span style='font-size:11.0pt'>10.<span
-style='font:7.0pt "Times New Roman"'>&nbsp; </span></span> <span
-style='font-size:11.0pt'><b>DoDiff:</b></span><span style='font-size:11.0pt'> 
-  &nbsp;&nbsp;&nbsp;&nbsp; <i>Degree of Difficulty</i></span><span
-style='font-size:11.0pt'> of the problem. </span></p>
-<p><span style='font-size:11.0pt'> <img width=100 height=38
-src="Session%20Tw2_files/image078.png" v:shapes="_x0000_i1050"> </span></p>
-<p><span style='font-size:11.0pt'>As you see Degree of Difficulty is always between 
-  0 and 1. This is a good factor for an instructor to determine whether a problem 
-  is difficult, and what is the degree of this difficulty. Thus, DoDiff of each 
-  problem is saved in its meta data.</span></p>
-<p> <span style='font-size:11.0pt'>11.<span
-style='font:7.0pt "Times New Roman"'>&nbsp; </span></span> <span
-style='font-size:11.0pt'><b>Dis.F.:</b></span><span style='font-size:11.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-  <i>Discrimination Factor</i></span><a href="#_ftn2" name="_ftnref2"
-title=""><span class=MsoFootnoteReference><span style='font-size:11.0pt'> [2] 
-  </span></span></a><span
-style='font-size:11.0pt'> is an standard for evaluating how much a problem discriminates 
-  between the upper and the lower students.&nbsp; First, all of the students are 
-  sorted according to a criterion. Then, %27 of upper students and %27 lower students 
-  are selected from the sorted students applying the mentioned criterion. Finally 
-  we obtain the Discrimination Factor from the following difference:</span></p>
-<p><span style='font-size:11.0pt'><i>Applied a criterion in %27 upper students 
-  - Applied the same Criterion in %27 lower students.</i></span></p>
-<p class=MsoBodyTextIndent2 align=left style='text-align:left;line-height:normal'>Discrimination 
-  Factor is a number in interval [-1,1]. If this number is close to 1, it shows 
-  that only upper students have solved this problem. If it is close to 0 it shows 
-  that the upper students and the lowers are approximately the same in solving 
-  the problem. If this number is negative, it shows that the lower students have 
-  more successes in solving the problem, and thus this problem is very poor in 
-  discriminating the upper and lower students.</p>
-<p><span style='font-size:11.0pt'>In lonstatistics.pm we compute the Discrimination 
-  Factor from two criteria:</span></p>
-<p><span style='font-size:11.0pt'><i>1st Criterion </i></span><span style='font-size:11.0pt'>for 
-  Sorting the Students: <img width=138 height=41
-src="Session%20Tw2_files/image081.png" v:shapes="_x0000_i1051"> </span></p>
-<p><span style='font-size:11.0pt'><i>2nd Criterion</i></span><span style='font-size:11.0pt'> 
-  for Sorting the Students: <img width=87 height=41
-src="Session%20Tw2_files/image084.png" v:shapes="_x0000_i1052"> </span></p>
-<p> <span style='font-size:11.0pt;
-font-family:Symbol;layout-grid-mode:line'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-  </span></span> <span style='font-size:11.0pt;layout-grid-mode:line'><b>Change 
-  the stats table sorting </b></span></p>
-<p><span style='font-size:11.0pt;layout-grid-mode:line'>As you see in Fig. 3.2. 
-  2, all headers in the stats table are buttons that change the order of the table. 
-  Users can change increasingly or decreasingly every column of the table. First 
-  the user select the Ò<i>ascending</i></span><span
-style='font-size:11.0pt;layout-grid-mode:line'>Ó or Ò<i>descending</i></span><span
-style='font-size:11.0pt;layout-grid-mode:line'>Ó option, then he/she can change 
-  the order of the table with clicking the header of his/her interested header. 
-  If the user changes the order the table, all information is shown in one table, 
-  each row corresponds to a particular problem. If the user selects the first 
-  column, Òhomework set orderÓ, the information is shown in different tables, 
-  each table corresponds to a particular homework set.&nbsp;&nbsp; </span></p>
-<p> <span style='font-size:11.0pt;
-font-family:Symbol;layout-grid-mode:line'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-  </span></span> <span style='font-size:11.0pt;layout-grid-mode:line'><b>Graphical 
-  chart </b></span></p>
-<p><span style='font-size:11.0pt;layout-grid-mode:line'>Two important features 
-  in this page might be seen through the graphical charts. That is, a user could 
-  see the content of Ò%wrongÓ column and Òdegree of difficulty of problemsÓ in 
-  the graphical chart as is shown in Fig. 3.2. 3 and 4 for homework set 1 in course 
-  PHY183 SS02. These graphical charts are produced dynamically by calling a CGI 
-  scripts, (graph.gif) which is located in /home/httpd/cgi-bin/</span></p>
-<p> <img width=231 height=173
-src="Session%20Tw2_files/image086.jpg" v:shapes="_x0000_i1053"> <span
-style='layout-grid-mode:line'> <img width=230 height=170
-src="Session%20Tw2_files/image088.jpg" v:shapes="_x0000_i1054"> </span></p>
-<p><b>Fig. 3.2. 3</b><span
-style='font-weight:normal'>: Degree of difficulty graph &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-  </span><b>Fig. 3.2. 4</b><span style='font-weight:normal'>: %Wrong graph</span></p>
-<h4 style='line-height:150%'><span style='font-size:12.0pt;font-family:Arial;
-layout-grid-mode:line'> &nbsp; </span></h4>
-<h3><a name="_Toc421867141"><span style='layout-grid-mode:line'>Problem Analysis</span></a></h3>
-<p><span style='font-size:11.0pt'>Conceptual option response problems, in which 
-  the students are given several concepts that are randomly assigned to each student, 
-  are more difficult than numerical simple problems.&nbsp; Instructors usually 
-  want to see the studentsÕ tries according to every particular concept separately. 
-  ÒProblem AnalysisÓ button provides all response option problems in one table 
-  as follows in the <b>Fig. 3.2.5.</b></span><span style='font-size:11.0pt'> </span></p>
-<div style='border:solid windowtext .5pt;padding:1.0pt 0in 1.0pt 4.0pt'> 
-  <p style='border:none;padding:0in;'><span style='font-size:11.0pt'>Total number 
-    of students: 263</span></p>
-  <p style='border:none;padding:0in;'><b>Select number of intervals</b><span style='font-weight:normal'> 
-    <img width=53 height=18
-src="Session%20Tw2_files/image091.png" v:shapes="_x0000_i1055"> </span></p>
-  <p style='border:none;padding:0in;'><b>Option Response Problems</b><span
-style='font-weight:normal'> </span><b>in course PHY183 SS02:</b></p>
-</div>
-<table border=1 cellspacing=0 cellpadding=0>
-  <tr> 
-    <td width=15 class="Normal"> <p align=center style='text-align:center'><b># 
-        </b></p></td>
-    <td width=83 class="Normal"> <p align=center style='text-align:center'><b>Problem 
-        Title </b></p></td>
-    <td width=298 class="Normal"> <p align=center style='text-align:center'><b>Resource 
-        </b></p></td>
-    <td width=77 class="Normal"> <p align=center style='text-align:center'><b>Address 
-        </b></p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>1 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob10\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Numbers</span></span></span> </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/01_Math_1/msu-prob10.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=72 height=23
-  src="Session%20Tw2_files/image094.png" v:shapes="_x0000_i1056"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>2 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/03_Units_Scaling\/msu-prob22\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Speed</span></span></span> </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/03_Units_Scaling/msu-prob22.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=72 height=23
-  src="Session%20Tw2_files/image097.png" v:shapes="_x0000_i1057"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>3 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/03_Units_Scaling\/msu-prob17\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Units</span></span></span> </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/03_Units_Scaling/msu-prob17.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=72 height=23
-  src="Session%20Tw2_files/image100.png" v:shapes="_x0000_i1058"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>4 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/06_Vectors_Scalars\/msu-prob07\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Vector versus Scalar</span></span></span> 
-      </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/06_Vectors_Scalars/msu-prob07.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=72 height=23
-  src="Session%20Tw2_files/image103.png" v:shapes="_x0000_i1059"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>5 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/06_Vectors_Scalars\/msu-prob10\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Adding Vectors</span></span></span> 
-      </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/06_Vectors_Scalars/msu-prob10.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=72 height=23
-  src="Session%20Tw2_files/image106.png" v:shapes="_x0000_i1060"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>6 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/05_1D_Motion\/msu-prob16\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Traveling Car</span></span></span> 
-      </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/05_1D_Motion/msu-prob16.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=59 height=23
-  src="Session%20Tw2_files/image109.png" v:shapes="_x0000_i1061"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>7 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/kashy\/Testing\/randomlabel\/atwood3T2M\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Atwood Machine</span></span></span> 
-      </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/kashy/Testing/randomlabel/atwood3T2M.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=63 height=23
-  src="Session%20Tw2_files/image112.png" v:shapes="_x0000_i1062"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>8 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/10_Motion_W_Friction\/msu-prob32\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Sliding mass concepts</span></span></span> 
-      </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/10_Motion_W_Friction/msu-prob32.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=59 height=23
-  src="Session%20Tw2_files/image115.png" v:shapes="_x0000_i1063"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>9 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/12_Work_Power_Energy\/msu-prob27\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Work, Power, Energy Concepts</span></span></span> 
-      </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/12_Work_Power_Energy/msu-prob27.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=68 height=23
-  src="Session%20Tw2_files/image118.png" v:shapes="_x0000_i1064"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>10 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/13_EnergyConservation\/msu-prob32\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Bead on a Wire</span></span></span> 
-      </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/13_EnergyConservation/msu-prob32.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=63 height=23
-  src="Session%20Tw2_files/image121.png" v:shapes="_x0000_i1065"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>11 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/20_Rot2_E_Trq_Accel\/msu-prob23\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Atwood Machine</span></span></span> 
-      </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/20_Rot2_E_Trq_Accel/msu-prob23.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=63 height=23
-  src="Session%20Tw2_files/image124.png" v:shapes="_x0000_i1066"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>12 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/21_Rot3_AngMom_Roll\/msu-prob38\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Flinstone Bowling</span></span></span> 
-      </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/21_Rot3_AngMom_Roll/msu-prob38.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=63 height=23
-  src="Session%20Tw2_files/image127.png" v:shapes="_x0000_i1067"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal"> <p>13 </p></td>
-    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/32_Fluids1_Pascal_Arch\/msu-prob12\.problem\0022 \\t \0022_blank\0022"'><span
-  class=MsoHyperlink><span style='color:blue'>Boat on Pond</span></span></span> 
-      </p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/32_Fluids1_Pascal_Arch/msu-prob12.problem 
-      </p></td>
-    <td width=77 class="Normal"> <p> <img width=68 height=23
-  src="Session%20Tw2_files/image130.png" v:shapes="_x0000_i1068"> </p></td>
-  </tr>
-  <tr> 
-    <td width=15 class="Normal">&nbsp; </td>
-    <td width=83 bgcolor="white" class="Normal"> <p align=center style='text-align:center'>É</p></td>
-    <td width=298 bgcolor="white" class="Normal"> <p align=center style='text-align:center'>É</p></td>
-    <td width=77 class="Normal"> <p align=center style='text-align:center'>É</p></td>
-  </tr>
-</table>
-<p><span style='font-size:11.0pt'><b>Fig. 3.2.5</b></span><span
-style='font-size:11.0pt'>: Option response problems in course PHY183 SS02</span></p>
-<p><b>Fig. 3.2.5</b><span style='font-weight:normal'> includes a table, which 
-  shows the title of every option response problem in the first column. This title 
-  has a link to the original html page of the problem.&nbsp; In the second column 
-  the source address of the problem is shown. Third column of this table includes 
-  a button to analyze the studentsÕ data on this particular option response problem. 
-  When this button is clicked, all data about this problem is <i>restored</i></span>, 
-  for every student.&nbsp; Different versions of studentsÕ submissions are evaluated. 
-  The results are presented in a graphical chart as well as a numerical table. 
-  For example, if we select the analysis of&nbsp; <b>/res/msu/kashy/Testing/randomlabel/atwood3T2M.problem</b></p>
-<p> <span style='position:
-relative;z-index:0'><span style='position:absolute;left:-37px;top:-32px;
-width:248px;height:174px'> <table cellpadding=0 cellspacing=0> <tr> <td width=249 height=174 align=left valign=top bgcolor=white class="Normal"
-  style='border:.75pt solid black;vertical-align:top;background:white'><span
-  style='position:absolute;z-index:1'> 
-  <table cellpadding=0 cellspacing=0 width="100%">
-    <tr> 
-      <td class="Normal"> <div v:shape="_x0000_s1026" style='padding:3.6pt 7.2pt 3.6pt 7.2pt'
-    class=shape> 
-          <p class=FirstParagraph><span lang=PT-BR
-    style='font-size:9.0pt'>A frictionless, massless pulley is attached to the 
-            ceiling, in a gravity field g. Mass Ma is greater than mass Mb. The 
-            tensions Tx,Ty, Tz, and the constant g are magnitudes. (For each, 
-            select: Greater than, Less than, Equal to, True, or False) </span></p>
-          <p class=FirstParagraph><span lang=PT-BR style='font-size:9.0pt'> <img width=96 height=114
-    src="Session%20Tw2_files/image132.jpg" v:shapes="_x0000_i1069"> &nbsp; <img width=125 height=120
-    src="Session%20Tw2_files/image135.png" v:shapes="_x0000_i1070"> </span></p>
-        </div></td>
-    </tr>
-  </table>
-  &nbsp; </span></td></tr> </table> &nbsp; 
-  <p></p>
-  <br clear=all>
-  <p align=right style='text-align:right'> <span style='position:
-absolute;z-index:1;left:0px;margin-left:229px;margin-top:97px;width:235px;
-height:40px'> <table cellpadding=0 cellspacing=0> <tr> <td width=236 height=40 align=left valign=top bgcolor=white class="Normal" style='border:
-  .75pt solid white;vertical-align:top;background:white'><span
-  style='position:absolute;left:0pt;z-index:3'> 
-    <table cellpadding=0 cellspacing=0 width="100%">
-      <tr> 
-        <td class="Normal"> <div v:shape="_x0000_s1028" style='padding:3.6pt 7.2pt 3.6pt 7.2pt'
-    class=shape> 
-            <p><span style='font-size:9.0pt'><b>Fig. 3.2.7</b></span><span
-    style='font-size:9.0pt'>: Graphical chart of student tries for </span></p>
-            <p><span style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Atwood Machine Problem 
-              according </span></p>
-            <p><span style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-              to every concept in 1 interval time.</span></p>
-          </div></td>
-      </tr>
-    </table>
-    &nbsp; </span></td></tr> </table> <img width=203 height=150
-src="Session%20Tw2_files/image137.png" v:shapes="_x0000_i1071"> 
-    <p></p>
-    <p><span style='font-size:9.0pt'><b>Fig. 3.2.6</b></span><span
-style='font-size:9.0pt'>: Atwood Machine option response problem in HW3<b> </b></span></p>
-    <p><span style='font-size:11.0pt'>In addition, the data of studentsÕ tries 
-      are shown in a table as you see in <b>Fig. 3.2.8</b></span><span
-style='font-size:11.0pt'>. In the last row of the table you can see the time interval 
-      of this data and the overall correct and wrong answers separately. If an 
-      instructor wants to see the studentsÕ tries in different time intervals, 
-      he/she could set the number of intervals from 1 to 7 time intervals, and 
-      then recompute the analysis. </span></p>
-    <table border=1 cellspacing=0 cellpadding=0>
-      <tr> 
-        <td width=10 class="Normal"> <p align=center style='text-align:center'><b># 
-            </b></p></td>
-        <td width=357 class="Normal"> <p align=center style='text-align:center'><b>Concept 
-            </b></p></td>
-        <td width=38 class="Normal"> <p align=center style='text-align:center'><b>Correct 
-            </b></p></td>
-        <td width=35 class="Normal"> <p align=center style='text-align:center'><b>Wrong 
-            </b></p></td>
-      </tr>
-      <tr> 
-        <td width=10 class="Normal"> <p>1</p></td>
-        <td width=357 bgcolor="white" class="Normal"> <p>Two masses have same 
-            acceleration if the two the string does not stretch. </p></td>
-        <td width=38 bgcolor="white" class="Normal"> <p>1342 </p></td>
-        <td width=35 bgcolor="white" class="Normal"> <p>433 </p></td>
-      </tr>
-      <tr> 
-        <td width=10 class="Normal"> <p>2</p></td>
-        <td width=357 bgcolor="white" class="Normal"> <p>Weight of the two masses 
-            is greater than the tension of the string attached to the ceiling. 
-          </p></td>
-        <td width=38 bgcolor="white" class="Normal"> <p>585 </p></td>
-        <td width=35 bgcolor="white" class="Normal"> <p>1190 </p></td>
-      </tr>
-      <tr> 
-        <td width=10 class="Normal"> <p>3</p></td>
-        <td width=357 bgcolor="white" class="Normal"> <p>The top tension is equals 
-            the two bottom tensions. (massless pulley) </p></td>
-        <td width=38 bgcolor="white" class="Normal"> <p>1263 </p></td>
-        <td width=35 bgcolor="white" class="Normal"> <p>512 </p></td>
-      </tr>
-      <tr> 
-        <td width=10 class="Normal"> <p>4</p></td>
-        <td width=357 bgcolor="white" class="Normal"> <p>Tension holding the two 
-            masses are equal if mass of pulley=0 </p></td>
-        <td width=38 bgcolor="white" class="Normal"> <p>1087 </p></td>
-        <td width=35 bgcolor="white" class="Normal"> <p>688 </p></td>
-      </tr>
-      <tr> 
-        <td width=10 class="Normal"> <p>5</p></td>
-        <td width=357 bgcolor="white" class="Normal"> <p>Sub-System accelerates 
-            upwards or downwards accordingly </p></td>
-        <td width=38 bgcolor="white" class="Normal"> <p>757 </p></td>
-        <td width=35 bgcolor="white" class="Normal"> <p>1018 </p></td>
-      </tr>
-      <tr> 
-        <td width=10 class="Normal"> <p>6</p></td>
-        <td width=357 bgcolor="white" class="Normal"> <p>Center of mass accelerates 
-            downward </p></td>
-        <td width=38 bgcolor="white" class="Normal"> <p>1354 </p></td>
-        <td width=35 bgcolor="white" class="Normal"> <p>421 </p></td>
-      </tr>
-      <tr> 
-        <td width=10 class="Normal">&nbsp; </td>
-        <td width=357 class="Normal"> <p><b>From:[Thu Jan 24 00:46:22 2002] To: 
-            [Mon Feb 4 23:59:59 2002]</b></p></td>
-        <td width=38 class="Normal"> <p>6388</p></td>
-        <td width=35 class="Normal"> <p>4245</p></td>
-      </tr>
-    </table>
-    <p><span style='font-size:11.0pt'><b>Fig. 3.2.8</b></span><span
-style='font-size:11.0pt'>: Table of student tries for Atwood Machine Problem according 
-      to every concept in one time interval.</span></p>
-    <p> <span
-style='position:relative;z-index:2'><span style='position:
-absolute;left:-109px;top:-166px;width:341px;height:24px'> <img width=341
-height=24 src="Session%20Tw2_files/image138.png" v:shapes="_x0000_s1027"> <img width=203 height=150
-src="Session%20Tw2_files/image140.png" v:shapes="_x0000_i1072"> <img width=203 height=150
-src="Session%20Tw2_files/image142.png" v:shapes="_x0000_i1073"> 
-      <p></p>
-      <table border=1 cellspacing=0 cellpadding=0>
-        <tr> 
-          <td width=10 class="Normal"> <p align=center style='text-align:center'><b># 
-              </b></p></td>
-          <td width=357 class="Normal"> <p align=center style='text-align:center'><b>Concept 
-              </b></p></td>
-          <td width=38 class="Normal"> <p align=center style='text-align:center'><b>Correct 
-              </b></p></td>
-          <td width=35 class="Normal"> <p align=center style='text-align:center'><b>Wrong 
-              </b></p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>1</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Two masses have same 
-              acceleration if the two the string does not stretch. </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>124 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>98 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>2</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Weight of the two masses 
-              is greater than the tension of the string attached to the ceiling. 
-            </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>44 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>178 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>3</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>The top tension is 
-              equals the two bottom tensions. (massless pulley) </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>142 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>80 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>4</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Tension holding the 
-              two masses are equal if mass of pulley=0 </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>125 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>97 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>5</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Sub-System accelerates 
-              upwards or downwards accordingly </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>64 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>158 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>6</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Center of mass accelerates 
-              downward </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>151 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>71 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal">&nbsp; </td>
-          <td width=357 class="Normal"> <p><b>From:[Thu Jan 24 00:46:22 2002] 
-              To: [Wed Jan 30 00:23:10 2002]</b></p></td>
-          <td width=38 class="Normal"> <p>650</p></td>
-          <td width=35 class="Normal"> <p>682</p></td>
-        </tr>
-      </table>
-      <table border=1 cellspacing=0 cellpadding=0>
-        <tr> 
-          <td width=10 class="Normal"> <p align=center style='text-align:center'><b># 
-              </b></p></td>
-          <td width=357 class="Normal"> <p align=center style='text-align:center'><b>Concept 
-              </b></p></td>
-          <td width=38 class="Normal"> <p align=center style='text-align:center'><b>Correct 
-              </b></p></td>
-          <td width=35 class="Normal"> <p align=center style='text-align:center'><b>Wrong 
-              </b></p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>1</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Two masses have same 
-              acceleration if the two the string does not stretch. </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>1218 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>335 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>2</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Weight of the two masses 
-              is greater than the tension of the string attached to the ceiling. 
-            </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>541 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>1012 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>3</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>The top tension is 
-              equals the two bottom tensions. (massless pulley) </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>1121 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>432 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>4</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Tension holding the 
-              two masses are equal if mass of pulley=0 </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>962 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>591 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>5</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Sub-System accelerates 
-              upwards or downwards accordingly </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>693 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>860 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>6</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Center of mass accelerates 
-              downward </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>1203 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>350 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal">&nbsp; </td>
-          <td width=357 class="Normal"> <p><b>From:[Wed Jan 30 00:23:11 2002] 
-              To: [Mon Feb 4 23:59:59 2002]</b></p></td>
-          <td width=38 class="Normal"> <p>5738</p></td>
-          <td width=35 class="Normal"> <p>3563</p></td>
-        </tr>
-      </table>
-      <p><span style='font-size:11.0pt'><b>Fig. 3.2.9</b></span><span
-style='font-size:11.0pt'>: Table of student tries for Atwood Machine Problem according 
-        to every concept in 2 times interval.</span></p>
-      <p>In <b>Fig. 3.2.9</b><span style='font-weight:normal'>, number of studentsÕ 
-        tries tables and the graphical chart are shown in 2 different time intervals. 
-        An instructor would be able to check whether the students have more wrong 
-        answers during the first days of opening the homework set, and how many 
-        students have tried during the first or the second interval. Since the 
-        problems are individualized he/she might be able to see how many students 
-        have tried to solve the problem after communicating with each other and 
-        understanding the concept.&nbsp; In Fig. 3.2. 10 the charts and tables 
-        of studentsÕ tries are shown in 3 time intervals. So if the homework should 
-        be done in one week, an instructor would be able to observe the distribution 
-        of studentsÕ tries every day separately after choosing the 7 time intervals.</span></p>
-      <p> <img width=151 height=150
-src="Session%20Tw2_files/image144.png" v:shapes="_x0000_i1074"> <img width=151 height=150
-src="Session%20Tw2_files/image146.png" v:shapes="_x0000_i1075"> <img width=149 height=150
-src="Session%20Tw2_files/image148.png" v:shapes="_x0000_i1076"> </p>
-      <table border=1 cellspacing=0 cellpadding=0>
-        <tr> 
-          <td width=10 class="Normal"> <p align=center style='text-align:center'><b># 
-              </b></p></td>
-          <td width=357 class="Normal"> <p align=center style='text-align:center'><b>Concept 
-              </b></p></td>
-          <td width=38 class="Normal"> <p align=center style='text-align:center'><b>Correct 
-              </b></p></td>
-          <td width=35 class="Normal"> <p align=center style='text-align:center'><b>Wrong 
-              </b></p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>1</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Two masses have same 
-              acceleration if the two the string does not stretch. </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>31 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>30 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>2</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Weight of the two masses 
-              is greater than the tension of the string attached to the ceiling. 
-            </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>8 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>53 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>3</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>The top tension is 
-              equals the two bottom tensions. (massless pulley) </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>44 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>17 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>4</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Tension holding the 
-              two masses are equal if mass of pulley=0 </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>32 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>29 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>5</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Sub-System accelerates 
-              upwards or downwards accordingly </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>20 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>41 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>6</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Center of mass accelerates 
-              downward </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>42 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>19 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal">&nbsp; </td>
-          <td width=357 class="Normal"> <p><b>From:[Thu Jan 24 00:46:22 2002] 
-              To: [Mon Jan 28 00:30:53 2002]</b></p></td>
-          <td width=38 class="Normal"> <p>177</p></td>
-          <td width=35 class="Normal"> <p>189</p></td>
-        </tr>
-      </table>
-      <table border=1 cellspacing=0 cellpadding=0>
-        <tr> 
-          <td width=10 class="Normal"> <p align=center style='text-align:center'><b># 
-              </b></p></td>
-          <td width=357 class="Normal"> <p align=center style='text-align:center'><b>Concept 
-              </b></p></td>
-          <td width=38 class="Normal"> <p align=center style='text-align:center'><b>Correct 
-              </b></p></td>
-          <td width=35 class="Normal"> <p align=center style='text-align:center'><b>Wrong 
-              </b></p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>1</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Two masses have same 
-              acceleration if the two the string does not stretch. </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>692 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>257 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>2</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Weight of the two masses 
-              is greater than the tension of the string attached to the ceiling. 
-            </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>321 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>628 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>3</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>The top tension is 
-              equals the two bottom tensions. (massless pulley) </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>690 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>259 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>4</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Tension holding the 
-              two masses are equal if mass of pulley=0 </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>590 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>359 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>5</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Sub-System accelerates 
-              upwards or downwards accordingly </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>399 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>550 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>6</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Center of mass accelerates 
-              downward </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>703 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>246 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal">&nbsp; </td>
-          <td width=357 class="Normal"> <p><b>From:[Mon Jan 28 00:30:54 2002] 
-              To: [Fri Feb 1 00:15:25 2002]</b></p></td>
-          <td width=38 class="Normal"> <p>3395</p></td>
-          <td width=35 class="Normal"> <p>2281</p></td>
-        </tr>
-      </table>
-      <table border=1 cellspacing=0 cellpadding=0>
-        <tr> 
-          <td width=10 class="Normal"> <p align=center style='text-align:center'><b># 
-              </b></p></td>
-          <td width=357 class="Normal"> <p align=center style='text-align:center'><b>Concept 
-              </b></p></td>
-          <td width=38 class="Normal"> <p align=center style='text-align:center'><b>Correct 
-              </b></p></td>
-          <td width=35 class="Normal"> <p align=center style='text-align:center'><b>Wrong 
-              </b></p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>1</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Two masses have same 
-              acceleration if the two the string does not stretch. </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>619 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>147 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>2</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Weight of the two masses 
-              is greater than the tension of the string attached to the ceiling. 
-            </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>256 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>510 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>3</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>The top tension is 
-              equals the two bottom tensions. (massless pulley) </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>529 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>237 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>4</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Tension holding the 
-              two masses are equal if mass of pulley=0 </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>465 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>301 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>5</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Sub-System accelerates 
-              upwards or downwards accordingly </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>338 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>428 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal"> <p>6</p></td>
-          <td width=357 bgcolor="white" class="Normal"> <p>Center of mass accelerates 
-              downward </p></td>
-          <td width=38 bgcolor="white" class="Normal"> <p>609 </p></td>
-          <td width=35 bgcolor="white" class="Normal"> <p>157 </p></td>
-        </tr>
-        <tr> 
-          <td width=10 class="Normal">&nbsp; </td>
-          <td width=357 class="Normal"> <p><b>From:[Fri Feb 1 00:15:26 2002] To: 
-              [Mon Feb 4 23:59:59 2002]</b></p></td>
-          <td width=38 class="Normal"> <p>2816</p></td>
-          <td width=35 class="Normal"> <p>1775</p></td>
-        </tr>
-      </table>
-      <p><b>Fig. 3.2. 10</b><span style='font-weight:normal'>: Table of student 
-        tries for Atwood Machine Problem according to every concept in 3 times 
-        interval.</span></p>
-      <h3><a name="_Toc421867142">Student Assessment</a></h3>
-      <p class=MsoBodyText2><span style='font-size:11.0pt'>This option provides 
-        some reports about the current educational situation of every student 
-        as you see in <b>Fig. 3.2.11</b></span><span style='font-size:11.0pt'>.&nbsp; 
-        A ÔYÕ show that the student has solved the problem and ÔNÕ shows his/her 
-        failure.&nbsp; A Ô-Ô denotes a unattempted problem. The numbers in the 
-        right column show the total number of tries of the student in solving 
-        the corresponding problems.</span></p>
-      <form>
-        <div style='border:solid windowtext .5pt;padding:1.0pt 0in 1.0pt 4.0pt'> 
-          <p style='border:none;padding:0in;'>Total number of students : 263<br>
-            <br>
-            <img width=68 height=23
-src="Session%20Tw2_files/image151.png" v:shapes="_x0000_i1077"> <br>
-            <b>Select &nbsp; Map &nbsp; &nbsp; </b><span style='font-weight:normal'> 
-            <img width=215 height=18
-src="Session%20Tw2_files/image154.png" v:shapes="_x0000_i1078"> &nbsp;&nbsp;&nbsp;<br>
-            </span><b>Select Section</b><span style='font-weight:normal'> <img width=89 height=18
-src="Session%20Tw2_files/image157.png" v:shapes="_x0000_i1079"> <br>
-            </span><b>Select Student</b><span style='font-weight:normal'> <img width=89 height=18
-src="Session%20Tw2_files/image160.png" v:shapes="_x0000_i1080"> <br>
-            <br>
-            </span></p>
-          <p style='border:none;padding:0in;'> <img width=93 height=23
-src="Session%20Tw2_files/image163.png" v:shapes="_x0000_i1081"> </p>
-        </div>
-        <table border=1 cellspacing=0 cellpadding=0>
-          <tr> 
-            <td width=21 class="Normal"> <p align=center style='text-align:center;line-height:150%'><b># 
-                </b></p></td>
-            <td width=177 class="Normal"> <p align=center style='text-align:center;line-height:150%'><b>Set 
-                Title </b></p></td>
-            <td width=122 class="Normal"> <p align=center style='text-align:center;line-height:150%'><b>Results 
-                </b></p></td>
-            <td width=153 class="Normal"> <p align=center style='text-align:center;line-height:150%'><b>Tries 
-                </b></p></td>
-          </tr>
-          <tr> 
-            <td width=21 class="Normal"> <p style='line-height:150%'>1 </p></td>
-            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/phy183.sequence 
-              </p></td>
-            <td width=122 class="Normal">&nbsp; </td>
-            <td width=153 class="Normal">&nbsp; </td>
-          </tr>
-          <tr> 
-            <td width=21 class="Normal"> <p style='line-height:150%'>2 </p></td>
-            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap1/calckap1.sequence 
-              </p></td>
-            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYYYYYY 
-                </span></p></td>
-            <td width=153 class="Normal"> <p style='line-height:150%'>1,1,1,2,1,1,1,1,1,7,9,3,2</p></td>
-          </tr>
-          <tr> 
-            <td width=21 class="Normal"> <p style='line-height:150%'>3 </p></td>
-            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap2/calckap2.sequence 
-              </p></td>
-            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYNYYYYNNYYYYYYYY 
-                </span></p></td>
-            <td width=153 class="Normal"> <p style='line-height:150%'>10,1,0,1,1,2,1,4,5,1,1,1,3,2,1,1,1</p></td>
-          </tr>
-          <tr> 
-            <td width=21 class="Normal"> <p style='line-height:150%'>4 </p></td>
-            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap3/calckap3.sequence 
-              </p></td>
-            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYNYYYYYYYYYY 
-                </span></p></td>
-            <td width=153 class="Normal"> <p style='line-height:150%'>4,3,5,1,1,8,2,3,20,1,1,1,1,1,2,3,2,2,3</p></td>
-          </tr>
-          <tr> 
-            <td width=21 class="Normal"> <p style='line-height:150%'>5 </p></td>
-            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap4/calckap4.sequence 
-              </p></td>
-            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>NYYYYYYYYYYYYYYY 
-                </span></p></td>
-            <td width=153 class="Normal"> <p style='line-height:150%'>20,1,1,1,3,3,2,3,4,2,3,2,1,1,2,5</p></td>
-          </tr>
-          <tr> 
-            <td width=21 class="Normal"> <p style='line-height:150%'>6 </p></td>
-            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap5/calckap5.sequence 
-              </p></td>
-            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYYYY-YY 
-                </span></p></td>
-            <td width=153 class="Normal"> <p style='line-height:150%'>5,2,1,9,12,1,3,12,1,2,1,,1,3</p></td>
-          </tr>
-          <tr> 
-            <td width=21 class="Normal"> <p style='line-height:150%'>7 </p></td>
-            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap6/calckap6.sequence 
-              </p></td>
-            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYYYYYYY 
-                </span></p></td>
-            <td width=153 class="Normal"> <p style='line-height:150%'>3,2,4,2,1,1,2,1,1,9,2,3,2,2</p></td>
-          </tr>
-          <tr> 
-            <td width=21 class="Normal"> <p style='line-height:150%'>8 </p></td>
-            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap7/calckap7.sequence 
-              </p></td>
-            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYYYYYYYYYYY 
-                </span></p></td>
-            <td width=153 class="Normal"> <p style='line-height:150%'>4,1,3,1,10,4,1,1,2,1,1,2,1,2,1,3,1,3</p></td>
-          </tr>
-          <tr> 
-            <td width=21 class="Normal"> <p style='line-height:150%'>9 </p></td>
-            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap8/calckap8.sequence 
-              </p></td>
-            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYYYYYYYY 
-                </span></p></td>
-            <td width=153 class="Normal"> <p style='line-height:150%'>4,3,1,2,3,3,4,3,3,1,1,4,1,1,7</p></td>
-          </tr>
-          <tr> 
-            <td width=21 class="Normal"> <p style='line-height:150%'>10 </p></td>
-            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap9/calckap9.sequence 
-              </p></td>
-            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYN-NYYNY 
-                </span></p></td>
-            <td width=153 class="Normal"> <p style='line-height:150%'>1,1,1,2,1,,2,2,1,6,4</p></td>
-          </tr>
-          <tr> 
-            <td width=21 class="Normal"> <p style='line-height:150%'>11 </p></td>
-            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap10/calckap10.sequence 
-              </p></td>
-            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYYYYY 
-                </span></p></td>
-            <td width=153 class="Normal"> <p style='line-height:150%'>2,1,1,1,1,1,1,1,1,1,1,1</p></td>
-          </tr>
-          <tr> 
-            <td width=21 class="Normal"> <p style='line-height:150%'>12 </p></td>
-            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap11/calckap11.sequence 
-              </p></td>
-            <td width=122 class="Normal"> <p style='line-height:150%'>----------------- 
-              </p></td>
-            <td width=153 class="Normal"> <p style='line-height:150%'>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</p></td>
-          </tr>
-        </table>
-        <p><span style='layout-grid-mode:line'><b>Fig. 3.2. 5</b></span><span
-style='layout-grid-mode:line'>: A sample of a student homework results and tries</span></p>
-        <p><span style='font-size:11.0pt;layout-grid-mode:line'>We plan to present 
-          several other reports in this page as well. Some student classification 
-          reports also would be depicted here.</span></p>
-        <p><span style='font-size:11.0pt;layout-grid-mode:line'>In Òproblem statsÓ 
-          and Òstudent assessmentÓ pages, an instructor can limit the range of 
-          his/her information to a particular section or a particular homework 
-          set.&nbsp; So, an instructor would be able to load the statistics table 
-          or student tries in Òstudent assessmentÓ table to a particular map or 
-          section. </span><span style='font-size:11.0pt'>After changing the map 
-          or section, he/she would be able to see the results via the recalculating 
-          the computation on that page. </span><span style='font-size:11.0pt;
-font-family:Arial;layout-grid-mode:line'></span></p>
-        <h3><a name="_Toc421867143"><span style='layout-grid-mode:line'>Future 
-          work, using activity.log to classify the students</span></a></h3>
-        <p><span style='font-size:11.0pt'>The problem is whether we can find the 
-          good features for <i>classifying</i></span><span style='font-size:
-11.0pt'> students? If so, we would be able to identify a <i>predictor</i></span><span
-style='font-size:11.0pt'> for any individual student after doing a couple of homework 
-          sets. With this information, we would be able to <i>help</i></span><span
-style='font-size:11.0pt'> a student use the resources better.&nbsp; <span style='layout-grid-mode:line'>As 
-          the first step of data mining stuff w</span>e want to make an initial 
-          effort to classify the students. </span></p>
-        <p><span style='font-size:11.0pt'>Preprocessing and finding the useful 
-          student data and segmenting may be a difficult task. Internally, one 
-          part of this data is stored in a student directory:</span></p>
-        <p><span style='font-size:11.0pt'>&nbsp;</span><span style='font-size:11.0pt;font-family:"Courier New"'>/</span><span
-style='font-size:9.0pt;font-family:"Courier New"'>home/httpd/lonUsers/<i>domain</i></span><span
-style='font-size:9.0pt;font-family:"Courier New"'>/<i>1st.char</i></span><span
-style='font-size:9.0pt;font-family:"Courier New"'>/<i>2nd.char</i></span><span
-style='font-size:9.0pt;font-family:"Courier New"'>/<i>3rd.char</i></span><span
-style='font-size:9.0pt;font-family:"Courier New"'>/<i>username</i></span><span
-style='font-size:9.0pt;font-family:"Courier New"'>/</span></p>
-        <p class=MsoHeader><span style='font-size:11.0pt'>For example: /home/httpd/lonUsers/msu/m/i/n/minaeibi/</span></p>
-        <p><span style='font-size:11.0pt;layout-grid-mode:line'>Since spring semester 
-          2002, LON-CAPA has logged every activity of every student who has used</span><span style='font-size:11.0pt'> 
-          online educational resources and their recorded paths through the web. 
-          So another part of data is stored in Òactivity.logÓ which is located 
-          in course directory.</span></p>
-        <p><span style='font-size:11.0pt'>The student data restored from .db files 
-          in student directory and is fetched into a hash table. The special hash 
-          keys Ò<i>keysÓ</i></span><span style='font-size:11.0pt'>, Ò<i>versionÓ</i></span><span
-style='font-size:11.0pt'> and Ò<i>timestampÓ</i></span><span style='font-size:
-11.0pt'> were evaluated from the hash. The <i>version</i></span><span
-style='font-size:11.0pt'> will be equal to the total number of versions of the 
-          data that have been stored. The <i>timestamp</i></span><span style='font-size:
-11.0pt'> attribute is the UNIX time the data was stored. <i>keys</i></span><span
-style='font-size:11.0pt'> is available in every historical section to list which 
-          keys were added or changed at a specific historical revision of a hash. 
-          We extract the features from a structured homework data, which is stored 
-          as particular URLÕs. For example the result of solving homeworkÕs problem 
-          by students could be extracted from </span><span style='font-size:9.0pt;
-font-family:"Courier New"'><i>resource.partid.solved</i></span><span
-style='font-size:11.0pt;font-family:"Courier New"'>, </span><span
-style='font-size:11.0pt'>the total number of the students for solving the problem 
-          could be extracted from </span><span style='font-size:9.0pt;font-family:
-"Courier New"'><i>resource.partid.tries</i></span><span style='font-size:11.0pt;
-font-family:"Courier New"'>,</span><span style='font-size:11.0pt'> and so forth.</span></p>
-        <p><span style='font-size:11.0pt'>All data stored in activity.log includes 
-          <i>user name</i></span><span style='font-size:11.0pt'>, <i>time</i></span><span
-style='font-size:11.0pt'> and <i>resource URL</i></span><span style='font-size:
-11.0pt'>. We can divide these data into six types of URLs, listed below, according 
-          to their importance for data mining: </span></p>
-        <p style='line-height:150%'><span style='font-size:11.0pt'>1. <b><u>problems:</u></b></span><span
-style='font-size:11.0pt'> are the most useful data. i.e.<b><u> </u></b></span><span
-style='font-size:7.0pt'><b><u>msu/mmp/kap14/kap14.sequence___33___msu/mmp/kap14/problems/cd418a.problem</u></b></span> 
-          <br>
-          <span style='font-size:11.0pt'>2. <b>html pages</b></span><span
-style='font-size:11.0pt'> to those are some links in the problems. i.e. </span><span
-style='font-size:7.0pt'><b>msu/mmp/kap14/kap14.sequence___5___msu/mmp/kap14/cd396.htm</b></span> 
-          <br>
-          <span style='font-size:11.0pt'>3. <i>the images</i></span><span
-style='font-size:11.0pt'>, which are loaded in above html pages. i.e. <i>/res/msu/mmp/kap14/picts/backsoun.gif</i></span><span
-style='font-size:11.0pt'> .</span></p>
-        <p style='line-height:150%'><span style='font-size:11.0pt'>4. <u>loncapa 
-          routines</u>: i.e. <u>/adm/navmaps,</u>&nbsp; or&nbsp; <u>/adm/roles,</u> 
-          or&nbsp; <u>/adm/logout</u>.<br>
-          5. <i><u>Posted data</u></i></span><span style='font-size:11.0pt'> by 
-          students: i.e. <i><u>resource.0.11.submission=27.11</u></i></span><span style='font-size:
-11.0pt'> <br>
-          6. remote control gif files: i.e.: /res/adm/pages/v.gif </span></p>
-        <p>So, activity.log usually grows fast, when students have more access 
-          to the educational resources. We have brought a sample of different 
-          types of data which are logged in activity.log after a preprocessing 
-          phase as follows:&nbsp; </p>
-        <p><u>144) 1010955846: studentX --&gt; /adm/navmaps</u> <br>
-          <i>145) 1010955205: studentX --&gt; /res/msu/mmp/kap14/picts/beta_eqn.gif</i><span
-style='font-style:normal'> <br>
-          <u>146) 1010955685: studentX --&gt; /adm/navmaps</u> <br>
-          <u>147) 1010955988: studentX --&gt; /adm/navmaps</u> <br>
-          </span><span style='font-size:8.0pt'><b>148) 1010955998: studentX --&gt; 
-          msu/mmp/kap14/kap14.sequence___5___msu/mmp/kap14/cd396.htm</b></span> 
-          <br>
-          <i>149) 1010955999: studentX --&gt; /res/msu/mmp/kap14/picts/velocity_eqn3.gif</i> 
-          <br>
-          <i>150) 1010956000: studentX --&gt; /res/msu/mmp/kap14/picts/time_eqn.gif</i><span style='font-style:normal'> 
-          <br>
-          151) 1010954609: studentX --&gt; /res/adm/pages/grds.gif <br>
-          </span><i>152) 1010954611: studentX --&gt; /res/msu/mmp/wordproc.gif</i><span
-style='font-style:normal'> <br>
-          153) 1010954626: studentX --&gt; /res/adm/pages/i.gif <br>
-          </span><span style='font-size:8.0pt'><b>154) 1010955717: studentX --&gt; 
-          msu/mmp/kap14/kap14.sequence___1___msu/mmp/kap14/cd392.htm</b></span> 
-          <br>
-          <i>155) 1010955717: studentX --&gt; /res/msu/mmp/kap14/picts/backsoun.gif</i> 
-          <br>
-          <span style='font-size:8.0pt'><b>156) 1010955920: studentX --&gt; msu/mmp/kap14/kap14.sequence___3___msu/mmp/kap14/cd394.htm</b></span> 
-          <br>
-          <i>157) 1010955921: studentX --&gt; /res/msu/mmp/gifs/demo.gif</i><span
-style='font-style:normal'> <br>
-          158) 1010956113: studentX --&gt; /res/adm/pages/v.gif <br>
-          159) 1010954629: studentX --&gt; /res/adm/pages/eval.gif <br>
-          160) 1010954631: studentX --&gt; /res/adm/pages/back.gif <br>
-          161) 1010954632: studentX --&gt; /res/adm/pages/b.gif <br>
-          162) 1010954633: studentX --&gt; /res/adm/pages/r.gif <br>
-          </span><span style='font-size:9.0pt'><b>163) 1010955754:</b></span><b> 
-          studentX --&gt; msu/mmp/kap14/kap14.sequence___2___msu/mmp/kap14/cd393.htm</b><span
-style='font-weight:normal'> <br>
-          <i>164) 1010955756: studentX --&gt; /res/msu/mmp/kap14/picts/asound.jpg</i></span> 
-          <br>
-          <i>165) 1010955762: studentX --&gt; /res/msu/mmp/kap14/picts/sensor.jpg</i> 
-          <br>
-          <i>166) 1010955999: studentX --&gt; /res/msu/mmp/gifs2/example.gif</i><span
-style='font-style:normal'> <br>
-          173) 1010955687: studentX --&gt; /res/adm/pages/u.gif <br>
-          174) 1010955688: studentX --&gt; /res/adm/pages/s.gif <br>
-          175) 1010955688: studentX --&gt; /res/adm/pages/e.gif <br>
-          </span><span style='font-size:9.0pt'><b>176) 1010956528:</b></span><b> 
-          studentX</b><span
-style='font-size:9.0pt'><b> --&gt; msu/mmp/kap14/kap14.sequence___33___msu/mmp/kap14/problems/cd418a.problem</b></span> 
-          <br>
-          <i><u>177) Sent data</u></i> <br>
-          <span style='font-size:9.0pt'><b><u>178) 1010956536: </u></b></span><b><u>studentX</u></b><span
-style='font-size:9.0pt'><u><b> --&gt;</b></u></span><b><u> </u></b><span
-style='font-size:9.0pt'><u><b>msu/mmp/kap14/kap14.sequence___33___msu/mmp/kap14/problems/cd418a.problem</b></u></span> 
-          <br>
-          <i><u>179) Sent data HWVAL11=27.11</u></i> <br>
-          <span style='font-size:9.0pt'><b><u>180) 1010956536:</u></b></span><b><u> 
-          studentX</u></b><span style='font-size:9.0pt'><u><b> --&gt;</b></u></span><b><u> 
-          </u></b><span style='font-size:9.0pt'><u><b>msu/mmp/kap14/kap14.sequence___33___msu/mmp/kap14/problems/cd418a.problem</b></u></span> 
-          <br>
-          <i><u>181) Sent data resource.0.11.submission=27.11</u></i> <br>
-          <span style='font-size:9.0pt'><b><u>182) 1010956702: studentX --&gt; 
-          msu/mmp/kap14/kap14.sequence___33___msu/mmp/kap14/problems/cd418a.problem</u></b></span> 
-          <br>
-          <span style='font-size:11.0pt'><i><u>183) Sent data</u></i></span><span
-style='font-size:11.0pt'> <br>
-          <i>184) 1010955921: studentX --&gt; /res/msu/mmp/kap14/picts/areal.gif</i></span><span
-style='font-size:11.0pt'> <br>
-          185) 1010955731: studentX --&gt; /res/adm/pages/n.gif <br>
-          <br>
-          </span></p>
-        <p class=H5> <span
-style='font-size:11.0pt;font-family:Symbol;font-weight:normal'>á<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span> 
-          <span
-style='font-size:11.0pt;font-family:Arial'>Feature Extraction</span></p>
-        <p class=MsoBodyText2>From these two types of student data which are stored 
-          by the LON-CAPA system, the features may be considered for classifying 
-          the students, are as follows: </p>
-        <p> 1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
-          </span> Total number of correct answers. </p>
-        <p> 2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
-          </span> Total number of tries for doing homework. </p>
-        <p> 3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
-          </span> Time at which the student got the problem correct. Usually better 
-          students get the homework completed earlier.</p>
-        <p> 4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
-          </span> Reading the material before attempting homework vs. attempting 
-          first and then read up on it.</p>
-        <p> 5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
-          </span> Submitting a lot of attempts in a short amount of time without 
-          looking up material in between, vs. those giving it one try, reading 
-          up, submitting another one, etc.</p>
-        <p> 6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
-          </span> Getting the problem right on the first try, vs. those with high 
-          number of tries.</p>
-        <p> 7.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
-          </span> Giving up on a problem versus students continuing trying up 
-          to the deadline.</p>
-        <p> 8.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
-          </span> Participating in the communication mechanisms, vs. those working 
-          alone.</p>
-        <p><br>
-          It might be interesting to group students with time of the first log 
-          on (beginning of assignment, middle of the week, last minute) and correlate 
-          this with the number of tries or number of solved problems. A student 
-          who gets all correct answers will not necessarily be in the successful 
-          group if they took an average of 5 tries per problem, but it should 
-          be verified from this research. </p>
-        <p>We hope to find similar patterns of use in the data gathered from LON-CAPA, 
-          and eventually be able to make predictions as to the most-beneficial 
-          course of studies for each learner based on a limited number of variables 
-          for each individual student. Based on the current state of the learner 
-          in a learning sequence, the system could then make suggestions to the 
-          learner as to how to proceed. </p>
-      </form>
-      <br
-clear=ALL style='page-break-before:always;'>
-      <div class=Section2> </div></div>
-      <br clear=all>
-      <hr align=left size=1 width="33%">
-      <div id=ftn1> 
-        <p class=MsoFootnoteText><a href="#_ftnref1"
-name="_ftn1" title=""><span class=MsoFootnoteReference> [1] </span></a> If instructor 
-          is going to port the statistics table data to Excel, he/she can select 
-          the checkbox ÒOutput CSV formatÓ at top of the statistics table.</p>
-      </div>
-      <div id=ftn2> 
-        <p class=MsoFootnoteText><a href="#_ftnref2"
-name="_ftn2" title=""><span class=MsoFootnoteReference> [2] </span></a>&nbsp; 
-          This name has been got from administration office of Michigan State 
-          University for evaluating the examsÕ problem. Here we expanded this 
-          expression to homework problems as well.</p>
-      </div></span></span></span></span></span>
-      
-</body>
-</html>
+<html>
+
+<head>
+
+<meta name=Title content="Session Two: Statistics/Chart (Behrouz)">
+
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+
+<link rel=Edit-Time-Data href="Session%20Tw2_files/editdata.mso">
+
+<link rel=OLE-Object-Data href="Session%20Tw2_files/oledata.mso">
+
+<title>Session Two: Statistics/Chart (Behrouz)</title>
+
+<style><!--
+
+.MsoFootnoteText
+
+	{font-size:10.0pt;
+
+	font-family:"Times New Roman";}
+
+.MsoHeader
+
+	{tab-stops:center 3.0in right 6.0in;
+
+	font-size:10.0pt;
+
+	font-family:"Times New Roman";}
+
+.MsoFootnoteReference
+
+	{vertical-align:super;}
+
+.MsoBodyText
+
+	{line-height:24.0pt;
+
+	font-size:12.0pt;
+
+	font-family:"Times New Roman";
+
+	layout-grid-mode:line;}
+
+.MsoBodyTextIndent
+
+	{text-indent:-.5in;
+
+	font-size:10.0pt;
+
+	font-family:"Times New Roman";}
+
+.MsoBodyText2
+
+	{font-size:10.0pt;
+
+	font-family:"Times New Roman";
+
+	color:black;}
+
+.MsoBodyTextIndent2
+
+	{text-align:justify;
+
+	line-height:150%;
+
+	font-size:11.0pt;
+
+	font-family:"Times New Roman";}
+
+.MsoHyperlink
+
+	{color:blue;
+
+	text-decoration:underline;
+
+	text-underline:single;}
+
+.H5
+
+	{font-size:10.0pt;
+
+	font-family:"Times New Roman";
+
+	layout-grid-mode:line;
+
+	font-weight:bold;}
+
+.FirstParagraph
+
+	{text-align:justify;
+
+	font-size:10.0pt;
+
+	font-family:"Times New Roman";}
+
+.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 Two: Statistics/Chart (Behrouz)</h2>
+
+<p><span style='layout-grid-mode:line'>In LON-CAPA, we are involved with two kinds 
+
+  of large data sets: </span></p>
+
+<p> <span style='layout-grid-mode:line'>1)<span
+
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span> <span
+
+style='layout-grid-mode:line'>Educational resources such as </span>web pages, 
+
+  demonstrations, simulations, and individualized problems designed for use on 
+
+  homework assignments, quizzes, and examinations<span style='layout-grid-mode:
+
+line'>; </span></p>
+
+<p> <span style='layout-grid-mode:line'>2)<span
+
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span> <span
+
+style='layout-grid-mode:line'>Information about users who create, modify, assess, 
+
+  or use these resources. </span></p>
+
+<p><span style='layout-grid-mode:line'>Usually, instructors/ course coordinators 
+
+  wish to assess the studentsÕ educational situation or evaluate the problems 
+
+  have bee presented in the course, after the students used the educational materials. 
+
+  There are two main modules in LON_CAPA that provide the statistical information 
+
+  for instructors/ course-coordinators: <i>lonchart.pm </i></span><span style='layout-grid-mode:line'>and 
+
+  <i>lonstatistics.pm</i></span><span
+
+style='layout-grid-mode:line'>. When an instructorÕs access is authorized, he/she 
+
+  can find useful reports about the course, regarding maps, problems included 
+
+  in each map, and the students who tried to solve the problems. When an instructor 
+
+  selects a course, he/she has two buttons in remote control to obtain the statistical 
+
+  information: Ò<i>chart</i></span><span style='layout-grid-mode:
+
+line'>Ó or Ò<i>stat</i></span><span style='layout-grid-mode:line'>Ó button.</span></p>
+
+<h3 style='line-height:150%'><a name="_Toc421867139"><span style='layout-grid-mode:
+
+line'>lonchart.pm</span></a></h3>
+
+<p><span style='font-size:11.0pt;layout-grid-mode:line'>Ò<i>chart</i></span><span
+
+style='font-size:11.0pt;layout-grid-mode:line'>Ó button in remote control calls 
+
+  lonchart.pm, which provides a quick review of students tries on different problems 
+
+  of a course for an instructor.&nbsp; The instructor may monitor the number of 
+
+  tries of every student in each map and its problems.<span style='color:red'> 
+
+  </span>The number of solved problems in a map is shown in the end of each map 
+
+  with a different color (green). The overall solved problems and total number 
+
+  of problems in the map can be seen at the end of line according to every individual 
+
+  student in a different color (blue). A sample of chart is shown in <b>Fig. 3.2.1</b></span></p>
+
+<p><span style='font-size:9.0pt;border:solid windowtext .5pt;
+
+padding:0in'>xxxxxxx1:msu ! 001 ! 1*11*121 <span style='color:green'>8</span> 
+
+  1231.31423212 <span style='color:green'>12 </span>&nbsp;2111211284.131 <span style='color:green'>13</span> 
+
+  É&nbsp; 231113112221 <span style='color:green'>12</span>&nbsp; <span style='color:navy'>162 
+
+  / 188<br>
+
+  </span>xxxxxxx2:msu ! 003 ! 12113162 <span style='color:green'>8</span> 1+11&nbsp; 
+
+  1&nbsp; 21x111<span style='color:green'>10</span> 11211322246132 <span
+
+style='color:green'>14</span> É ############<span style='color:green'>&nbsp; &nbsp;&nbsp;0&nbsp; 
+
+  </span><span
+
+style='color:navy'>149 / 188</span><span style='color:green'> <br>
+
+  <br>
+
+  </span></span></p>
+
+<div style='border:solid windowtext .5pt;padding:1.0pt 0in 1.0pt 1.0pt'> 
+
+  <p style='border:none;padding:0in;'>1..9: correct by student in 1..9 tries </p>
+
+  <p style='border:none;padding:0in;'>*: correct by student in more than 9 tries 
+
+  </p>
+
+  <p style='border:none;padding:0in;'>+: correct by override </p>
+
+  <p style='border:none;padding:0in;'>-: incorrect by override </p>
+
+  <p style='border:none;padding:0in;'>.: incorrect attempted </p>
+
+  <p style='border:none;padding:0in;'>#: ungraded attempted </p>
+
+  <p style='border:none;padding:0in;'>Ô Ô: not attempted </p>
+
+  <p style='border:none;padding:0in;'>x: excused</p>
+
+</div>
+
+<p><span style='font-size:14.0pt'><b>Fig. 3.2.1</b></span><span
+
+style='font-size:14.0pt'> Chart of map, problems, and studentsÕ tries, and a quick 
+
+  statistics of solved problems</span></p>
+
+<p><span style='layout-grid-mode:line'>1. When an instructor loads the chart in 
+
+  his/her machine once, its data is cached in his/her local machine. If he/she 
+
+  runs the chart again, the course chart is loaded very quickly from the cache.</span></p>
+
+<p><span style='layout-grid-mode:line'>2. An instructor can sort the chart according 
+
+  to user name, last name, as well as, the section which student belongs to.</span></p>
+
+<div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'> 
+
+  <p align=center style='text-align:center;
+
+border:none;padding:0in;'><span style='font-size:8.0pt;font-family:Arial;
+
+display:none'>Top of Form</span></p>
+
+</div>
+
+<div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 0in 4.0pt'> 
+
+  <p align=center style='
+
+text-align:center;
+
+border:none;padding:
+
+0in;'><b>Sort by: &nbsp; </b><span
+
+style='font-weight:normal'>&nbsp;&nbsp;&nbsp; <img width=53 height=23
+
+src="Session%20Tw2_files/image003.png" v:shapes="_x0000_i1025"> &nbsp;&nbsp;&nbsp; 
+
+    <img width=51 height=23
+
+src="Session%20Tw2_files/image006.png" v:shapes="_x0000_i1026"> &nbsp;&nbsp;&nbsp; 
+
+    <img width=40 height=23
+
+src="Session%20Tw2_files/image009.png" v:shapes="_x0000_i1027"> <br>
+
+    <br>
+
+    </span></p>
+
+</div>
+
+<p>3. The instructor is able to select the ÒexpiredÓ students (who dropped the 
+
+  course earlier) or ÒactiveÓ students or ÒanyÓ (all the) students.</p>
+
+<div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 0in'> 
+
+  <p align=center style='
+
+text-align:center;
+
+border:none;padding:0in;
+
+'><br>
+
+    <b>Student Status: &nbsp; </b><span style='font-weight:normal'> <img width=66 height=18
+
+src="Session%20Tw2_files/image012.png" v:shapes="_x0000_i1028"> &nbsp;&nbsp;&nbsp; 
+
+    <img width=77 height=23
+
+src="Session%20Tw2_files/image015.png" v:shapes="_x0000_i1029"> </span></p>
+
+</div>
+
+<div style='border:none;border-top:solid windowtext .75pt;padding:1.0pt 0in 0in 0in'> 
+
+  <p align=center style='text-align:center;border:none;
+
+padding:0in;'><span
+
+style='font-size:8.0pt;font-family:Arial;display:none'>Bottom of Form</span></p>
+
+</div>
+
+<h3 style='line-height:200%'><a name="_Toc421867140"><span style='layout-grid-mode:
+
+line'>lonstatistics.pm</span></a></h3>
+
+<p><span style='layout-grid-mode:line'>In ÒstatÓ button of Òremote controlÓ, a 
+
+  menu with three options is provided for instructor: </span></p>
+
+<p> <span style='layout-grid-mode:line'>1)<span
+
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span> <span
+
+style='layout-grid-mode:line'>Problem stats</span></p>
+
+<p> <span style='layout-grid-mode:line'>2)<span
+
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span> <span
+
+style='layout-grid-mode:line'>Problem Analysis</span></p>
+
+<p> <span style='font-size:11.0pt;
+
+layout-grid-mode:line'>3)<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; 
+
+  </span></span> <span style='layout-grid-mode:line'>Student Assessment</span></p>
+
+<h4 style='line-height:150%'><span style='font-size:6.0pt;font-family:Arial;
+
+layout-grid-mode:line;font-weight:normal'> &nbsp; </span></h4>
+
+<h4><span style='font-size:12.0pt;font-family:Arial;layout-grid-mode:line'> &nbsp; 
+
+  </span></h4>
+
+<h4><span style='font-size:12.0pt;font-family:Arial;layout-grid-mode:line;
+
+font-weight:normal'>Problem Stats</span></h4>
+
+<p><span style='layout-grid-mode:line'>Ò<i>Problem Stats</i></span><span
+
+style='layout-grid-mode:line'>Ó button provides a table<a href="#_ftn1" name="_ftnref1" title=""><span class=MsoFootnoteReference> 
+
+  [1] </span></a> which includes statistical information about every problem, 
+
+  as you see in <b>Fig. 3.2.2</b></span><span style='layout-grid-mode:line'>. 
+
+  The function ExtractStudentData in lonstatitics Perl Module fetches all the 
+
+  data from a particular student<a name="_Hlt9981185"></a> .db file into a big 
+
+  hash in local machine. It uses dump function, which communicates via lonc/lond 
+
+  to get the student data from student repository (data server) and then all versions 
+
+  of student submissions computed according to every problem. The results are 
+
+  stored in an array in the memory.&nbsp; Before computing the studentsÕ tries 
+
+  in a particular problem, the different parts of problem are distinguished by 
+
+  considering the meta-data, which is provided for every problem. </span></p>
+
+<p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/mmp\/kap1\/calckap1\.sequence\0022 \\t \0022_blank\0022"'><span
+
+class=MsoHyperlink><span style='color:blue'>Homework Set 1</span></span></span> 
+
+</p>
+
+<table border=1 cellspacing=0 cellpadding=0>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p align=center style='text-align:center'><b>P#</b></p></td>
+
+    <td width=72 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=94 height=23
+
+  src="Session%20Tw2_files/image018.png" v:shapes="_x0000_i1030"> </b></p></td>
+
+    <td width=37 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=41 height=23
+
+  src="Session%20Tw2_files/image021.png" v:shapes="_x0000_i1031"> </b></p></td>
+
+    <td width=29 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=31 height=23
+
+  src="Session%20Tw2_files/image024.png" v:shapes="_x0000_i1032"> </b></p></td>
+
+    <td width=26 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=28 height=23
+
+  src="Session%20Tw2_files/image027.png" v:shapes="_x0000_i1033"> </b></p></td>
+
+    <td width=30 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=32 height=23
+
+  src="Session%20Tw2_files/image030.png" v:shapes="_x0000_i1034"> </b></p></td>
+
+    <td width=31 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=33 height=23
+
+  src="Session%20Tw2_files/image033.png" v:shapes="_x0000_i1035"> </b></p></td>
+
+    <td width=29 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=31 height=23
+
+  src="Session%20Tw2_files/image036.png" v:shapes="_x0000_i1036"> </b></p></td>
+
+    <td width=36 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=40 height=23
+
+  src="Session%20Tw2_files/image039.png" v:shapes="_x0000_i1037"> </b></p></td>
+
+    <td width=32 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=35 height=23
+
+  src="Session%20Tw2_files/image042.png" v:shapes="_x0000_i1038"> </b></p></td>
+
+    <td width=26 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=28 height=23
+
+  src="Session%20Tw2_files/image045.png" v:shapes="_x0000_i1039"> </b></p></td>
+
+    <td width=33 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=36 height=23
+
+  src="Session%20Tw2_files/image048.png" v:shapes="_x0000_i1040"> </b></p></td>
+
+    <td width=35 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=38 height=23
+
+  src="Session%20Tw2_files/image051.png" v:shapes="_x0000_i1041"> </b></p></td>
+
+    <td width=37 class="Normal"> <p align=center style='text-align:center'><b> 
+
+        <img width=41 height=23
+
+  src="Session%20Tw2_files/image054.png" v:shapes="_x0000_i1042"> </b></p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>1</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob11\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Calculator Skills</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>267</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>3</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>1.04</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>256</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>0.0</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.04</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>0.2</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>5.7</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>0.03</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>0.00</p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>2</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob10\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Numbers</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>414</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>17</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>1.62</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>255</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>0.4</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.38</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>1.6</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>5.7</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>0.11</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>0.02</p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>3</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/03_Units_Scaling\/msu-prob22\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Speed</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>698</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>13</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>2.73</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>255</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>0.4</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.63</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>2.2</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>1.9</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>0.06</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>0.02</p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>4</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob13\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Perimeter</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>388</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>7</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>1.52</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>255</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>0.4</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.34</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>0.9</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>2.4</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>-0.00</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>0.02</p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>5</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/devolibrary\/type-math\/fraction-rlt-235\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Reduce a Fraction</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>315</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>4</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>1.23</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>256</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>0.0</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.19</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>0.5</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>2.3</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>0.01</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>0.00</p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>6</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/devolibrary\/type-math\/fract-add-sub-div-p11\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Calculating with Fractions</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>393</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>7</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>1.54</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>255</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>0.4</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.35</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>0.9</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>2.0</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>0.15</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>0.02</p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>7</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob04\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Area of a Balloon</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>254</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>601</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>12</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>2.37</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>247</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>2.8</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.59</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>1.8</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>1.8</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>-0.05</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>-0.02</p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>8</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob07\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Volume of a Balloon</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>252</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>565</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>11</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>2.24</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>243</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>3.6</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.57</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>1.9</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>2.0</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>-0.06</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>-0.03</p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>9</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob12\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Numerical Value of Fraction</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>268</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>4</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>1.05</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>256</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>0.0</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.04</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>0.2</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>3.4</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>0.01</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>0.00</p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>10</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/03_Units_Scaling\/msu-prob17\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Units</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>256</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>1116</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>20</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>4.36</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>246</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>3.9</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.78</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>4.2</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>1.9</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>0.18</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>0.03</p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>11</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/06_Vectors_Scalars\/msu-prob07\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Vector versus Scalar</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>254</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>749</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>11</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>2.95</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>251</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>1.2</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.66</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>2.2</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>1.1</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>-0.05</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>-0.05</p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>12</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/06_Vectors_Scalars\/msu-prob10\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Adding Vectors</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>253</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>1026</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>20</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>4.06</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>250</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>0</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>1.2</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.76</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>3.6</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>1.8</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>0.14</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>0.00</p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=21 class="Normal"> <p>13</p></td>
+
+    <td width=72 class="Normal"> <p><span style='font-size:9.0pt'><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/02_Math_2_Trig\/msu-prob13\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Proximity</span></span></span></span></p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>249</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>663</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>19</p></td>
+
+    <td width=30 bgcolor="white" class="Normal"> <p>2.66</p></td>
+
+    <td width=31 bgcolor="white" class="Normal"> <p>239</p></td>
+
+    <td width=29 bgcolor="white" class="Normal"> <p>1</p></td>
+
+    <td width=36 bgcolor="white" class="Normal"> <p>3.6</p></td>
+
+    <td width=32 bgcolor="white" class="Normal"> <p>0.64</p></td>
+
+    <td width=26 bgcolor="white" class="Normal"> <p>2.3</p></td>
+
+    <td width=33 bgcolor="white" class="Normal"> <p>2.8</p></td>
+
+    <td width=35 bgcolor="white" class="Normal"> <p>0.11</p></td>
+
+    <td width=37 bgcolor="white" class="Normal"> <p>-0.10</p></td>
+
+  </tr>
+
+</table>
+
+<p><span style='font-size:14.0pt'><b>Fig. 3.2.2</b></span><span
+
+style='font-size:14.0pt'>: Statistics table includes general statistics of every 
+
+  problem of the course</span></p>
+
+<p><span style='font-size:11.0pt;layout-grid-mode:line'>Every part of <i>multi-part</i></span><span style='font-size:11.0pt;layout-grid-mode:
+
+line'> problems is distinguished as a separate problem. The <i>multi-instance</i></span><span
+
+style='font-size:11.0pt;layout-grid-mode:line'> problem is also considered separately, 
+
+  because a particular problem or one part of it might be used in different maps. 
+
+  Finally, the array, which includes all computed information from all students, 
+
+  sorted according to the problem order, underlying in homework sets order. Therefore, 
+
+  in this step we can compute the following statistical information:</span></p>
+
+<p> <span style='font-size:11.0pt;
+
+layout-grid-mode:line'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  </span></span> <span style='font-size:11.0pt;layout-grid-mode:line'><b>#Stdnts</b></span><span
+
+style='font-size:11.0pt;layout-grid-mode:line'>: &nbsp;&nbsp;&nbsp;&nbsp; Total 
+
+  number of students who take a look at the problem.(Let #Stdnts is equal to <i>n</i></span><span style='font-size:
+
+11.0pt;layout-grid-mode:line'>)</span></p>
+
+<p> <span style='font-size:11.0pt;
+
+layout-grid-mode:line'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  </span></span> <span style='font-size:11.0pt;layout-grid-mode:line'><b>Tries:</b></span><span
+
+style='font-size:11.0pt;layout-grid-mode:line'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  Total number of tries to solve the problem (</span><span style='font-size:11.0pt'> 
+
+  <img width=28 height=34
+
+src="Session%20Tw2_files/image057.png" v:shapes="_x0000_i1043"> where <i><sub> 
+
+  <img width=12 height=18
+
+src="Session%20Tw2_files/image060.png" v:shapes="_x0000_i1044"> </sub></i></span><span style='font-size:11.0pt'>denote 
+
+  a student try<span style='layout-grid-mode:line'>).</span></span></p>
+
+<p> <span style='font-size:11.0pt;
+
+layout-grid-mode:line'>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  </span></span> <span style='font-size:11.0pt;layout-grid-mode:line'><b>Mod: 
+
+  </b></span><span style='font-size:11.0pt;layout-grid-mode:line'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  Mode, </span><span style='font-size:11.0pt'>Maximum Number of Tries for solving 
+
+  the problem.</span></p>
+
+<p> <span style='font-size:11.0pt;
+
+layout-grid-mode:line'>4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  </span></span> <span style='font-size:11.0pt'><b>Mean:</b></span><span
+
+style='font-size:11.0pt'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Average Number 
+
+  of the Tries. </span></p>
+
+<p><span style='font-size:11.0pt'> <img width=11 height=13
+
+src="Session%20Tw2_files/image063.png" v:shapes="_x0000_i1045"> = <img width=38 height=34
+
+src="Session%20Tw2_files/image066.png" v:shapes="_x0000_i1046"> </span></p>
+
+<p> 5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span> 
+
+  <span style='font-size:11.0pt;layout-grid-mode:line'><b>#YES:</b></span><span
+
+style='font-size:11.0pt'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Number of students 
+
+  solved the problem correctly.</span></p>
+
+<p> <span style='font-size:11.0pt'>6.<span
+
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span> <span
+
+style='font-size:11.0pt'><b>#yes:</b></span><span style='font-size:11.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  Number of students solved the problem by override. </span></p>
+
+<p><span style='font-size:11.0pt'>Sometimes, a student gets a correct answer after 
+
+  talking with the instructor. This type of correct answer is called Òcorrected 
+
+  by override.</span></p>
+
+<p> <span style='font-size:11.0pt'>7.<span
+
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span> <span
+
+style='font-size:11.0pt'><b>%Wrng:</b></span><span style='font-size:11.0pt'> &nbsp;&nbsp; 
+
+  Percentage of students tried to solve the problem but still incorrect. </span></p>
+
+<p><span style='font-size:11.0pt'> <img width=137 height=31
+
+src="Session%20Tw2_files/image069.png" v:shapes="_x0000_i1047"> </span></p>
+
+<p> <span style='font-size:11.0pt'>8.<span
+
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span> <span
+
+style='font-size:11.0pt'><b>S.D.:</b></span><span style='font-size:11.0pt'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  <i>Standard Deviation</i></span><span style='font-size:11.0pt'> of the studentsÕ 
+
+  tries. </span></p>
+
+<p><span style='font-size:11.0pt'> <img width=98 height=40
+
+src="Session%20Tw2_files/image072.png" v:shapes="_x0000_i1048"> </span></p>
+
+<p> <span style='font-size:11.0pt'>9.<span
+
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span> <span
+
+style='font-size:11.0pt'><b>Skew.:</b></span><span style='font-size:11.0pt'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  <i>Skewness</i></span><span
+
+style='font-size:11.0pt'> of the studentsÕ tries. </span></p>
+
+<p><span style='font-size:11.0pt'> <img width=194 height=76
+
+src="Session%20Tw2_files/image075.png" v:shapes="_x0000_i1049"> </span></p>
+
+<p> <span style='font-size:11.0pt'>10.<span
+
+style='font:7.0pt "Times New Roman"'>&nbsp; </span></span> <span
+
+style='font-size:11.0pt'><b>DoDiff:</b></span><span style='font-size:11.0pt'> 
+
+  &nbsp;&nbsp;&nbsp;&nbsp; <i>Degree of Difficulty</i></span><span
+
+style='font-size:11.0pt'> of the problem. </span></p>
+
+<p><span style='font-size:11.0pt'> <img width=100 height=38
+
+src="Session%20Tw2_files/image078.png" v:shapes="_x0000_i1050"> </span></p>
+
+<p><span style='font-size:11.0pt'>As you see Degree of Difficulty is always between 
+
+  0 and 1. This is a good factor for an instructor to determine whether a problem 
+
+  is difficult, and what is the degree of this difficulty. Thus, DoDiff of each 
+
+  problem is saved in its meta data.</span></p>
+
+<p> <span style='font-size:11.0pt'>11.<span
+
+style='font:7.0pt "Times New Roman"'>&nbsp; </span></span> <span
+
+style='font-size:11.0pt'><b>Dis.F.:</b></span><span style='font-size:11.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  <i>Discrimination Factor</i></span><a href="#_ftn2" name="_ftnref2"
+
+title=""><span class=MsoFootnoteReference><span style='font-size:11.0pt'> [2] 
+
+  </span></span></a><span
+
+style='font-size:11.0pt'> is an standard for evaluating how much a problem discriminates 
+
+  between the upper and the lower students.&nbsp; First, all of the students are 
+
+  sorted according to a criterion. Then, %27 of upper students and %27 lower students 
+
+  are selected from the sorted students applying the mentioned criterion. Finally 
+
+  we obtain the Discrimination Factor from the following difference:</span></p>
+
+<p><span style='font-size:11.0pt'><i>Applied a criterion in %27 upper students 
+
+  - Applied the same Criterion in %27 lower students.</i></span></p>
+
+<p class=MsoBodyTextIndent2 align=left style='text-align:left;line-height:normal'>Discrimination 
+
+  Factor is a number in interval [-1,1]. If this number is close to 1, it shows 
+
+  that only upper students have solved this problem. If it is close to 0 it shows 
+
+  that the upper students and the lowers are approximately the same in solving 
+
+  the problem. If this number is negative, it shows that the lower students have 
+
+  more successes in solving the problem, and thus this problem is very poor in 
+
+  discriminating the upper and lower students.</p>
+
+<p><span style='font-size:11.0pt'>In lonstatistics.pm we compute the Discrimination 
+
+  Factor from two criteria:</span></p>
+
+<p><span style='font-size:11.0pt'><i>1st Criterion </i></span><span style='font-size:11.0pt'>for 
+
+  Sorting the Students: <img width=138 height=41
+
+src="Session%20Tw2_files/image081.png" v:shapes="_x0000_i1051"> </span></p>
+
+<p><span style='font-size:11.0pt'><i>2nd Criterion</i></span><span style='font-size:11.0pt'> 
+
+  for Sorting the Students: <img width=87 height=41
+
+src="Session%20Tw2_files/image084.png" v:shapes="_x0000_i1052"> </span></p>
+
+<p> <span style='font-size:11.0pt;
+
+font-family:Symbol;layout-grid-mode:line'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  </span></span> <span style='font-size:11.0pt;layout-grid-mode:line'><b>Change 
+
+  the stats table sorting </b></span></p>
+
+<p><span style='font-size:11.0pt;layout-grid-mode:line'>As you see in Fig. 3.2. 
+
+  2, all headers in the stats table are buttons that change the order of the table. 
+
+  Users can change increasingly or decreasingly every column of the table. First 
+
+  the user select the Ò<i>ascending</i></span><span
+
+style='font-size:11.0pt;layout-grid-mode:line'>Ó or Ò<i>descending</i></span><span
+
+style='font-size:11.0pt;layout-grid-mode:line'>Ó option, then he/she can change 
+
+  the order of the table with clicking the header of his/her interested header. 
+
+  If the user changes the order the table, all information is shown in one table, 
+
+  each row corresponds to a particular problem. If the user selects the first 
+
+  column, Òhomework set orderÓ, the information is shown in different tables, 
+
+  each table corresponds to a particular homework set.&nbsp;&nbsp; </span></p>
+
+<p> <span style='font-size:11.0pt;
+
+font-family:Symbol;layout-grid-mode:line'>á<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  </span></span> <span style='font-size:11.0pt;layout-grid-mode:line'><b>Graphical 
+
+  chart </b></span></p>
+
+<p><span style='font-size:11.0pt;layout-grid-mode:line'>Two important features 
+
+  in this page might be seen through the graphical charts. That is, a user could 
+
+  see the content of Ò%wrongÓ column and Òdegree of difficulty of problemsÓ in 
+
+  the graphical chart as is shown in Fig. 3.2. 3 and 4 for homework set 1 in course 
+
+  PHY183 SS02. These graphical charts are produced dynamically by calling a CGI 
+
+  scripts, (graph.gif) which is located in /home/httpd/cgi-bin/</span></p>
+
+<p> <img width=231 height=173
+
+src="Session%20Tw2_files/image086.jpg" v:shapes="_x0000_i1053"> <span
+
+style='layout-grid-mode:line'> <img width=230 height=170
+
+src="Session%20Tw2_files/image088.jpg" v:shapes="_x0000_i1054"> </span></p>
+
+<p><b>Fig. 3.2. 3</b><span
+
+style='font-weight:normal'>: Degree of difficulty graph &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+  </span><b>Fig. 3.2. 4</b><span style='font-weight:normal'>: %Wrong graph</span></p>
+
+<h4 style='line-height:150%'><span style='font-size:12.0pt;font-family:Arial;
+
+layout-grid-mode:line'> &nbsp; </span></h4>
+
+<h3><a name="_Toc421867141"><span style='layout-grid-mode:line'>Problem Analysis</span></a></h3>
+
+<p><span style='font-size:11.0pt'>Conceptual option response problems, in which 
+
+  the students are given several concepts that are randomly assigned to each student, 
+
+  are more difficult than numerical simple problems.&nbsp; Instructors usually 
+
+  want to see the studentsÕ tries according to every particular concept separately. 
+
+  ÒProblem AnalysisÓ button provides all response option problems in one table 
+
+  as follows in the <b>Fig. 3.2.5.</b></span><span style='font-size:11.0pt'> </span></p>
+
+<div style='border:solid windowtext .5pt;padding:1.0pt 0in 1.0pt 4.0pt'> 
+
+  <p style='border:none;padding:0in;'><span style='font-size:11.0pt'>Total number 
+
+    of students: 263</span></p>
+
+  <p style='border:none;padding:0in;'><b>Select number of intervals</b><span style='font-weight:normal'> 
+
+    <img width=53 height=18
+
+src="Session%20Tw2_files/image091.png" v:shapes="_x0000_i1055"> </span></p>
+
+  <p style='border:none;padding:0in;'><b>Option Response Problems</b><span
+
+style='font-weight:normal'> </span><b>in course PHY183 SS02:</b></p>
+
+</div>
+
+<table border=1 cellspacing=0 cellpadding=0>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p align=center style='text-align:center'><b># 
+
+        </b></p></td>
+
+    <td width=83 class="Normal"> <p align=center style='text-align:center'><b>Problem 
+
+        Title </b></p></td>
+
+    <td width=298 class="Normal"> <p align=center style='text-align:center'><b>Resource 
+
+        </b></p></td>
+
+    <td width=77 class="Normal"> <p align=center style='text-align:center'><b>Address 
+
+        </b></p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>1 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/01_Math_1\/msu-prob10\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Numbers</span></span></span> </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/01_Math_1/msu-prob10.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=72 height=23
+
+  src="Session%20Tw2_files/image094.png" v:shapes="_x0000_i1056"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>2 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/03_Units_Scaling\/msu-prob22\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Speed</span></span></span> </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/03_Units_Scaling/msu-prob22.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=72 height=23
+
+  src="Session%20Tw2_files/image097.png" v:shapes="_x0000_i1057"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>3 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/03_Units_Scaling\/msu-prob17\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Units</span></span></span> </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/03_Units_Scaling/msu-prob17.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=72 height=23
+
+  src="Session%20Tw2_files/image100.png" v:shapes="_x0000_i1058"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>4 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/06_Vectors_Scalars\/msu-prob07\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Vector versus Scalar</span></span></span> 
+
+      </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/06_Vectors_Scalars/msu-prob07.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=72 height=23
+
+  src="Session%20Tw2_files/image103.png" v:shapes="_x0000_i1059"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>5 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/06_Vectors_Scalars\/msu-prob10\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Adding Vectors</span></span></span> 
+
+      </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/06_Vectors_Scalars/msu-prob10.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=72 height=23
+
+  src="Session%20Tw2_files/image106.png" v:shapes="_x0000_i1060"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>6 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/05_1D_Motion\/msu-prob16\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Traveling Car</span></span></span> 
+
+      </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/05_1D_Motion/msu-prob16.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=59 height=23
+
+  src="Session%20Tw2_files/image109.png" v:shapes="_x0000_i1061"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>7 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/kashy\/Testing\/randomlabel\/atwood3T2M\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Atwood Machine</span></span></span> 
+
+      </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/kashy/Testing/randomlabel/atwood3T2M.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=63 height=23
+
+  src="Session%20Tw2_files/image112.png" v:shapes="_x0000_i1062"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>8 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/10_Motion_W_Friction\/msu-prob32\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Sliding mass concepts</span></span></span> 
+
+      </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/10_Motion_W_Friction/msu-prob32.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=59 height=23
+
+  src="Session%20Tw2_files/image115.png" v:shapes="_x0000_i1063"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>9 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/12_Work_Power_Energy\/msu-prob27\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Work, Power, Energy Concepts</span></span></span> 
+
+      </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/12_Work_Power_Energy/msu-prob27.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=68 height=23
+
+  src="Session%20Tw2_files/image118.png" v:shapes="_x0000_i1064"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>10 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/13_EnergyConservation\/msu-prob32\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Bead on a Wire</span></span></span> 
+
+      </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/13_EnergyConservation/msu-prob32.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=63 height=23
+
+  src="Session%20Tw2_files/image121.png" v:shapes="_x0000_i1065"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>11 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/20_Rot2_E_Trq_Accel\/msu-prob23\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Atwood Machine</span></span></span> 
+
+      </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/20_Rot2_E_Trq_Accel/msu-prob23.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=63 height=23
+
+  src="Session%20Tw2_files/image124.png" v:shapes="_x0000_i1066"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>12 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/21_Rot3_AngMom_Roll\/msu-prob38\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Flinstone Bowling</span></span></span> 
+
+      </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/21_Rot3_AngMom_Roll/msu-prob38.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=63 height=23
+
+  src="Session%20Tw2_files/image127.png" v:shapes="_x0000_i1067"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal"> <p>13 </p></td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p><span style='"HYPERLINK \0022http\:\/\/deepthought\.lite\.msu\.edu\/res\/msu\/physicslib\/msuphysicslib\/32_Fluids1_Pascal_Arch\/msu-prob12\.problem\0022 \\t \0022_blank\0022"'><span
+
+  class=MsoHyperlink><span style='color:blue'>Boat on Pond</span></span></span> 
+
+      </p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p>/res/msu/physicslib/msuphysicslib/32_Fluids1_Pascal_Arch/msu-prob12.problem 
+
+      </p></td>
+
+    <td width=77 class="Normal"> <p> <img width=68 height=23
+
+  src="Session%20Tw2_files/image130.png" v:shapes="_x0000_i1068"> </p></td>
+
+  </tr>
+
+  <tr> 
+
+    <td width=15 class="Normal">&nbsp; </td>
+
+    <td width=83 bgcolor="white" class="Normal"> <p align=center style='text-align:center'>É</p></td>
+
+    <td width=298 bgcolor="white" class="Normal"> <p align=center style='text-align:center'>É</p></td>
+
+    <td width=77 class="Normal"> <p align=center style='text-align:center'>É</p></td>
+
+  </tr>
+
+</table>
+
+<p><span style='font-size:11.0pt'><b>Fig. 3.2.5</b></span><span
+
+style='font-size:11.0pt'>: Option response problems in course PHY183 SS02</span></p>
+
+<p><b>Fig. 3.2.5</b><span style='font-weight:normal'> includes a table, which 
+
+  shows the title of every option response problem in the first column. This title 
+
+  has a link to the original html page of the problem.&nbsp; In the second column 
+
+  the source address of the problem is shown. Third column of this table includes 
+
+  a button to analyze the studentsÕ data on this particular option response problem. 
+
+  When this button is clicked, all data about this problem is <i>restored</i></span>, 
+
+  for every student.&nbsp; Different versions of studentsÕ submissions are evaluated. 
+
+  The results are presented in a graphical chart as well as a numerical table. 
+
+  For example, if we select the analysis of&nbsp; <b>/res/msu/kashy/Testing/randomlabel/atwood3T2M.problem</b></p>
+
+<p> <span style='position:
+
+relative;z-index:0'><span style='position:absolute;left:-37px;top:-32px;
+
+width:248px;height:174px'> <table cellpadding=0 cellspacing=0> <tr> <td width=249 height=174 align=left valign=top bgcolor=white class="Normal"
+
+  style='border:.75pt solid black;vertical-align:top;background:white'><span
+
+  style='position:absolute;z-index:1'> 
+
+  <table cellpadding=0 cellspacing=0 width="100%">
+
+    <tr> 
+
+      <td class="Normal"> <div v:shape="_x0000_s1026" style='padding:3.6pt 7.2pt 3.6pt 7.2pt'
+
+    class=shape> 
+
+          <p class=FirstParagraph><span lang=PT-BR
+
+    style='font-size:9.0pt'>A frictionless, massless pulley is attached to the 
+
+            ceiling, in a gravity field g. Mass Ma is greater than mass Mb. The 
+
+            tensions Tx,Ty, Tz, and the constant g are magnitudes. (For each, 
+
+            select: Greater than, Less than, Equal to, True, or False) </span></p>
+
+          <p class=FirstParagraph><span lang=PT-BR style='font-size:9.0pt'> <img width=96 height=114
+
+    src="Session%20Tw2_files/image132.jpg" v:shapes="_x0000_i1069"> &nbsp; <img width=125 height=120
+
+    src="Session%20Tw2_files/image135.png" v:shapes="_x0000_i1070"> </span></p>
+
+        </div></td>
+
+    </tr>
+
+  </table>
+
+  &nbsp; </span></td></tr> </table> &nbsp; 
+
+  <p></p>
+
+  <br clear=all>
+
+  <p align=right style='text-align:right'> <span style='position:
+
+absolute;z-index:1;left:0px;margin-left:229px;margin-top:97px;width:235px;
+
+height:40px'> <table cellpadding=0 cellspacing=0> <tr> <td width=236 height=40 align=left valign=top bgcolor=white class="Normal" style='border:
+
+  .75pt solid white;vertical-align:top;background:white'><span
+
+  style='position:absolute;left:0pt;z-index:3'> 
+
+    <table cellpadding=0 cellspacing=0 width="100%">
+
+      <tr> 
+
+        <td class="Normal"> <div v:shape="_x0000_s1028" style='padding:3.6pt 7.2pt 3.6pt 7.2pt'
+
+    class=shape> 
+
+            <p><span style='font-size:9.0pt'><b>Fig. 3.2.7</b></span><span
+
+    style='font-size:9.0pt'>: Graphical chart of student tries for </span></p>
+
+            <p><span style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Atwood Machine Problem 
+
+              according </span></p>
+
+            <p><span style='font-size:9.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+
+              to every concept in 1 interval time.</span></p>
+
+          </div></td>
+
+      </tr>
+
+    </table>
+
+    &nbsp; </span></td></tr> </table> <img width=203 height=150
+
+src="Session%20Tw2_files/image137.png" v:shapes="_x0000_i1071"> 
+
+    <p></p>
+
+    <p><span style='font-size:9.0pt'><b>Fig. 3.2.6</b></span><span
+
+style='font-size:9.0pt'>: Atwood Machine option response problem in HW3<b> </b></span></p>
+
+    <p><span style='font-size:11.0pt'>In addition, the data of studentsÕ tries 
+
+      are shown in a table as you see in <b>Fig. 3.2.8</b></span><span
+
+style='font-size:11.0pt'>. In the last row of the table you can see the time interval 
+
+      of this data and the overall correct and wrong answers separately. If an 
+
+      instructor wants to see the studentsÕ tries in different time intervals, 
+
+      he/she could set the number of intervals from 1 to 7 time intervals, and 
+
+      then recompute the analysis. </span></p>
+
+    <table border=1 cellspacing=0 cellpadding=0>
+
+      <tr> 
+
+        <td width=10 class="Normal"> <p align=center style='text-align:center'><b># 
+
+            </b></p></td>
+
+        <td width=357 class="Normal"> <p align=center style='text-align:center'><b>Concept 
+
+            </b></p></td>
+
+        <td width=38 class="Normal"> <p align=center style='text-align:center'><b>Correct 
+
+            </b></p></td>
+
+        <td width=35 class="Normal"> <p align=center style='text-align:center'><b>Wrong 
+
+            </b></p></td>
+
+      </tr>
+
+      <tr> 
+
+        <td width=10 class="Normal"> <p>1</p></td>
+
+        <td width=357 bgcolor="white" class="Normal"> <p>Two masses have same 
+
+            acceleration if the two the string does not stretch. </p></td>
+
+        <td width=38 bgcolor="white" class="Normal"> <p>1342 </p></td>
+
+        <td width=35 bgcolor="white" class="Normal"> <p>433 </p></td>
+
+      </tr>
+
+      <tr> 
+
+        <td width=10 class="Normal"> <p>2</p></td>
+
+        <td width=357 bgcolor="white" class="Normal"> <p>Weight of the two masses 
+
+            is greater than the tension of the string attached to the ceiling. 
+
+          </p></td>
+
+        <td width=38 bgcolor="white" class="Normal"> <p>585 </p></td>
+
+        <td width=35 bgcolor="white" class="Normal"> <p>1190 </p></td>
+
+      </tr>
+
+      <tr> 
+
+        <td width=10 class="Normal"> <p>3</p></td>
+
+        <td width=357 bgcolor="white" class="Normal"> <p>The top tension is equals 
+
+            the two bottom tensions. (massless pulley) </p></td>
+
+        <td width=38 bgcolor="white" class="Normal"> <p>1263 </p></td>
+
+        <td width=35 bgcolor="white" class="Normal"> <p>512 </p></td>
+
+      </tr>
+
+      <tr> 
+
+        <td width=10 class="Normal"> <p>4</p></td>
+
+        <td width=357 bgcolor="white" class="Normal"> <p>Tension holding the two 
+
+            masses are equal if mass of pulley=0 </p></td>
+
+        <td width=38 bgcolor="white" class="Normal"> <p>1087 </p></td>
+
+        <td width=35 bgcolor="white" class="Normal"> <p>688 </p></td>
+
+      </tr>
+
+      <tr> 
+
+        <td width=10 class="Normal"> <p>5</p></td>
+
+        <td width=357 bgcolor="white" class="Normal"> <p>Sub-System accelerates 
+
+            upwards or downwards accordingly </p></td>
+
+        <td width=38 bgcolor="white" class="Normal"> <p>757 </p></td>
+
+        <td width=35 bgcolor="white" class="Normal"> <p>1018 </p></td>
+
+      </tr>
+
+      <tr> 
+
+        <td width=10 class="Normal"> <p>6</p></td>
+
+        <td width=357 bgcolor="white" class="Normal"> <p>Center of mass accelerates 
+
+            downward </p></td>
+
+        <td width=38 bgcolor="white" class="Normal"> <p>1354 </p></td>
+
+        <td width=35 bgcolor="white" class="Normal"> <p>421 </p></td>
+
+      </tr>
+
+      <tr> 
+
+        <td width=10 class="Normal">&nbsp; </td>
+
+        <td width=357 class="Normal"> <p><b>From:[Thu Jan 24 00:46:22 2002] To: 
+
+            [Mon Feb 4 23:59:59 2002]</b></p></td>
+
+        <td width=38 class="Normal"> <p>6388</p></td>
+
+        <td width=35 class="Normal"> <p>4245</p></td>
+
+      </tr>
+
+    </table>
+
+    <p><span style='font-size:11.0pt'><b>Fig. 3.2.8</b></span><span
+
+style='font-size:11.0pt'>: Table of student tries for Atwood Machine Problem according 
+
+      to every concept in one time interval.</span></p>
+
+    <p> <span
+
+style='position:relative;z-index:2'><span style='position:
+
+absolute;left:-109px;top:-166px;width:341px;height:24px'> <img width=341
+
+height=24 src="Session%20Tw2_files/image138.png" v:shapes="_x0000_s1027"> <img width=203 height=150
+
+src="Session%20Tw2_files/image140.png" v:shapes="_x0000_i1072"> <img width=203 height=150
+
+src="Session%20Tw2_files/image142.png" v:shapes="_x0000_i1073"> 
+
+      <p></p>
+
+      <table border=1 cellspacing=0 cellpadding=0>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p align=center style='text-align:center'><b># 
+
+              </b></p></td>
+
+          <td width=357 class="Normal"> <p align=center style='text-align:center'><b>Concept 
+
+              </b></p></td>
+
+          <td width=38 class="Normal"> <p align=center style='text-align:center'><b>Correct 
+
+              </b></p></td>
+
+          <td width=35 class="Normal"> <p align=center style='text-align:center'><b>Wrong 
+
+              </b></p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>1</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Two masses have same 
+
+              acceleration if the two the string does not stretch. </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>124 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>98 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>2</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Weight of the two masses 
+
+              is greater than the tension of the string attached to the ceiling. 
+
+            </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>44 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>178 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>3</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>The top tension is 
+
+              equals the two bottom tensions. (massless pulley) </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>142 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>80 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>4</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Tension holding the 
+
+              two masses are equal if mass of pulley=0 </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>125 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>97 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>5</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Sub-System accelerates 
+
+              upwards or downwards accordingly </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>64 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>158 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>6</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Center of mass accelerates 
+
+              downward </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>151 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>71 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal">&nbsp; </td>
+
+          <td width=357 class="Normal"> <p><b>From:[Thu Jan 24 00:46:22 2002] 
+
+              To: [Wed Jan 30 00:23:10 2002]</b></p></td>
+
+          <td width=38 class="Normal"> <p>650</p></td>
+
+          <td width=35 class="Normal"> <p>682</p></td>
+
+        </tr>
+
+      </table>
+
+      <table border=1 cellspacing=0 cellpadding=0>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p align=center style='text-align:center'><b># 
+
+              </b></p></td>
+
+          <td width=357 class="Normal"> <p align=center style='text-align:center'><b>Concept 
+
+              </b></p></td>
+
+          <td width=38 class="Normal"> <p align=center style='text-align:center'><b>Correct 
+
+              </b></p></td>
+
+          <td width=35 class="Normal"> <p align=center style='text-align:center'><b>Wrong 
+
+              </b></p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>1</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Two masses have same 
+
+              acceleration if the two the string does not stretch. </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>1218 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>335 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>2</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Weight of the two masses 
+
+              is greater than the tension of the string attached to the ceiling. 
+
+            </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>541 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>1012 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>3</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>The top tension is 
+
+              equals the two bottom tensions. (massless pulley) </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>1121 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>432 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>4</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Tension holding the 
+
+              two masses are equal if mass of pulley=0 </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>962 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>591 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>5</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Sub-System accelerates 
+
+              upwards or downwards accordingly </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>693 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>860 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>6</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Center of mass accelerates 
+
+              downward </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>1203 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>350 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal">&nbsp; </td>
+
+          <td width=357 class="Normal"> <p><b>From:[Wed Jan 30 00:23:11 2002] 
+
+              To: [Mon Feb 4 23:59:59 2002]</b></p></td>
+
+          <td width=38 class="Normal"> <p>5738</p></td>
+
+          <td width=35 class="Normal"> <p>3563</p></td>
+
+        </tr>
+
+      </table>
+
+      <p><span style='font-size:11.0pt'><b>Fig. 3.2.9</b></span><span
+
+style='font-size:11.0pt'>: Table of student tries for Atwood Machine Problem according 
+
+        to every concept in 2 times interval.</span></p>
+
+      <p>In <b>Fig. 3.2.9</b><span style='font-weight:normal'>, number of studentsÕ 
+
+        tries tables and the graphical chart are shown in 2 different time intervals. 
+
+        An instructor would be able to check whether the students have more wrong 
+
+        answers during the first days of opening the homework set, and how many 
+
+        students have tried during the first or the second interval. Since the 
+
+        problems are individualized he/she might be able to see how many students 
+
+        have tried to solve the problem after communicating with each other and 
+
+        understanding the concept.&nbsp; In Fig. 3.2. 10 the charts and tables 
+
+        of studentsÕ tries are shown in 3 time intervals. So if the homework should 
+
+        be done in one week, an instructor would be able to observe the distribution 
+
+        of studentsÕ tries every day separately after choosing the 7 time intervals.</span></p>
+
+      <p> <img width=151 height=150
+
+src="Session%20Tw2_files/image144.png" v:shapes="_x0000_i1074"> <img width=151 height=150
+
+src="Session%20Tw2_files/image146.png" v:shapes="_x0000_i1075"> <img width=149 height=150
+
+src="Session%20Tw2_files/image148.png" v:shapes="_x0000_i1076"> </p>
+
+      <table border=1 cellspacing=0 cellpadding=0>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p align=center style='text-align:center'><b># 
+
+              </b></p></td>
+
+          <td width=357 class="Normal"> <p align=center style='text-align:center'><b>Concept 
+
+              </b></p></td>
+
+          <td width=38 class="Normal"> <p align=center style='text-align:center'><b>Correct 
+
+              </b></p></td>
+
+          <td width=35 class="Normal"> <p align=center style='text-align:center'><b>Wrong 
+
+              </b></p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>1</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Two masses have same 
+
+              acceleration if the two the string does not stretch. </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>31 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>30 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>2</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Weight of the two masses 
+
+              is greater than the tension of the string attached to the ceiling. 
+
+            </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>8 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>53 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>3</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>The top tension is 
+
+              equals the two bottom tensions. (massless pulley) </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>44 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>17 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>4</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Tension holding the 
+
+              two masses are equal if mass of pulley=0 </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>32 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>29 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>5</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Sub-System accelerates 
+
+              upwards or downwards accordingly </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>20 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>41 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>6</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Center of mass accelerates 
+
+              downward </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>42 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>19 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal">&nbsp; </td>
+
+          <td width=357 class="Normal"> <p><b>From:[Thu Jan 24 00:46:22 2002] 
+
+              To: [Mon Jan 28 00:30:53 2002]</b></p></td>
+
+          <td width=38 class="Normal"> <p>177</p></td>
+
+          <td width=35 class="Normal"> <p>189</p></td>
+
+        </tr>
+
+      </table>
+
+      <table border=1 cellspacing=0 cellpadding=0>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p align=center style='text-align:center'><b># 
+
+              </b></p></td>
+
+          <td width=357 class="Normal"> <p align=center style='text-align:center'><b>Concept 
+
+              </b></p></td>
+
+          <td width=38 class="Normal"> <p align=center style='text-align:center'><b>Correct 
+
+              </b></p></td>
+
+          <td width=35 class="Normal"> <p align=center style='text-align:center'><b>Wrong 
+
+              </b></p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>1</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Two masses have same 
+
+              acceleration if the two the string does not stretch. </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>692 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>257 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>2</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Weight of the two masses 
+
+              is greater than the tension of the string attached to the ceiling. 
+
+            </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>321 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>628 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>3</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>The top tension is 
+
+              equals the two bottom tensions. (massless pulley) </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>690 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>259 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>4</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Tension holding the 
+
+              two masses are equal if mass of pulley=0 </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>590 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>359 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>5</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Sub-System accelerates 
+
+              upwards or downwards accordingly </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>399 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>550 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>6</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Center of mass accelerates 
+
+              downward </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>703 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>246 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal">&nbsp; </td>
+
+          <td width=357 class="Normal"> <p><b>From:[Mon Jan 28 00:30:54 2002] 
+
+              To: [Fri Feb 1 00:15:25 2002]</b></p></td>
+
+          <td width=38 class="Normal"> <p>3395</p></td>
+
+          <td width=35 class="Normal"> <p>2281</p></td>
+
+        </tr>
+
+      </table>
+
+      <table border=1 cellspacing=0 cellpadding=0>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p align=center style='text-align:center'><b># 
+
+              </b></p></td>
+
+          <td width=357 class="Normal"> <p align=center style='text-align:center'><b>Concept 
+
+              </b></p></td>
+
+          <td width=38 class="Normal"> <p align=center style='text-align:center'><b>Correct 
+
+              </b></p></td>
+
+          <td width=35 class="Normal"> <p align=center style='text-align:center'><b>Wrong 
+
+              </b></p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>1</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Two masses have same 
+
+              acceleration if the two the string does not stretch. </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>619 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>147 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>2</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Weight of the two masses 
+
+              is greater than the tension of the string attached to the ceiling. 
+
+            </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>256 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>510 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>3</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>The top tension is 
+
+              equals the two bottom tensions. (massless pulley) </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>529 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>237 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>4</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Tension holding the 
+
+              two masses are equal if mass of pulley=0 </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>465 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>301 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>5</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Sub-System accelerates 
+
+              upwards or downwards accordingly </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>338 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>428 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal"> <p>6</p></td>
+
+          <td width=357 bgcolor="white" class="Normal"> <p>Center of mass accelerates 
+
+              downward </p></td>
+
+          <td width=38 bgcolor="white" class="Normal"> <p>609 </p></td>
+
+          <td width=35 bgcolor="white" class="Normal"> <p>157 </p></td>
+
+        </tr>
+
+        <tr> 
+
+          <td width=10 class="Normal">&nbsp; </td>
+
+          <td width=357 class="Normal"> <p><b>From:[Fri Feb 1 00:15:26 2002] To: 
+
+              [Mon Feb 4 23:59:59 2002]</b></p></td>
+
+          <td width=38 class="Normal"> <p>2816</p></td>
+
+          <td width=35 class="Normal"> <p>1775</p></td>
+
+        </tr>
+
+      </table>
+
+      <p><b>Fig. 3.2. 10</b><span style='font-weight:normal'>: Table of student 
+
+        tries for Atwood Machine Problem according to every concept in 3 times 
+
+        interval.</span></p>
+
+      <h3><a name="_Toc421867142">Student Assessment</a></h3>
+
+      <p class=MsoBodyText2><span style='font-size:11.0pt'>This option provides 
+
+        some reports about the current educational situation of every student 
+
+        as you see in <b>Fig. 3.2.11</b></span><span style='font-size:11.0pt'>.&nbsp; 
+
+        A ÔYÕ show that the student has solved the problem and ÔNÕ shows his/her 
+
+        failure.&nbsp; A Ô-Ô denotes a unattempted problem. The numbers in the 
+
+        right column show the total number of tries of the student in solving 
+
+        the corresponding problems.</span></p>
+
+      <form>
+
+        <div style='border:solid windowtext .5pt;padding:1.0pt 0in 1.0pt 4.0pt'> 
+
+          <p style='border:none;padding:0in;'>Total number of students : 263<br>
+
+            <br>
+
+            <img width=68 height=23
+
+src="Session%20Tw2_files/image151.png" v:shapes="_x0000_i1077"> <br>
+
+            <b>Select &nbsp; Map &nbsp; &nbsp; </b><span style='font-weight:normal'> 
+
+            <img width=215 height=18
+
+src="Session%20Tw2_files/image154.png" v:shapes="_x0000_i1078"> &nbsp;&nbsp;&nbsp;<br>
+
+            </span><b>Select Section</b><span style='font-weight:normal'> <img width=89 height=18
+
+src="Session%20Tw2_files/image157.png" v:shapes="_x0000_i1079"> <br>
+
+            </span><b>Select Student</b><span style='font-weight:normal'> <img width=89 height=18
+
+src="Session%20Tw2_files/image160.png" v:shapes="_x0000_i1080"> <br>
+
+            <br>
+
+            </span></p>
+
+          <p style='border:none;padding:0in;'> <img width=93 height=23
+
+src="Session%20Tw2_files/image163.png" v:shapes="_x0000_i1081"> </p>
+
+        </div>
+
+        <table border=1 cellspacing=0 cellpadding=0>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p align=center style='text-align:center;line-height:150%'><b># 
+
+                </b></p></td>
+
+            <td width=177 class="Normal"> <p align=center style='text-align:center;line-height:150%'><b>Set 
+
+                Title </b></p></td>
+
+            <td width=122 class="Normal"> <p align=center style='text-align:center;line-height:150%'><b>Results 
+
+                </b></p></td>
+
+            <td width=153 class="Normal"> <p align=center style='text-align:center;line-height:150%'><b>Tries 
+
+                </b></p></td>
+
+          </tr>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p style='line-height:150%'>1 </p></td>
+
+            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/phy183.sequence 
+
+              </p></td>
+
+            <td width=122 class="Normal">&nbsp; </td>
+
+            <td width=153 class="Normal">&nbsp; </td>
+
+          </tr>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p style='line-height:150%'>2 </p></td>
+
+            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap1/calckap1.sequence 
+
+              </p></td>
+
+            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYYYYYY 
+
+                </span></p></td>
+
+            <td width=153 class="Normal"> <p style='line-height:150%'>1,1,1,2,1,1,1,1,1,7,9,3,2</p></td>
+
+          </tr>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p style='line-height:150%'>3 </p></td>
+
+            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap2/calckap2.sequence 
+
+              </p></td>
+
+            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYNYYYYNNYYYYYYYY 
+
+                </span></p></td>
+
+            <td width=153 class="Normal"> <p style='line-height:150%'>10,1,0,1,1,2,1,4,5,1,1,1,3,2,1,1,1</p></td>
+
+          </tr>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p style='line-height:150%'>4 </p></td>
+
+            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap3/calckap3.sequence 
+
+              </p></td>
+
+            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYNYYYYYYYYYY 
+
+                </span></p></td>
+
+            <td width=153 class="Normal"> <p style='line-height:150%'>4,3,5,1,1,8,2,3,20,1,1,1,1,1,2,3,2,2,3</p></td>
+
+          </tr>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p style='line-height:150%'>5 </p></td>
+
+            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap4/calckap4.sequence 
+
+              </p></td>
+
+            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>NYYYYYYYYYYYYYYY 
+
+                </span></p></td>
+
+            <td width=153 class="Normal"> <p style='line-height:150%'>20,1,1,1,3,3,2,3,4,2,3,2,1,1,2,5</p></td>
+
+          </tr>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p style='line-height:150%'>6 </p></td>
+
+            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap5/calckap5.sequence 
+
+              </p></td>
+
+            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYYYY-YY 
+
+                </span></p></td>
+
+            <td width=153 class="Normal"> <p style='line-height:150%'>5,2,1,9,12,1,3,12,1,2,1,,1,3</p></td>
+
+          </tr>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p style='line-height:150%'>7 </p></td>
+
+            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap6/calckap6.sequence 
+
+              </p></td>
+
+            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYYYYYYY 
+
+                </span></p></td>
+
+            <td width=153 class="Normal"> <p style='line-height:150%'>3,2,4,2,1,1,2,1,1,9,2,3,2,2</p></td>
+
+          </tr>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p style='line-height:150%'>8 </p></td>
+
+            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap7/calckap7.sequence 
+
+              </p></td>
+
+            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYYYYYYYYYYY 
+
+                </span></p></td>
+
+            <td width=153 class="Normal"> <p style='line-height:150%'>4,1,3,1,10,4,1,1,2,1,1,2,1,2,1,3,1,3</p></td>
+
+          </tr>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p style='line-height:150%'>9 </p></td>
+
+            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap8/calckap8.sequence 
+
+              </p></td>
+
+            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYYYYYYYY 
+
+                </span></p></td>
+
+            <td width=153 class="Normal"> <p style='line-height:150%'>4,3,1,2,3,3,4,3,3,1,1,4,1,1,7</p></td>
+
+          </tr>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p style='line-height:150%'>10 </p></td>
+
+            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap9/calckap9.sequence 
+
+              </p></td>
+
+            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYN-NYYNY 
+
+                </span></p></td>
+
+            <td width=153 class="Normal"> <p style='line-height:150%'>1,1,1,2,1,,2,2,1,6,4</p></td>
+
+          </tr>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p style='line-height:150%'>11 </p></td>
+
+            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap10/calckap10.sequence 
+
+              </p></td>
+
+            <td width=122 class="Normal"> <p style='line-height:150%'><span style='font-size:8.0pt'>YYYYYYYYYYYY 
+
+                </span></p></td>
+
+            <td width=153 class="Normal"> <p style='line-height:150%'>2,1,1,1,1,1,1,1,1,1,1,1</p></td>
+
+          </tr>
+
+          <tr> 
+
+            <td width=21 class="Normal"> <p style='line-height:150%'>12 </p></td>
+
+            <td width=177 class="Normal"> <p style='line-height:150%'>msu/mmp/kap11/calckap11.sequence 
+
+              </p></td>
+
+            <td width=122 class="Normal"> <p style='line-height:150%'>----------------- 
+
+              </p></td>
+
+            <td width=153 class="Normal"> <p style='line-height:150%'>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</p></td>
+
+          </tr>
+
+        </table>
+
+        <p><span style='layout-grid-mode:line'><b>Fig. 3.2. 5</b></span><span
+
+style='layout-grid-mode:line'>: A sample of a student homework results and tries</span></p>
+
+        <p><span style='font-size:11.0pt;layout-grid-mode:line'>We plan to present 
+
+          several other reports in this page as well. Some student classification 
+
+          reports also would be depicted here.</span></p>
+
+        <p><span style='font-size:11.0pt;layout-grid-mode:line'>In Òproblem statsÓ 
+
+          and Òstudent assessmentÓ pages, an instructor can limit the range of 
+
+          his/her information to a particular section or a particular homework 
+
+          set.&nbsp; So, an instructor would be able to load the statistics table 
+
+          or student tries in Òstudent assessmentÓ table to a particular map or 
+
+          section. </span><span style='font-size:11.0pt'>After changing the map 
+
+          or section, he/she would be able to see the results via the recalculating 
+
+          the computation on that page. </span><span style='font-size:11.0pt;
+
+font-family:Arial;layout-grid-mode:line'></span></p>
+
+        <h3><a name="_Toc421867143"><span style='layout-grid-mode:line'>Future 
+
+          work, using activity.log to classify the students</span></a></h3>
+
+        <p><span style='font-size:11.0pt'>The problem is whether we can find the 
+
+          good features for <i>classifying</i></span><span style='font-size:
+
+11.0pt'> students? If so, we would be able to identify a <i>predictor</i></span><span
+
+style='font-size:11.0pt'> for any individual student after doing a couple of homework 
+
+          sets. With this information, we would be able to <i>help</i></span><span
+
+style='font-size:11.0pt'> a student use the resources better.&nbsp; <span style='layout-grid-mode:line'>As 
+
+          the first step of data mining stuff w</span>e want to make an initial 
+
+          effort to classify the students. </span></p>
+
+        <p><span style='font-size:11.0pt'>Preprocessing and finding the useful 
+
+          student data and segmenting may be a difficult task. Internally, one 
+
+          part of this data is stored in a student directory:</span></p>
+
+        <p><span style='font-size:11.0pt'>&nbsp;</span><span style='font-size:11.0pt;font-family:"Courier New"'>/</span><span
+
+style='font-size:9.0pt;font-family:"Courier New"'>home/httpd/lonUsers/<i>domain</i></span><span
+
+style='font-size:9.0pt;font-family:"Courier New"'>/<i>1st.char</i></span><span
+
+style='font-size:9.0pt;font-family:"Courier New"'>/<i>2nd.char</i></span><span
+
+style='font-size:9.0pt;font-family:"Courier New"'>/<i>3rd.char</i></span><span
+
+style='font-size:9.0pt;font-family:"Courier New"'>/<i>username</i></span><span
+
+style='font-size:9.0pt;font-family:"Courier New"'>/</span></p>
+
+        <p class=MsoHeader><span style='font-size:11.0pt'>For example: /home/httpd/lonUsers/msu/m/i/n/minaeibi/</span></p>
+
+        <p><span style='font-size:11.0pt;layout-grid-mode:line'>Since spring semester 
+
+          2002, LON-CAPA has logged every activity of every student who has used</span><span style='font-size:11.0pt'> 
+
+          online educational resources and their recorded paths through the web. 
+
+          So another part of data is stored in Òactivity.logÓ which is located 
+
+          in course directory.</span></p>
+
+        <p><span style='font-size:11.0pt'>The student data restored from .db files 
+
+          in student directory and is fetched into a hash table. The special hash 
+
+          keys Ò<i>keysÓ</i></span><span style='font-size:11.0pt'>, Ò<i>versionÓ</i></span><span
+
+style='font-size:11.0pt'> and Ò<i>timestampÓ</i></span><span style='font-size:
+
+11.0pt'> were evaluated from the hash. The <i>version</i></span><span
+
+style='font-size:11.0pt'> will be equal to the total number of versions of the 
+
+          data that have been stored. The <i>timestamp</i></span><span style='font-size:
+
+11.0pt'> attribute is the UNIX time the data was stored. <i>keys</i></span><span
+
+style='font-size:11.0pt'> is available in every historical section to list which 
+
+          keys were added or changed at a specific historical revision of a hash. 
+
+          We extract the features from a structured homework data, which is stored 
+
+          as particular URLÕs. For example the result of solving homeworkÕs problem 
+
+          by students could be extracted from </span><span style='font-size:9.0pt;
+
+font-family:"Courier New"'><i>resource.partid.solved</i></span><span
+
+style='font-size:11.0pt;font-family:"Courier New"'>, </span><span
+
+style='font-size:11.0pt'>the total number of the students for solving the problem 
+
+          could be extracted from </span><span style='font-size:9.0pt;font-family:
+
+"Courier New"'><i>resource.partid.tries</i></span><span style='font-size:11.0pt;
+
+font-family:"Courier New"'>,</span><span style='font-size:11.0pt'> and so forth.</span></p>
+
+        <p><span style='font-size:11.0pt'>All data stored in activity.log includes 
+
+          <i>user name</i></span><span style='font-size:11.0pt'>, <i>time</i></span><span
+
+style='font-size:11.0pt'> and <i>resource URL</i></span><span style='font-size:
+
+11.0pt'>. We can divide these data into six types of URLs, listed below, according 
+
+          to their importance for data mining: </span></p>
+
+        <p style='line-height:150%'><span style='font-size:11.0pt'>1. <b><u>problems:</u></b></span><span
+
+style='font-size:11.0pt'> are the most useful data. i.e.<b><u> </u></b></span><span
+
+style='font-size:7.0pt'><b><u>msu/mmp/kap14/kap14.sequence___33___msu/mmp/kap14/problems/cd418a.problem</u></b></span> 
+
+          <br>
+
+          <span style='font-size:11.0pt'>2. <b>html pages</b></span><span
+
+style='font-size:11.0pt'> to those are some links in the problems. i.e. </span><span
+
+style='font-size:7.0pt'><b>msu/mmp/kap14/kap14.sequence___5___msu/mmp/kap14/cd396.htm</b></span> 
+
+          <br>
+
+          <span style='font-size:11.0pt'>3. <i>the images</i></span><span
+
+style='font-size:11.0pt'>, which are loaded in above html pages. i.e. <i>/res/msu/mmp/kap14/picts/backsoun.gif</i></span><span
+
+style='font-size:11.0pt'> .</span></p>
+
+        <p style='line-height:150%'><span style='font-size:11.0pt'>4. <u>loncapa 
+
+          routines</u>: i.e. <u>/adm/navmaps,</u>&nbsp; or&nbsp; <u>/adm/roles,</u> 
+
+          or&nbsp; <u>/adm/logout</u>.<br>
+
+          5. <i><u>Posted data</u></i></span><span style='font-size:11.0pt'> by 
+
+          students: i.e. <i><u>resource.0.11.submission=27.11</u></i></span><span style='font-size:
+
+11.0pt'> <br>
+
+          6. remote control gif files: i.e.: /res/adm/pages/v.gif </span></p>
+
+        <p>So, activity.log usually grows fast, when students have more access 
+
+          to the educational resources. We have brought a sample of different 
+
+          types of data which are logged in activity.log after a preprocessing 
+
+          phase as follows:&nbsp; </p>
+
+        <p><u>144) 1010955846: studentX --&gt; /adm/navmaps</u> <br>
+
+          <i>145) 1010955205: studentX --&gt; /res/msu/mmp/kap14/picts/beta_eqn.gif</i><span
+
+style='font-style:normal'> <br>
+
+          <u>146) 1010955685: studentX --&gt; /adm/navmaps</u> <br>
+
+          <u>147) 1010955988: studentX --&gt; /adm/navmaps</u> <br>
+
+          </span><span style='font-size:8.0pt'><b>148) 1010955998: studentX --&gt; 
+
+          msu/mmp/kap14/kap14.sequence___5___msu/mmp/kap14/cd396.htm</b></span> 
+
+          <br>
+
+          <i>149) 1010955999: studentX --&gt; /res/msu/mmp/kap14/picts/velocity_eqn3.gif</i> 
+
+          <br>
+
+          <i>150) 1010956000: studentX --&gt; /res/msu/mmp/kap14/picts/time_eqn.gif</i><span style='font-style:normal'> 
+
+          <br>
+
+          151) 1010954609: studentX --&gt; /res/adm/pages/grds.gif <br>
+
+          </span><i>152) 1010954611: studentX --&gt; /res/msu/mmp/wordproc.gif</i><span
+
+style='font-style:normal'> <br>
+
+          153) 1010954626: studentX --&gt; /res/adm/pages/i.gif <br>
+
+          </span><span style='font-size:8.0pt'><b>154) 1010955717: studentX --&gt; 
+
+          msu/mmp/kap14/kap14.sequence___1___msu/mmp/kap14/cd392.htm</b></span> 
+
+          <br>
+
+          <i>155) 1010955717: studentX --&gt; /res/msu/mmp/kap14/picts/backsoun.gif</i> 
+
+          <br>
+
+          <span style='font-size:8.0pt'><b>156) 1010955920: studentX --&gt; msu/mmp/kap14/kap14.sequence___3___msu/mmp/kap14/cd394.htm</b></span> 
+
+          <br>
+
+          <i>157) 1010955921: studentX --&gt; /res/msu/mmp/gifs/demo.gif</i><span
+
+style='font-style:normal'> <br>
+
+          158) 1010956113: studentX --&gt; /res/adm/pages/v.gif <br>
+
+          159) 1010954629: studentX --&gt; /res/adm/pages/eval.gif <br>
+
+          160) 1010954631: studentX --&gt; /res/adm/pages/back.gif <br>
+
+          161) 1010954632: studentX --&gt; /res/adm/pages/b.gif <br>
+
+          162) 1010954633: studentX --&gt; /res/adm/pages/r.gif <br>
+
+          </span><span style='font-size:9.0pt'><b>163) 1010955754:</b></span><b> 
+
+          studentX --&gt; msu/mmp/kap14/kap14.sequence___2___msu/mmp/kap14/cd393.htm</b><span
+
+style='font-weight:normal'> <br>
+
+          <i>164) 1010955756: studentX --&gt; /res/msu/mmp/kap14/picts/asound.jpg</i></span> 
+
+          <br>
+
+          <i>165) 1010955762: studentX --&gt; /res/msu/mmp/kap14/picts/sensor.jpg</i> 
+
+          <br>
+
+          <i>166) 1010955999: studentX --&gt; /res/msu/mmp/gifs2/example.gif</i><span
+
+style='font-style:normal'> <br>
+
+          173) 1010955687: studentX --&gt; /res/adm/pages/u.gif <br>
+
+          174) 1010955688: studentX --&gt; /res/adm/pages/s.gif <br>
+
+          175) 1010955688: studentX --&gt; /res/adm/pages/e.gif <br>
+
+          </span><span style='font-size:9.0pt'><b>176) 1010956528:</b></span><b> 
+
+          studentX</b><span
+
+style='font-size:9.0pt'><b> --&gt; msu/mmp/kap14/kap14.sequence___33___msu/mmp/kap14/problems/cd418a.problem</b></span> 
+
+          <br>
+
+          <i><u>177) Sent data</u></i> <br>
+
+          <span style='font-size:9.0pt'><b><u>178) 1010956536: </u></b></span><b><u>studentX</u></b><span
+
+style='font-size:9.0pt'><u><b> --&gt;</b></u></span><b><u> </u></b><span
+
+style='font-size:9.0pt'><u><b>msu/mmp/kap14/kap14.sequence___33___msu/mmp/kap14/problems/cd418a.problem</b></u></span> 
+
+          <br>
+
+          <i><u>179) Sent data HWVAL11=27.11</u></i> <br>
+
+          <span style='font-size:9.0pt'><b><u>180) 1010956536:</u></b></span><b><u> 
+
+          studentX</u></b><span style='font-size:9.0pt'><u><b> --&gt;</b></u></span><b><u> 
+
+          </u></b><span style='font-size:9.0pt'><u><b>msu/mmp/kap14/kap14.sequence___33___msu/mmp/kap14/problems/cd418a.problem</b></u></span> 
+
+          <br>
+
+          <i><u>181) Sent data resource.0.11.submission=27.11</u></i> <br>
+
+          <span style='font-size:9.0pt'><b><u>182) 1010956702: studentX --&gt; 
+
+          msu/mmp/kap14/kap14.sequence___33___msu/mmp/kap14/problems/cd418a.problem</u></b></span> 
+
+          <br>
+
+          <span style='font-size:11.0pt'><i><u>183) Sent data</u></i></span><span
+
+style='font-size:11.0pt'> <br>
+
+          <i>184) 1010955921: studentX --&gt; /res/msu/mmp/kap14/picts/areal.gif</i></span><span
+
+style='font-size:11.0pt'> <br>
+
+          185) 1010955731: studentX --&gt; /res/adm/pages/n.gif <br>
+
+          <br>
+
+          </span></p>
+
+        <p class=H5> <span
+
+style='font-size:11.0pt;font-family:Symbol;font-weight:normal'>á<span
+
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span> 
+
+          <span
+
+style='font-size:11.0pt;font-family:Arial'>Feature Extraction</span></p>
+
+        <p class=MsoBodyText2>From these two types of student data which are stored 
+
+          by the LON-CAPA system, the features may be considered for classifying 
+
+          the students, are as follows: </p>
+
+        <p> 1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+          </span> Total number of correct answers. </p>
+
+        <p> 2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+          </span> Total number of tries for doing homework. </p>
+
+        <p> 3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+          </span> Time at which the student got the problem correct. Usually better 
+
+          students get the homework completed earlier.</p>
+
+        <p> 4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+          </span> Reading the material before attempting homework vs. attempting 
+
+          first and then read up on it.</p>
+
+        <p> 5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+          </span> Submitting a lot of attempts in a short amount of time without 
+
+          looking up material in between, vs. those giving it one try, reading 
+
+          up, submitting another one, etc.</p>
+
+        <p> 6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+          </span> Getting the problem right on the first try, vs. those with high 
+
+          number of tries.</p>
+
+        <p> 7.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+          </span> Giving up on a problem versus students continuing trying up 
+
+          to the deadline.</p>
+
+        <p> 8.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; 
+
+          </span> Participating in the communication mechanisms, vs. those working 
+
+          alone.</p>
+
+        <p><br>
+
+          It might be interesting to group students with time of the first log 
+
+          on (beginning of assignment, middle of the week, last minute) and correlate 
+
+          this with the number of tries or number of solved problems. A student 
+
+          who gets all correct answers will not necessarily be in the successful 
+
+          group if they took an average of 5 tries per problem, but it should 
+
+          be verified from this research. </p>
+
+        <p>We hope to find similar patterns of use in the data gathered from LON-CAPA, 
+
+          and eventually be able to make predictions as to the most-beneficial 
+
+          course of studies for each learner based on a limited number of variables 
+
+          for each individual student. Based on the current state of the learner 
+
+          in a learning sequence, the system could then make suggestions to the 
+
+          learner as to how to proceed. </p>
+
+      </form>
+
+      <br
+
+clear=ALL style='page-break-before:always;'>
+
+      <div class=Section2> </div></div>
+
+      <br clear=all>
+
+      <hr align=left size=1 width="33%">
+
+      <div id=ftn1> 
+
+        <p class=MsoFootnoteText><a href="#_ftnref1"
+
+name="_ftn1" title=""><span class=MsoFootnoteReference> [1] </span></a> If instructor 
+
+          is going to port the statistics table data to Excel, he/she can select 
+
+          the checkbox ÒOutput CSV formatÓ at top of the statistics table.</p>
+
+      </div>
+
+      <div id=ftn2> 
+
+        <p class=MsoFootnoteText><a href="#_ftnref2"
+
+name="_ftn2" title=""><span class=MsoFootnoteReference> [2] </span></a>&nbsp; 
+
+          This name has been got from administration office of Michigan State 
+
+          University for evaluating the examsÕ problem. Here we expanded this 
+
+          expression to homework problems as well.</p>
+
+      </div></span></span></span></span></span>
+
+      
+
+</body>
+
+</html>
+
Index: doc/gutshtml/SessionTwo.html
diff -u doc/gutshtml/SessionTwo.html:1.1 doc/gutshtml/SessionTwo.html:1.2
--- doc/gutshtml/SessionTwo.html:1.1	Fri Jun 28 16:30:29 2002
+++ doc/gutshtml/SessionTwo.html	Tue Jul 22 10:47:00 2003
@@ -1 +1,1441 @@
-<html><head><meta name=Title content="Session Two: Apache Handlers (loncapa_apache"><meta http-equiv=Content-Type content="text/html; charset=macintosh"><title>Session Two: Apache Handlers (loncapa_apache</title><style><!--.Section1	{page:Section1;}.Section2	{page:Section2;}--></style></head><body bgcolor=#FFFFFF class="Normal" lang=EN-US><div class=Section1>   <h2>Session Two: Apache Handlers (loncapa_apache.conf), Authentication and Access     Control, Session Environment (Matthew)</h2>  <h3><a name="_Toc470397993"></a><a name="_Toc514840845"></a><aname="_Toc421867046"><span>Server Content Resource Areas</span></a></h3>  <p>Internally, all resources are identified primarily by their URL.&nbsp; Different     logical areas of the server are distinguished by the beginning part of the     URL: </p>  <ul type=disc>    <li><span     style='font-family:"Courier New"'>/adm: </span>publicly available content,       logos, manual pages, etc.<i></i></li>  </ul>  <ul type=disc>    <li><span     style='font-family:"Courier New"'>/res/<i>domainname</i></span><span     style='font-family:"Courier New"'>/<i>authorname</i></span><span     style='font-family:"Courier New"'>/..: </span>the resource area, holding       course maps, HTML pages, homework, movies, applets, etc. Access to these       files is restricted by the cookie-based authentication mechanism. Content       in this area will be served by type-dependent handlers, for example, one       handlers to serve homework problems, and another one for TeX resources.       The structure of this area of the server is exactly the same on every server,       even though not all resources might be present everywhere.</li>  </ul>  <ul type=disc>    <li><span     style='font-family:"Courier New"'>/raw/<i>domainname</i></span><span     style='font-family:"Courier New"'>/<i>authorname</i></span><span     style='font-family:"Courier New"'>/..: </span>internally, this is just a       symbolic link to the <span style='font-family:"Courier New"'>res</span>       directory, however, no content handlers are called when serving a resource       and access is controlled by IP rather than cookies. This structure is used       for replication of resources between servers.</li>  </ul>  <ul type=disc>    <li><span     style='font-family:"Courier New"'>/~<i>authorname</i></span><span     style='font-family:"Courier New"'>/.., /priv<i>/authorname</i></span><span     style='font-family:"Courier New"'>: </span>the content construction space.<span     style='font-family:"Courier New"'> </span>This is normal UNIX filespace,       which however can only by viewed on the web by the authors themselves through       the cookie based authentication. Content handlers are active for this space.       This space can be mounted on other UNIX machines, as well as AppleShare       and Windows. Below the <span style='font-family:"Courier New"'><i>authorname</i></span>,       this directory has the same structure as the resource space of the author.</li>  </ul>  <ul type=disc>    <li><span     style='font-family:"Courier New"'>/lon-status/..: </span>LON-CAPA status       information Ð behind basic http authentication so it is not dependent on       system functions</li>  </ul>  <p>Authors can only write-access the<i> </i><spanstyle='font-family:"Courier New";font-style:normal'>/~</span><spanstyle='font-family:"Courier New"'><i>authorname</i></span><spanstyle='font-family:"Courier New"'>/</span> space. They can copy resources into     the resource area through the publication step, and move them back through     a retrieve step. Authors do not have direct write-access to their resource     space.</p>  <h3><a name="_Toc514840846"></a><a name="_Toc421867047">Apache Request Cycle     and Handlers</a></h3>  <p>The standard mode in which the Apache web server is used is that a URL corresponds     to some static file on the file system, which then more or less gets sent     out as-is. Slight deviations from that simple principle are however already     the directory listing function, virtual servers, and the cgi-bin directory.     In the latter case, Apache executes the file in a new process and provides     both the input to the process in the environment, and routes the output to     the client. Other deviations are the error messages.</p>  <p>In a more general view, URLs to Apache are URIs (Uniform Resource Identifiers),     which may are may not correspond to a physical file, which in turn may or     may not be sent out as-is.</p>  <p>As a request for a URI gets sent to the Apache server, it goes through several     phases. At each phase (ÒstageÓ) along the process, handler modules can be     defined to deal with the request. Details about these phases are given in     the Eagle book Chapter 3 (page 60).</p>  <p>These handler modules are not like cgi-scripts executed in a separate process,     but are dynamically linked into the Apache child processes themselves Ð they     run inside of Apache. The mod_perl mechanism in addition links the Perl interpreter     into the Apache child process. Modules are pre-interpreted (ÒcompiledÓ) by     the Perl interpreter when they are first loaded, and the pre-interpreted code     stays permanently in the memory allocated to that Apache child process. The     result is a significant speed-up, and through the flexible mechanism of module     registration and different stages of the process, a high degree of customizability.</p>  <p>LON-CAPA does not use Apache::Registry, and so in addition avoids the unnecessary     overhead of emulating a cgi-environment within the handlers. Instead, it makes     direct use of the Apache Perl API (Chapter 9, Eagle book).&nbsp; </p>  <h3><a name="_Toc514840847"></a><a name="_Toc421867048">Handler Definition</a></h3>  <p>Which chain of handler deals with which kind of resource is defined in <span style='font-size:9.0pt;font-family:"Courier New"'>/etc/httdp/conf/loncapa_apache.conf</span>.     LON-CAPA only defines handlers at the (in order) header-parser, access control,     and response phase (figure 3-3 Eagle book). In the header-parser phase, the     replication handler is run, and in the access-control phase, the various access-handlers.     Future handlers will mostly be implemented in the response phase.<b> Fig.     1.2.2</b><span style='font-weight:normal'> shows excerpts of the configuration     script </span><span style='font-size:9.0pt;font-family:"Courier New"'>/etc/httpd/loncapa_apache.conf</span>     for these modules.</p>  <div style='border:solid windowtext .5pt;padding:31.0pt 31.0pt 31.0pt 31.0pt'>     <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'># -------------------------------------------------------------       Access Handlers</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res.*&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       Apache::lonacc</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlHeaderParserHandler Apache::lonrep</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       403 /adm/login</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       404 /adm/notfound.html</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       406 /adm/roles</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       500 /adm/errorhandler</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/priv.*&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::loncacc</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>SetHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       perl-script</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       Apache::lonconstruct</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       403 /adm/login</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       404 /adm/notfound.html</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       406 /adm/unauthorized.html</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       500 /adm/errorhandler</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/raw.*&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::lonracc</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/\~.*&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::loncacc</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       403 /adm/login</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       404 /adm/notfound.html</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       406 /adm/unauthorized.html</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       500 /adm/errorhandler</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>AllowOverride None</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span><spanstyle='font-size:16.0pt;font-family:"Courier New"'></span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'># ---------------------------------------------       Resource Space Content Handlers</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*/$&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonindexer</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*\.tex$&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lontex</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*\.page$&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonpage</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/(res|\~).*\.(xml|html|htm|xhtml|xhtm)$&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonxml</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/(res|\~).*\.(problem|exam|quiz|assess|survey|form)$&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonhomework</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'># --------------------------------------------------------------       Admin Programs</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/roles&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       Apache::lonacc</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonroles</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       403 /adm/login</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       500 /adm/errorhandler</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/login&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonlogin</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/annotations&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       Apache::lonacc</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::admannotations</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       403 /adm/login</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;       500 /adm/errorhandler</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>    <p style='border:none;padding:0in;'><spanstyle='font-size:14.0pt;font-family:"Courier New"'><b>É etc É</b></span></p>  </div>  <p><span style='font-size:14.0pt'><b>Fig. 1.2.2</b></span><spanstyle='font-size:14.0pt'> Ð Excerpts of </span><span style='font-size:14.0pt;font-family:"Courier New"'>loncapa_apache.conf</span></p>  <h3><a name="_Toc514840849"></a><a name="_Toc421867049">Authentication Overview</a></h3>  <p>A user can log into any server in the network and run sessions. The server     responsible for initially authenticating the user is the userÕs homeserver.</p>  <p>When a user first accesses a server within a browser session, he or she is     challenged to provide authentication information in the form of username,     password and domain Ð this is done by <span style='font-family:"Courier New"'>lonlogin</span>, which is the <span style='font-family:"Courier New"'>error_document</span>     for <span style='font-family:"Courier New"'>lonacc</span> and <spanstyle='font-family:"Courier New"'>loncacc </span>(the normal authentication handlers).     When the server receives that information, it asks all library servers in     the domain that the user specified to validate the information Ð this is done     by <span style='font-family:"Courier New"'>lonauth</span>. </p>  <p>The userÕs home server will answer with<i> </i><spanstyle='font-family:"Courier New";font-style:normal'>authorized</span> or <spanstyle='font-family:"Courier New"'>non_authorized</span>, all others with <spanstyle='font-family:"Courier New"'>unknown_user</span>. If one server authorizes     the user, a cookie is returned to the user by <span style='font-family:"Courier New"'>lonauth</span>     and the session is initialized on the local server by establishing the session     environment file. If a server sends<i> </i><span style='font-family:"Courier New";font-style:normal'>non_authorized</span>, the user is rejected.&nbsp; <b>Fig.     1.3.1</b><spanstyle='font-weight:normal'> illustrates this process.</span></p></div><brclear=ALL style='page-break-before:always;'><div class=Section2>  <div class=Section3>    <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>      <p style='border:none;padding:0in'>Domain</p>      <p style='border:none;padding:0in'> <span style='font-family:Wingdings'>ˆ</span>         username, password <span style='font-family:Wingdings'>ˆ</span> <b>Library         Server</b></p>      <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>§</span>         unknown_user <span style='font-family:Wingdings'>§</span></p>      <p style='border:none;padding:0in'> |</p>      <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>ˆ</span>         username, password <span style='font-family:Wingdings'>ˆ</span> <b>Library         Server</b></p>      <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>§</span>         authorized <span style='font-family:Wingdings'>§</span></p>      <p style='border:none;padding:0in'> |</p>      <p style='border:none;padding:0in'><b>User</b><spanstyle='font-weight:normal'> </span><span style='font-family:Wingdings'>ˆ</span>         username,password,domain <span style='font-family:Wingdings'>ˆ</span>         <b>Server </b></p>      <p style='border:none;padding:0in'><b> </b><spanstyle='font-family:Wingdings'><b>§</b></span><b> </b><span style='font-weight:normal'>cookie</span><b> </b><span style='font-family:Wingdings'><b>§</b></span><b>         </b><span style='font-weight:normal'>store session information for valid         cookies</span></p>    </div>    <p><span style='font-size:14.0pt'><b>Fig. 1.3.1</b></span><spanstyle='font-size:14.0pt'> Ð Illustration of Authentication Mechanism</span></p>    <p class=MsoBodyText style='line-height:normal'><span style='font-size:10.0pt'>At       all subsequent interactions, the client sends the cookie back to the server       Ð if the cookie is missing or invalid, the user is re-challenged for login       information. Handlers are </span><span style='font-size:10.0pt;font-family:"Courier New"'>lonacc</span><span style='font-size:10.0pt'> and </span><spanstyle='font-size:10.0pt;font-family:"Courier New"'>loncacc</span><spanstyle='font-size:10.0pt'>. Cookies expire by closing the browser and are invalidated       when the user logs out or logs in a second time into the same machine from       another browser<i>.</i></span></p>    <h3><a name="_Toc514840850"></a><a name="_Toc421867050">Authentication Mechanisms,       User Data, Passwords</a></h3>    <p>On the library servers, it is a routine in<spanstyle='font-family:"Courier New"'> lond </span>that does the authentication. It       checks if this is the userÕs homeserver, checks the password, and answers<spanstyle='font-family:"Courier New"'> </span>with <span style='font-family:"Courier New"'>Òunknown_userÓ,       ÒauthorizedÓ </span>or<span style='font-family:"Courier New"'> Ònon_authorizedÓ.       </span></p>    <p class=MsoHeader>Determination if this is the userÕs homeserver is done       by the presence of his or her password file in</p>    <p><span style='font-family:"Courier New"'> /home/httpd/lonUsers/<i>domain</i></span><span style='font-family:"Courier New"'>/<i>1.char</i></span><spanstyle='font-family:"Courier New"'>/<i>2.char</i></span><span style='font-family:"Courier New"'>/<i>3.char</i></span><span style='font-family:"Courier New"'>/<i>username</i></span><spanstyle='font-family:"Courier New"'>/passwd</span></p>    <p class=MsoHeader>for example</p>    <p><span style='font-family:"Courier New"'> /home/httpd/lonUsers/msu/s/m/i/smith/passwd</span></p>    <p>The password is stored in the format <span style='font-family:"Courier New"'>mechanism:info, </span>where mechanism can currently be <spanstyle='font-family:"Courier New"'>unix</span>, <span style='font-family:"Courier New"'>krb4</span>       or <span style='font-family:"Courier New"'>internal</span>. For <spanstyle='font-family:"Courier New"'>krb4</span>, the <span style='font-family:"Courier New"'>info</span> is the Kerberos domain, for <span style='font-family:"Courier New"'>internal</span> it is the crypt password itself. <spanstyle='font-family:"Courier New"'>unix</span> simply authenticates against <spanstyle='font-family:"Courier New"'>/etc/passwd</span>. </p>    <h3><a name="_Toc514840851"></a><a name="_Toc421867051">Environment</a></h3>    <p>The access handlers Ð coming early in the Apache request cycle Ð also set       up the session environment. The cookie received from the web client is a       pointer to the session profiles, which are stored in a directory for temporary       files <span style='font-family:"Courier New"'>(/home/httpd/lonIDs/</span>).     </p>    <p class=H5><span style='layout-grid-mode:both'>Standard Components</span></p>    <p>These are the standard components of the environment added by Apache and       the shell.</p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>AUTH_TYPE ----       Basic</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>DOCUMENT_ROOT ----       /home/httpd/html</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>GATEWAY_INTERFACE       ---- CGI-Perl/1.1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT ----       image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_CHARSET       ---- iso-8859-1,*,utf-8</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_ENCODING       ---- gzip</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_LANGUAGE       ---- en,pdf</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_CONNECTION       ---- Keep-Alive</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_COOKIE ----       SITESERVER=ID=cbc6695505253a2ff0e7bb7110574d90; lonID=kortemey_990461714_msu_msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_HOST ----       zaphod.lite.msu.edu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_REFERER ----       </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_USER_AGENT       ---- Mozilla/4.75 (Macintosh; U; PPC)</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>MOD_PERL ---- mod_perl/1.21</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>PATH ---- /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bi&curren;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>QUERY_STRING ----       </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_ADDR ----       35.8.63.7</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_PORT ----       1844</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_USER ----       lonadm</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REQUEST_METHOD       ---- GET</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REQUEST_URI ----       /adm/test</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SCRIPT_FILENAME       ---- /home/httpd/html/adm/test</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SCRIPT_NAME ----       /adm/test</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_ADDR ----       35.8.63.51</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_ADMIN ----       korte@lite.msu.edu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_NAME ----       zaphod.lite.msu.edu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_PORT ----       80</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_PROTOCOL       ---- HTTP/1.0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_SIGNATURE       ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_SOFTWARE       ---- Apache/1.3.9 (Unix) (Red Hat/Linux) mod_perl/1.21</span></p>    <p class=H5><span style='layout-grid-mode:both'>Resource Access Control</span></p>    <p>The following values are set by traceroute at the initialization of the       course and are used by access handlers to check if a resource can be served       to a user.</p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.cond.msu_12679c3ed543a25msul1.0       ---- 0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.cond.msu_12679c3ed543a25msul1.1       ---- 0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.       ---- &amp;:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp       ---- &amp;welcome267.htm:1&amp;welcomelbs267.htm:0&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/Spectrum       ---- &amp;s.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/chain       ---- &amp;chain.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/coulomb       ---- &amp;orbit.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/induct       ---- &amp;faraday.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/conversions       ----</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;conv_area.htm:1&amp;prefixes.htm:1&amp;conv_power.htm:1&amp;intro.htm:1&amp;conv_temperature.htm:1&amp;conv_time.htm:1&amp;conv_velocity.htm:1&amp;conversions.sequence:1&amp;conv_length.htm:1&amp;conv_mass.htm:1&amp;conv_pressure.htm:1&amp;conv_volume.htm:1&amp;conv_energy.htm:1&amp;conv_angle.htm:1&amp;sibaseunits.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap13       ---- &amp;cd371.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap16       ----</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;cd427.htm:1&amp;cd424.htm:1&amp;Stable.htm:1&amp;cd421.htm:1&amp;Constants.htm:1&amp;cd425.htm:1&amp;cd422.htm:1&amp;kap16.sequence:1&amp;cd426.htm:1&amp;cd423.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap17       ----</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;cd436.htm:1&amp;kap17.sequence:1&amp;cd433.htm:1&amp;cd430.htm:1&amp;cd437.htm:1&amp;cd434.htm:1&amp;cd428.htm:1&amp;cd431.htm:1&amp;cd435.htm:1&amp;cd429.htm:1&amp;geometry.htm:1&amp;cd432.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap17/calculus       ---- &amp;calc.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18       ----</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;RR440.htm:1&amp;RR449b.htm:1&amp;RR446b.htm:1&amp;cd473.htm:1&amp;RR453.htm:1&amp;RR447.htm:1&amp;RR443b.htm:1&amp;RR449a.htm:1&amp;RR450.htm:1&amp;RR452a.htm:1&amp;RR444.htm:1&amp;RR446a.htm:1&amp;sum18a.htm:1|1&amp;RR441.htm:1&amp;RR443a.htm:1&amp;eField.htm:1&amp;RR454.htm:1&amp;RR444b.htm:1&amp;RR448.htm:1&amp;RR447app.htm:1&amp;RR451.htm:1&amp;RR445.htm:1&amp;RR453a.htm:1&amp;kap18.sequence:1&amp;RR439.htm:1&amp;RR447a.htm:1&amp;RR442.htm:1&amp;RR450a.htm:1&amp;RR444a.htm:1&amp;RR448b.htm:1&amp;RR445newch.htm:1&amp;RR4460app.htm:1&amp;RR455.htm:1&amp;RR441a.htm:1&amp;RR449.htm:1&amp;RR452.htm:1&amp;cd438.htm:1&amp;RR446.htm:1&amp;RR454a.htm:1&amp;sum18.htm:1|1&amp;RR446c.htm:1&amp;RR448a.htm:1&amp;RR451a.htm:1&amp;RR443.htm:1&amp;RR445answer.htm:0&amp;RR445a.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18/demo       ----</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;vid440.htm:0&amp;vid440sm.htm:0&amp;vid449.htm:0&amp;vid449-a.htm:0&amp;vid441.htm:0&amp;vid449sm.htm:0&amp;vid455.htm:0&amp;egun.htm:0&amp;egunsm.htm:0&amp;vid441sm.htm:0&amp;vid449-asm.htm:0&amp;vid455sm.htm:0&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18/problems       ----</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;cd460b.problem:1&amp;cd458.problem:1&amp;cd462.problem:1&amp;cd457.problem:1&amp;cd461.problem:1&amp;cd460.problem:1&amp;cd464.problem:1&amp;cd459.problem:1&amp;cd463.problem:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18a       ---- &amp;kap18a.sequence:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18a/problems       ----</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;cd465.problem:1&amp;cd472.problem:1&amp;cd466.problem:1&amp;cd467.problem:1&amp;cd470.problem:1&amp;cd468.problem:1&amp;cd471.problem:1&amp;cd469.problem:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'><i>É etc for all       resources in the course É</i></span></p>    <p class=H5><span style='layout-grid-mode:both'>Browser Information</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.mathml       ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.os ----       mac</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.type ----       netscape</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.version       ---- 4.75</span></p>    <p class=H5><span style='layout-grid-mode:both'>Cached Information about Courses and their Description</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.description       ---- lbs267L Lab SS01</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.domain       ---- msu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.home       ---- msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.last_cache       ---- 990461725</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.num       ---- 12679c3ed543a16msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.url       ---- msu/mmp/lbs267l.sequence</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.description       ---- lbs267 Lecture SS01</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.domain       ---- msu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.home       ---- msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.last_cache       ---- 990461728</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.num       ---- 12679c3ed543a25msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.url       ---- msu/mmp/lbs267.sequence</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.description       ---- Demo Course</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.domain       ---- msu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.home       ---- msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.last_cache       ---- 990461725</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.num       ---- 12679c3ed543a37msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.url       ---- msu/korte/demo.sequence</span></p>    <p class=H5><span style='layout-grid-mode:both'>Information Imported from the Environment Database File of the User</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.favorite.cake       ---- Cheese Cake</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.favorite.color       ---- green</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.firstname       ---- Gerd</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.id       ---- z12345678</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.lastname       ---- Kortemeyer</span></p>    <p><b>Information about the Request</b></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>httpref./res/msu/mmp/       ---- /res/msu/mmp/welcome267.htm</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.ambiguous       ---- adm/pages/index.html</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.fn       ---- /home/httpd/perl/tmp/kortemey_msu_12679c3ed543a25msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.id       ---- msu_12679c3ed543a25msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.sec       ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.uri       ---- msu/mmp/lbs267.sequence</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.filename       ---- /home/httpd/html/adm/test</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.host ----       zaphod.lite.msu.edu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.role ----       cc./msu/12679c3ed543a25msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.state ----       published</span></p>    <p class=H5><span style='layout-grid-mode:both'>Information about the User</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.domain ----       msu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.environment       ---- /home/httpd/lonIDs/kortemey_990461714_msu_msul1.id</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.home ----       msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.login.time       ---- 990461714</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.name ----       kortemey</span></p>    <p class=H5><span style='layout-grid-mode:both'>Information about User Roles and Privileges</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.au./msu/./       ---- :sma&amp;F:gan&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.au./msu/./msu/       ---- :cca&amp;IK:are&amp;F:bre&amp;F:cre&amp;F:ere&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./       ---- :sma&amp;F:gan&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./msu/       ---- :are&amp;F:bre&amp;F:cre&amp;F:ere&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./msu/korte       ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./       ---- :sma&amp;F:bre&amp;F:mcr&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./msu/       ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./msu/12679c3ed543a16msul1       ---- :opa&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cst&amp;IK:cin&amp;IK:ere&amp;F:vgr&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./       ---- :sma&amp;F:bre&amp;F:mcr&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./msu/       ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./msu/12679c3ed543a25msul1       ---- :opa&amp;F:srm&amp;F:gan&amp;F:cta&amp;IK:cep&amp;IK:ccr&amp;IK:are&amp;F:cin&amp;IK:cst&amp;IK:cre&amp;F:ere&amp;F:vgr&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./       ---- :sma&amp;F:mcr&amp;F:bre&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./msu/       ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./msu/12679c3ed543a37msul1       ---- :opa&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cst&amp;IK:cin&amp;IK:ere&amp;F:vgr&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./       ---- :sma&amp;F:mcr&amp;F:gan&amp;F:bre&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/       ---- :mau&amp;F:cca&amp;IK:cad&amp;UIK:ccc&amp;U:cst&amp;UIK:cdg&amp;UIK:are&amp;F:cli&amp;UIK:cta&amp;UIK:cep&amp;UIK:ccr&amp;UIK:bre&amp;F:cau&amp;U:cre&amp;F:cin&amp;UIK:ere&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a16msul1       ---- :opa&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cst&amp;IK:cin&amp;IK:ere&amp;F:vgr&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a25msul1       ---- :opa&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cst&amp;IK:cin&amp;IK:ere&amp;F:vgr&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a37msul1       ---- :opa&amp;F:cst&amp;IK:vgr&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cin&amp;IK:ere&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/korte       ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.dc./msu/./       ---- :sma&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.dc./msu/./msu/       ---- :mau&amp;F:cad&amp;UIK:ccr&amp;UIK:cep&amp;UIK:cta&amp;UIK:cli&amp;UIK:ccc&amp;U:cau&amp;U:cst&amp;UIK:cin&amp;UIK:cdg&amp;UIK</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.au./msu/       ---- 964531839.0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.ca./msu/korte       ---- .</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a16msul1       ---- 964531839.0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a25msul1       ---- 964531839.0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a37msul1       ---- 964531839.0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.dc./msu/       ---- 964531839.0</span></p>    <h2>&nbsp;</h2>    <h3><a name="_Toc421867052">Handler Reference: LON-CAPA and the 77 Web Perl       Modules</a></h3>    <p><i>Scott Harrison, freeware volunteer, sharrison@sourceforge.net</i><spanstyle='font-style:normal'> </span></p>    <p>LON-CAPA provides many different web services for coordinating online educational       interactions. Currently, these web services are made available by 77 different       perl modules. The invocation of these perl modules is many times due to       the URI format based on entries inside <tt><span style='font-family:"Courier New"'>/etc/httpd/conf/loncapa_apache.conf</span></tt>. </p>    <p>Throughout this technical manual, various web perl modules are described       in detail. Here is a summary of all the 77 web perl modules: </p>    <table border=1 cellpadding=0>      <tr>         <td class="Normal">           <p align=center style='text-align:center'><b>Name/Location</b></p>        </td>        <td class="Normal">           <p align=center style='text-align:center'><b>Description</b></p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: rat/lonwrapper.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonwrapper.pm</p>        </td>        <td class="Normal">           <p>Wrapper for external and binary files as standalone resources. Edit             handler for rat maps; TeX content handler.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/publisher/loncfile.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncfile.pm</p>        </td>        <td class="Normal">           <p>Provides web-based functionality for file copy, rename, mkdir, etc,             in the construction space menu.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonstatistics.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonstatistics.pm</p>        </td>        <td class="Normal">           <p>Handler to show statistics on solving LON-CAPA problems.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/publisher/londiff.pm<br>            TARGET: home/httpd/lib/perl/Apache/londiff.pm</p>        </td>        <td class="Normal">           <p>Handler to show difference between two files.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/publisher/lonupload.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonupload.pm</p>        </td>        <td class="Normal">           <p>Handler to upload files through browser into construction space.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/essayresponse.pm<br>            TARGET: home/httpd/lib/perl/Apache/essayresponse.pm</p>        </td>        <td class="Normal">           <p>Handler to evaluate essay (ungraded) style responses.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/externalresponse.pm<br>            TARGET: home/httpd/lib/perl/Apache/externalresponse.pm</p>        </td>        <td class="Normal">           <p>Handler to evaluate externally graded responses.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/loncapagrade.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncapagrade.pm</p>        </td>        <td class="Normal">           <p>Handler to evaluate externally graded responses.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/publisher/lonpubdir.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonpubdir.pm</p>        </td>        <td class="Normal">           <p>Handler to publish directories.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/publisher/lonretrieve.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonretrieve.pm</p>        </td>        <td class="Normal">           <p>Handler to retrieve old versions from resource space.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/edit.pm<br>            TARGET: home/httpd/lib/perl/Apache/edit.pm</p>        </td>        <td class="Normal">           <p>Helper functions when in homework edit mode.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonmeta.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonmeta.pm</p>        </td>        <td class="Normal">           <p>Metadata display handler.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: rat/lonambiguous.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonambiguous.pm</p>        </td>        <td class="Normal">           <p>Handler to resolve ambiguous file locations.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: rat/lonratparms.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonratparms.pm</p>        </td>        <td class="Normal">           <p>Handler to set resource parameters inside of the RAT based on metadata.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: rat/lonsequence.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonsequence.pm</p>        </td>        <td class="Normal">           <p>Handler for showing sequence objects of educational resources.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/loncreatecourse.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncreatecourse.pm</p>        </td>        <td class="Normal">           <p>Allows domain coordinators to create new courses and assign course             coordinators.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/loncreateuser.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncreateuser.pm</p>        </td>        <td class="Normal">           <p>Allows users to within their own privileges create/edit users and             give them roles.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonchart.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonchart.pm</p>        </td>        <td class="Normal">           <p>Produces simple LectureOnline-like student assessment performance             chart</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/loncommon.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncommon.pm</p>        </td>        <td class="Normal">           <p>Makes a table out of the previous attempts. Inputs result_from_symbread,             user, domain, home_server, course_id.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/grades.pm<br>            TARGET: home/httpd/lib/perl/Apache/grades.pm</p>        </td>        <td class="Normal">           <p>Handles the viewing of grades.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/imageresponse.pm<br>            TARGET: home/httpd/lib/perl/Apache/imageresponse.pm</p>        </td>        <td class="Normal">           <p>Coordinates the response to clicking an image.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/optionresponse.pm<br>            TARGET: home/httpd/lib/perl/Apache/optionresponse.pm</p>        </td>        <td class="Normal">           <p>Handles tags associated with showing a list of options.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/outputtags.pm<br>            TARGET: home/httpd/lib/perl/Apache/outputtags.pm</p>        </td>        <td class="Normal">           <p>Handles tags associated with output. Seems to relate to due dates             of the assignment.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lontest.pm<br>            TARGET: home/httpd/lib/perl/Apache/lontest.pm</p>        </td>        <td class="Normal">           <p>Used for debugging and testing the LON-CAPA system.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/radiobuttonresponse.pm<br>            TARGET: home/httpd/lib/perl/Apache/radiobuttonresponse.pm</p>        </td>        <td class="Normal">           <p>Handles multiple-choice style responses.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonassignments.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonassignments.pm</p>        </td>        <td class="Normal">           <p>Handles processing of assignments.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/loncommunicate.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncommunicate.pm</p>        </td>        <td class="Normal">           <p>Will be the access handler to email sending, as well as the planned             chatrooms, etc.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonerrorhandler.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonerrorhandler.pm</p>        </td>        <td class="Normal">           <p>Handles errors.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonevaluate.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonevaluate.pm</p>        </td>        <td class="Normal">           <p>Handles evaluation.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonfeedback.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonfeedback.pm</p>        </td>        <td class="Normal">           <p>Handles feedback from students to instructors and system administrators.             Provides a screenshot of the current resource, as well as previous             attempts if the resource was a homework. Used by lonmsg.pm.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonnavmaps.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonnavmaps.pm</p>        </td>        <td class="Normal">           <p>Handles navigational maps.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonpreferences.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonpreferences.pm</p>        </td>        <td class="Normal">           <p>Handles user preferences associated with customizing the online LON-CAPA             educational environment.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonprintout.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonprintout.pm</p>        </td>        <td class="Normal">           <p>Handles the production of printable files and resources.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonsearchcat.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonsearchcat.pm</p>        </td>        <td class="Normal">           <p>Handles a searchable catalogue.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/londropadd.pm<br>            TARGET: home/httpd/lib/perl/Apache/londropadd.pm</p>        </td>        <td class="Normal">           <p>Allows course coordinators to upload courselists in different formats,             and automatically create users (if they do not exist already), assign             them the role of student in a course, and add them to the classlist.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonmsg.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonmsg.pm</p>        </td>        <td class="Normal">           <p>lonmsg.pm has several functions to send and receive internal messages.             author_res_msg - send message to resource author. user_crit_msg -             send a critical message to a user. A critical message will require             acknowledgment by the recipient and the sender will be notified. user_crit_received             - routine to trigger acknowledgment. statuschange - change the status             of a message (read, replied, forwarded, etc). The handler also displays             messages, has routines to reply, etc.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/hint.pm<br>            TARGET: home/httpd/lib/perl/Apache/hint.pm</p>        </td>        <td class="Normal">           <p>This handler coordinates the delivery of hints to students working             on LON-CAPA problems and assignments.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonspreadsheet.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonspreadsheet.pm</p>        </td>        <td class="Normal">           <p>Spreadsheets are completely web-based. They exist on the level of             a whole course, a student, and individual assessments.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonparmset.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonparmset.pm</p>        </td>        <td class="Normal">           <p>Handler to resolve ambiguous file locations</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/publisher/lonconstruct.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonconstruct.pm</p>        </td>        <td class="Normal">           <p>Page wrapper for handling construction space.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/publisher/lonpublisher.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonpublisher.pm</p>        </td>        <td class="Normal">           <p>Publishes an LON-CAPA educational resource complete with metadata             (authorship, language, copyright, creation date, etc).</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonmenu.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonmenu.pm</p>        </td>        <td class="Normal">           <p>Has routines which control the remote control.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: rat/lonpageflip.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonpageflip.pm</p>        </td>        <td class="Normal">           <p>Deals with forward, backward, and other page flips.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: rat/lonratedt.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonratedt.pm</p>        </td>        <td class="Normal">           <p>Builds up frame set and loads in the right thing.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/html/res/adm/pages/homeworkmenu.html<br>            TARGET: home/httpd/html/res/adm/pages/homeworkmenu.html</p>        </td>        <td class="Normal">           <p>Homework remote control.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/html/res/adm/pages/annotator/admannotations.pm<br>            TARGET: home/httpd/lib/perl/Apache/admannotations.pm</p>        </td>        <td class="Normal">           <p>This will take annotations and then plug them into a page.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/html/res/adm/pages/bookmarkmenu/admbookmarks.pm<br>            TARGET: home/httpd/lib/perl/Apache/admbookmarks.pm</p>        </td>        <td class="Normal">           <p>This will take bookmarks and get/write/display them for the LON-CAPA             user interface.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: rat/lonratsrv.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonratsrv.pm</p>        </td>        <td class="Normal">           <p>Handler that takes output from RAT and stores it on disk. Handles             the upper hidden frame of the added window that comes up in RAT. (3             frames come up in RAT server, code, and output. This module handles             server connection.)</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: rat/lonpage.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonpage.pm</p>        </td>        <td class="Normal">           <p>bundles pages into one page</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: rat/lonuserstate.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonuserstate.pm</p>        </td>        <td class="Normal">           <p>compile course into binary data structure (in loncom/rat)</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/xml/lontex.pm<br>            TARGET: home/httpd/lib/perl/Apache/lontex.pm</p>        </td>        <td class="Normal">           <p>Handler for tex files (somewhere in modules)</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/xml/lontexconvert.pm<br>            TARGET: home/httpd/lib/perl/Apache/lontexconvert.pm</p>        </td>        <td class="Normal">           <p>Access to tth/ttm</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/xml/lonxml.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonxml.pm</p>        </td>        <td class="Normal">           <p>XML Parsing Module</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/xml/lonplot.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonplot.pm</p>        </td>        <td class="Normal">           <p>XML-based plotter of graphs</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/xml/style.pm<br>            TARGET: home/httpd/lib/perl/Apache/style.pm</p>        </td>        <td class="Normal">           <p>Style Parsing Module</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/xml/londefdef.pm<br>            TARGET: home/httpd/lib/perl/Apache/londefdef.pm</p>        </td>        <td class="Normal">           <p>Tags Default Definition Module</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/xml/run.pm<br>            TARGET: home/httpd/lib/perl/Apache/run.pm</p>        </td>        <td class="Normal">           <p>used to prevent poorly written problems from causing lingering after             effects</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/xml/scripttag.pm<br>            TARGET: home/httpd/lib/perl/Apache/scripttag.pm</p>        </td>        <td class="Normal">           <p>implements &lt;script&gt;, &lt;scriptlib&gt;, &lt;parserlib&gt;,             and &lt;import&gt;</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/randomlabel.pm<br>            TARGET: home/httpd/lib/perl/Apache/randomlabel.pm</p>        </td>        <td class="Normal">           <p>Interface for producing applet code which randomizes the labelling             of an image.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/lonhomework.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonhomework.pm</p>        </td>        <td class="Normal">           <p>handles requests for output, evaluation, and alteration of a homework             resource</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/inputtags.pm<br>            TARGET: home/httpd/lib/perl/Apache/inputtags.pm</p>        </td>        <td class="Normal">           <p>produces HTML input tags (&lt;INPUT&gt;) for rendering homework resources</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/structuretags.pm<br>            TARGET: home/httpd/lib/perl/Apache/structuretags.pm</p>        </td>        <td class="Normal">           <p>produces HTML tags necessary for structuring the presentation of             homework resources</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/response.pm<br>            TARGET: home/httpd/lib/perl/Apache/response.pm</p>        </td>        <td class="Normal">           <p>defines different types of responses given to student as well as             syntax for producing response values</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/caparesponse/caparesponse.pm<br>            TARGET: home/httpd/lib/perl/Apache/caparesponse.pm</p>        </td>        <td class="Normal">           <p>handles request to the CAPA homework processing engine</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/xml/Safe.pm<br>            TARGET: home/httpd/lib/perl/Safe.pm</p>        </td>        <td class="Normal">           <p>Meant to safely substitute for CPAN version of Safe. Allows for safely             executing embedded perl comands in a way that does not threaten the             operating system.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/auth/localauth.pm<br>            TARGET: home/httpd/lib/perl/localauth.pm</p>        </td>        <td class="Normal">           <p>Local authentication mechanism (meant to be customized).</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/auth/lonacc.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonacc.pm</p>        </td>        <td class="Normal">           <p>(This module, like loncacc.pm also authenticates with cookies.) lonacc.pm             coordinates access to a wide range of administrative-type functions             (e.g. roles, logout, annotations, and bookmarks) as well as coordinating             access to educational resources.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/auth/lonracc.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonracc.pm</p>        </td>        <td class="Normal">           <p>access handler for file transfers</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/auth/loncacc.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncacc.pm</p>        </td>        <td class="Normal">           <p>This module provides access to an educational resource construction             area. This module is invoked by the URL-related pattern syntax LocationMatch             &quot;^/priv.*&quot; or LocationMatch &quot;^/\~.*&quot;. Authentication             of user identity is coordinated through cookies. The abbreviation             &quot;cacc&quot; corresponds to &quot;construction-space access&quot;).             If the cookie handle is invalid, then this module returns a forbidden             status and makes appropriate log entries. If the cookie handle is             valid, status is determined to be okay (and, for the &quot;priv&quot;-type             access, the resource is delivered by the lonconstruct module).</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/auth/lonauth.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonauth.pm</p>        </td>        <td class="Normal">           <p>authenticate, set up session environment</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/auth/lonlogin.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonlogin.pm</p>        </td>        <td class="Normal">           <p>login screen</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/auth/lonlogout.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonlogout.pm</p>        </td>        <td class="Normal">           <p>logout</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/lonnet/perl/lonrep.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonrep.pm</p>        </td>        <td class="Normal">           <p>replication</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/auth/lonroles.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonroles.pm</p>        </td>        <td class="Normal">           <p>This perl handling module reads in the available roles available             for a LON-CAPA user (different courses, different privileges, etc)             and produces a form-element HTML page which allows the user to select             which role he wishes to exercise in the LON-CAPA system. For instance,             a user may want to select between being a student in a thermodynamics             physics course or a teaching assistant for an introductory calculus             class.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/lonindexer.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonindexer.pm</p>        </td>        <td class="Normal">           <p>cross server filesystem browser</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/interface/groupsort.pm<br>            TARGET: home/httpd/lib/perl/Apache/groupsort.pm</p>        </td>        <td class="Normal">           <p>Implements a second phase of importing multiple resources into the             RAT. Allows for reordering the sequence of resources.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/lonnet/perl/lonnet.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonnet.pm</p>        </td>        <td class="Normal">           <p>This file is an interface to the lonc processes of the LON-CAPA network             as well as set of elaborated functions for handling information necessary             for navigating through a given cluster of LON-CAPA machines within             a domain. There are over 40 specialized functions in this module which             handle the reading and transmission of metadata, user information             (ids, names, environments, roles, logs), file information (storage,             reading, directories, extensions, replication, embedded styles and             descriptors), educational resources (course descriptions, section             names and numbers), url hashing (to assign roles on a url basis),             and translating abbreviated symbols to and from more descriptive phrases             or explanations.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/lectureonline.lcpm<br>            TARGET: home/httpd/html/res/adm/includes/lectureonline.lcpm</p>        </td>        <td class="Normal">           <p>Intended for providing perl functions for the &lt;script&gt;&lt;/script&gt;             environment in a problem that was converted from lectureonline.</p>        </td>      </tr>      <tr>         <td class="Normal">           <p>SOURCE: loncom/homework/default_homework.lcpm<br>            TARGET: home/httpd/html/res/adm/includes/default_homework.lcpm</p>        </td>        <td class="Normal">           <p>Provides many functions for the &lt;script&gt; environment in a .problem.             Functions are documented in CVS:loncapa/doc/homework/homework5.html.</p>        </td>      </tr>    </table>  </div></div></body></html>
\ No newline at end of file
+<html>
+<head>
+<meta name=Title content="Session Two: Apache Handlers (loncapa_apache">
+<meta http-equiv=Content-Type content="text/html; charset=macintosh">
+<title>Session Two: Apache Handlers (loncapa_apache</title>
+<style><!--
+.Section1
+	{page:Section1;}
+.Section2
+	{page:Section2;}
+-->
+</style>
+</head>
+<body bgcolor=#FFFFFF class="Normal" lang=EN-US>
+<div class=Section1> 
+  <h2>Session Two: Apache Handlers (loncapa_apache.conf), Authentication and Access 
+    Control, Session Environment (Matthew)</h2>
+  <h3><a name="_Toc470397993"></a><a name="_Toc514840845"></a><a
+name="_Toc421867046"><span>Server Content Resource Areas</span></a></h3>
+  <p>Internally, all resources are identified primarily by their URL.&nbsp; Different 
+    logical areas of the server are distinguished by the beginning part of the 
+    URL: </p>
+  <ul type=disc>
+    <li><span
+     style='font-family:"Courier New"'>/adm: </span>publicly available content, 
+      logos, manual pages, etc.<i></i></li>
+  </ul>
+  <ul type=disc>
+    <li><span
+     style='font-family:"Courier New"'>/res/<i>domainname</i></span><span
+     style='font-family:"Courier New"'>/<i>authorname</i></span><span
+     style='font-family:"Courier New"'>/..: </span>the resource area, holding 
+      course maps, HTML pages, homework, movies, applets, etc. Access to these 
+      files is restricted by the cookie-based authentication mechanism. Content 
+      in this area will be served by type-dependent handlers, for example, one 
+      handlers to serve homework problems, and another one for TeX resources. 
+      The structure of this area of the server is exactly the same on every server, 
+      even though not all resources might be present everywhere.</li>
+  </ul>
+  <ul type=disc>
+    <li><span
+     style='font-family:"Courier New"'>/raw/<i>domainname</i></span><span
+     style='font-family:"Courier New"'>/<i>authorname</i></span><span
+     style='font-family:"Courier New"'>/..: </span>internally, this is just a 
+      symbolic link to the <span style='font-family:"Courier New"'>res</span> 
+      directory, however, no content handlers are called when serving a resource 
+      and access is controlled by IP rather than cookies. This structure is used 
+      for replication of resources between servers.</li>
+  </ul>
+  <ul type=disc>
+    <li><span
+     style='font-family:"Courier New"'>/~<i>authorname</i></span><span
+     style='font-family:"Courier New"'>/.., /priv<i>/authorname</i></span><span
+     style='font-family:"Courier New"'>: </span>the content construction space.<span
+     style='font-family:"Courier New"'> </span>This is normal UNIX filespace, 
+      which however can only by viewed on the web by the authors themselves through 
+      the cookie based authentication. Content handlers are active for this space. 
+      This space can be mounted on other UNIX machines, as well as AppleShare 
+      and Windows. Below the <span style='font-family:"Courier New"'><i>authorname</i></span>, 
+      this directory has the same structure as the resource space of the author.</li>
+  </ul>
+  <ul type=disc>
+    <li><span
+     style='font-family:"Courier New"'>/lon-status/..: </span>LON-CAPA status 
+      information Ð behind basic http authentication so it is not dependent on 
+      system functions</li>
+  </ul>
+  <p>Authors can only write-access the<i> </i><span
+style='font-family:"Courier New";font-style:normal'>/~</span><span
+style='font-family:"Courier New"'><i>authorname</i></span><span
+style='font-family:"Courier New"'>/</span> space. They can copy resources into 
+    the resource area through the publication step, and move them back through 
+    a retrieve step. Authors do not have direct write-access to their resource 
+    space.</p>
+  <h3><a name="_Toc514840846"></a><a name="_Toc421867047">Apache Request Cycle 
+    and Handlers</a></h3>
+  <p>The standard mode in which the Apache web server is used is that a URL corresponds 
+    to some static file on the file system, which then more or less gets sent 
+    out as-is. Slight deviations from that simple principle are however already 
+    the directory listing function, virtual servers, and the cgi-bin directory. 
+    In the latter case, Apache executes the file in a new process and provides 
+    both the input to the process in the environment, and routes the output to 
+    the client. Other deviations are the error messages.</p>
+  <p>In a more general view, URLs to Apache are URIs (Uniform Resource Identifiers), 
+    which may are may not correspond to a physical file, which in turn may or 
+    may not be sent out as-is.</p>
+  <p>As a request for a URI gets sent to the Apache server, it goes through several 
+    phases. At each phase (ÒstageÓ) along the process, handler modules can be 
+    defined to deal with the request. Details about these phases are given in 
+    the Eagle book Chapter 3 (page 60).</p>
+  <p>These handler modules are not like cgi-scripts executed in a separate process, 
+    but are dynamically linked into the Apache child processes themselves Ð they 
+    run inside of Apache. The mod_perl mechanism in addition links the Perl interpreter 
+    into the Apache child process. Modules are pre-interpreted (ÒcompiledÓ) by 
+    the Perl interpreter when they are first loaded, and the pre-interpreted code 
+    stays permanently in the memory allocated to that Apache child process. The 
+    result is a significant speed-up, and through the flexible mechanism of module 
+    registration and different stages of the process, a high degree of customizability.</p>
+  <p>LON-CAPA does not use Apache::Registry, and so in addition avoids the unnecessary 
+    overhead of emulating a cgi-environment within the handlers. Instead, it makes 
+    direct use of the Apache Perl API (Chapter 9, Eagle book).&nbsp; </p>
+  <h3><a name="_Toc514840847"></a><a name="_Toc421867048">Handler Definition</a></h3>
+  <p>Which chain of handler deals with which kind of resource is defined in <span style='font-size:9.0pt;font-family:"Courier New"'>/etc/httdp/conf/loncapa_apache.conf</span>. 
+    LON-CAPA only defines handlers at the (in order) header-parser, access control, 
+    and response phase (figure 3-3 Eagle book). In the header-parser phase, the 
+    replication handler is run, and in the access-control phase, the various access-handlers. 
+    Future handlers will mostly be implemented in the response phase.<b> Fig. 
+    1.2.2</b><span style='font-weight:normal'> shows excerpts of the configuration 
+    script </span><span style='font-size:9.0pt;font-family:"Courier New"'>/etc/httpd/loncapa_apache.conf</span> 
+    for these modules.</p>
+  <div style='border:solid windowtext .5pt;padding:31.0pt 31.0pt 31.0pt 31.0pt'> 
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'># ------------------------------------------------------------- 
+      Access Handlers</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res.*&quot;&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      Apache::lonacc</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlHeaderParserHandler Apache::lonrep</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      403 /adm/login</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      404 /adm/notfound.html</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      406 /adm/roles</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      500 /adm/errorhandler</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/priv.*&quot;&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::loncacc</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>SetHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      perl-script</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      Apache::lonconstruct</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      403 /adm/login</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      404 /adm/notfound.html</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      406 /adm/unauthorized.html</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      500 /adm/errorhandler</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/raw.*&quot;&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::lonracc</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/\~.*&quot;&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::loncacc</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      403 /adm/login</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      404 /adm/notfound.html</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      406 /adm/unauthorized.html</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      500 /adm/errorhandler</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>AllowOverride None</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span><span
+style='font-size:16.0pt;font-family:"Courier New"'></span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'># --------------------------------------------- 
+      Resource Space Content Handlers</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*/$&quot;&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonindexer</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*\.tex$&quot;&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lontex</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*\.page$&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonpage</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/(res|\~).*\.(xml|html|htm|xhtml|xhtm)$&quot;&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonxml</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/(res|\~).*\.(problem|exam|quiz|assess|survey|form)$&quot;&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonhomework</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'># -------------------------------------------------------------- 
+      Admin Programs</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/roles&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      Apache::lonacc</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonroles</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      403 /adm/login</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      500 /adm/errorhandler</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/login&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonlogin</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/annotations&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+      Apache::lonacc</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::admannotations</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      403 /adm/login</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
+      500 /adm/errorhandler</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>
+    <p style='border:none;padding:0in;'><span
+style='font-size:14.0pt;font-family:"Courier New"'><b>É etc É</b></span></p>
+  </div>
+  <p><span style='font-size:14.0pt'><b>Fig. 1.2.2</b></span><span
+style='font-size:14.0pt'> Ð Excerpts of </span><span style='font-size:14.0pt;
+font-family:"Courier New"'>loncapa_apache.conf</span></p>
+  <h3><a name="_Toc514840849"></a><a name="_Toc421867049">Authentication Overview</a></h3>
+  <p>A user can log into any server in the network and run sessions. The server 
+    responsible for initially authenticating the user is the userÕs homeserver.</p>
+  <p>When a user first accesses a server within a browser session, he or she is 
+    challenged to provide authentication information in the form of username, 
+    password and domain Ð this is done by <span style='font-family:
+"Courier New"'>lonlogin</span>, which is the <span style='font-family:"Courier New"'>error_document</span> 
+    for <span style='font-family:"Courier New"'>lonacc</span> and <span
+style='font-family:"Courier New"'>loncacc </span>(the normal authentication handlers). 
+    When the server receives that information, it asks all library servers in 
+    the domain that the user specified to validate the information Ð this is done 
+    by <span style='font-family:"Courier New"'>lonauth</span>. </p>
+  <p>The userÕs home server will answer with<i> </i><span
+style='font-family:"Courier New";font-style:normal'>authorized</span> or <span
+style='font-family:"Courier New"'>non_authorized</span>, all others with <span
+style='font-family:"Courier New"'>unknown_user</span>. If one server authorizes 
+    the user, a cookie is returned to the user by <span style='font-family:"Courier New"'>lonauth</span> 
+    and the session is initialized on the local server by establishing the session 
+    environment file. If a server sends<i> </i><span style='font-family:"Courier New";
+font-style:normal'>non_authorized</span>, the user is rejected.&nbsp; <b>Fig. 
+    1.3.1</b><span
+style='font-weight:normal'> illustrates this process.</span></p>
+</div>
+<br
+clear=ALL style='page-break-before:always;'>
+<div class=Section2>
+  <div class=Section3>
+    <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>
+      <p style='border:none;padding:0in'>Domain</p>
+      <p style='border:none;padding:0in'> <span style='font-family:Wingdings'>ˆ</span> 
+        username, password <span style='font-family:Wingdings'>ˆ</span> <b>Library 
+        Server</b></p>
+      <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>§</span> 
+        unknown_user <span style='font-family:Wingdings'>§</span></p>
+      <p style='border:none;padding:0in'> |</p>
+      <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>ˆ</span> 
+        username, password <span style='font-family:Wingdings'>ˆ</span> <b>Library 
+        Server</b></p>
+      <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>§</span> 
+        authorized <span style='font-family:Wingdings'>§</span></p>
+      <p style='border:none;padding:0in'> |</p>
+      <p style='border:none;padding:0in'><b>User</b><span
+style='font-weight:normal'> </span><span style='font-family:Wingdings'>ˆ</span> 
+        username,password,domain <span style='font-family:Wingdings'>ˆ</span> 
+        <b>Server </b></p>
+      <p style='border:none;padding:0in'><b> </b><span
+style='font-family:Wingdings'><b>§</b></span><b> </b><span style='font-weight:
+normal'>cookie</span><b> </b><span style='font-family:Wingdings'><b>§</b></span><b> 
+        </b><span style='font-weight:normal'>store session information for valid 
+        cookies</span></p>
+    </div>
+    <p><span style='font-size:14.0pt'><b>Fig. 1.3.1</b></span><span
+style='font-size:14.0pt'> Ð Illustration of Authentication Mechanism</span></p>
+    <p class=MsoBodyText style='line-height:normal'><span style='font-size:10.0pt'>At 
+      all subsequent interactions, the client sends the cookie back to the server 
+      Ð if the cookie is missing or invalid, the user is re-challenged for login 
+      information. Handlers are </span><span style='font-size:10.0pt;font-family:
+"Courier New"'>lonacc</span><span style='font-size:10.0pt'> and </span><span
+style='font-size:10.0pt;font-family:"Courier New"'>loncacc</span><span
+style='font-size:10.0pt'>. Cookies expire by closing the browser and are invalidated 
+      when the user logs out or logs in a second time into the same machine from 
+      another browser<i>.</i></span></p>
+    <h3><a name="_Toc514840850"></a><a name="_Toc421867050">Authentication Mechanisms, 
+      User Data, Passwords</a></h3>
+    <p>On the library servers, it is a routine in<span
+style='font-family:"Courier New"'> lond </span>that does the authentication. It 
+      checks if this is the userÕs homeserver, checks the password, and answers<span
+style='font-family:"Courier New"'> </span>with <span style='font-family:"Courier New"'>Òunknown_userÓ, 
+      ÒauthorizedÓ </span>or<span style='font-family:"Courier New"'> Ònon_authorizedÓ. 
+      </span></p>
+    <p class=MsoHeader>Determination if this is the userÕs homeserver is done 
+      by the presence of his or her password file in</p>
+    <p><span style='font-family:"Courier New"'> /home/httpd/lonUsers/<i>domain</i></span><span style='font-family:"Courier New"'>/<i>1.char</i></span><span
+style='font-family:"Courier New"'>/<i>2.char</i></span><span style='font-family:
+"Courier New"'>/<i>3.char</i></span><span style='font-family:"Courier New"'>/<i>username</i></span><span
+style='font-family:"Courier New"'>/passwd</span></p>
+    <p class=MsoHeader>for example</p>
+    <p><span style='font-family:"Courier New"'> /home/httpd/lonUsers/msu/s/m/i/smith/passwd</span></p>
+    <p>The password is stored in the format <span style='font-family:
+"Courier New"'>mechanism:info, </span>where mechanism can currently be <span
+style='font-family:"Courier New"'>unix</span>, <span style='font-family:"Courier New"'>krb4</span> 
+      or <span style='font-family:"Courier New"'>internal</span>. For <span
+style='font-family:"Courier New"'>krb4</span>, the <span style='font-family:
+"Courier New"'>info</span> is the Kerberos domain, for <span style='font-family:
+"Courier New"'>internal</span> it is the crypt password itself. <span
+style='font-family:"Courier New"'>unix</span> simply authenticates against <span
+style='font-family:"Courier New"'>/etc/passwd</span>. </p>
+    <h3><a name="_Toc514840851"></a><a name="_Toc421867051">Environment</a></h3>
+    <p>The access handlers Ð coming early in the Apache request cycle Ð also set 
+      up the session environment. The cookie received from the web client is a 
+      pointer to the session profiles, which are stored in a directory for temporary 
+      files <span style='font-family:"Courier New"'>(/home/httpd/lonIDs/</span>). 
+    </p>
+    <p class=H5><span style='layout-grid-mode:
+both'>Standard Components</span></p>
+    <p>These are the standard components of the environment added by Apache and 
+      the shell.</p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>AUTH_TYPE ---- 
+      Basic</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>DOCUMENT_ROOT ---- 
+      /home/httpd/html</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>GATEWAY_INTERFACE 
+      ---- CGI-Perl/1.1</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT ---- 
+      image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_CHARSET 
+      ---- iso-8859-1,*,utf-8</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_ENCODING 
+      ---- gzip</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_LANGUAGE 
+      ---- en,pdf</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_CONNECTION 
+      ---- Keep-Alive</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_COOKIE ---- 
+      SITESERVER=ID=cbc6695505253a2ff0e7bb7110574d90; lonID=kortemey_990461714_msu_msul1</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_HOST ---- 
+      zaphod.lite.msu.edu</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_REFERER ---- 
+      </span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_USER_AGENT 
+      ---- Mozilla/4.75 (Macintosh; U; PPC)</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>MOD_PERL ---- mod_perl/1.21</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>PATH ---- /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bi&curren;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>QUERY_STRING ---- 
+      </span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_ADDR ---- 
+      35.8.63.7</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_PORT ---- 
+      1844</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_USER ---- 
+      lonadm</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REQUEST_METHOD 
+      ---- GET</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REQUEST_URI ---- 
+      /adm/test</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SCRIPT_FILENAME 
+      ---- /home/httpd/html/adm/test</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SCRIPT_NAME ---- 
+      /adm/test</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_ADDR ---- 
+      35.8.63.51</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_ADMIN ---- 
+      korte@lite.msu.edu</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_NAME ---- 
+      zaphod.lite.msu.edu</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_PORT ---- 
+      80</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_PROTOCOL 
+      ---- HTTP/1.0</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_SIGNATURE 
+      ---- </span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_SOFTWARE 
+      ---- Apache/1.3.9 (Unix) (Red Hat/Linux) mod_perl/1.21</span></p>
+    <p class=H5><span style='layout-grid-mode:
+both'>Resource Access Control</span></p>
+    <p>The following values are set by traceroute at the initialization of the 
+      course and are used by access handlers to check if a resource can be served 
+      to a user.</p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.cond.msu_12679c3ed543a25msul1.0 
+      ---- 0</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.cond.msu_12679c3ed543a25msul1.1 
+      ---- 0</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1. 
+      ---- &amp;:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp 
+      ---- &amp;welcome267.htm:1&amp;welcomelbs267.htm:0&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/Spectrum 
+      ---- &amp;s.htm:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/chain 
+      ---- &amp;chain.htm:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/coulomb 
+      ---- &amp;orbit.htm:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/induct 
+      ---- &amp;faraday.htm:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/conversions 
+      ----</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;conv_area.htm:1&amp;prefixes.htm:1&amp;conv_power.htm:1&amp;intro.htm:1&amp;conv_temperature.htm:1&amp;conv_time.htm:1&amp;conv_velocity.htm:1&amp;conversions.sequence:1&amp;conv_length.htm:1&amp;conv_mass.htm:1&amp;conv_pressure.htm:1&amp;conv_volume.htm:1&amp;conv_energy.htm:1&amp;conv_angle.htm:1&amp;sibaseunits.htm:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap13 
+      ---- &amp;cd371.htm:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap16 
+      ----</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;cd427.htm:1&amp;cd424.htm:1&amp;Stable.htm:1&amp;cd421.htm:1&amp;Constants.htm:1&amp;cd425.htm:1&amp;cd422.htm:1&amp;kap16.sequence:1&amp;cd426.htm:1&amp;cd423.htm:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap17 
+      ----</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;cd436.htm:1&amp;kap17.sequence:1&amp;cd433.htm:1&amp;cd430.htm:1&amp;cd437.htm:1&amp;cd434.htm:1&amp;cd428.htm:1&amp;cd431.htm:1&amp;cd435.htm:1&amp;cd429.htm:1&amp;geometry.htm:1&amp;cd432.htm:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap17/calculus 
+      ---- &amp;calc.htm:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18 
+      ----</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;RR440.htm:1&amp;RR449b.htm:1&amp;RR446b.htm:1&amp;cd473.htm:1&amp;RR453.htm:1&amp;RR447.htm:1&amp;RR443b.htm:1&amp;RR449a.htm:1&amp;RR450.htm:1&amp;RR452a.htm:1&amp;RR444.htm:1&amp;RR446a.htm:1&amp;sum18a.htm:1|1&amp;RR441.htm:1&amp;RR443a.htm:1&amp;eField.htm:1&amp;RR454.htm:1&amp;RR444b.htm:1&amp;RR448.htm:1&amp;RR447app.htm:1&amp;RR451.htm:1&amp;RR445.htm:1&amp;RR453a.htm:1&amp;kap18.sequence:1&amp;RR439.htm:1&amp;RR447a.htm:1&amp;RR442.htm:1&amp;RR450a.htm:1&amp;RR444a.htm:1&amp;RR448b.htm:1&amp;RR445newch.htm:1&amp;RR4460app.htm:1&amp;RR455.htm:1&amp;RR441a.htm:1&amp;RR449.htm:1&amp;RR452.htm:1&amp;cd438.htm:1&amp;RR446.htm:1&amp;RR454a.htm:1&amp;sum18.htm:1|1&amp;RR446c.htm:1&amp;RR448a.htm:1&amp;RR451a.htm:1&amp;RR443.htm:1&amp;RR445answer.htm:0&amp;RR445a.htm:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18/demo 
+      ----</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;vid440.htm:0&amp;vid440sm.htm:0&amp;vid449.htm:0&amp;vid449-a.htm:0&amp;vid441.htm:0&amp;vid449sm.htm:0&amp;vid455.htm:0&amp;egun.htm:0&amp;egunsm.htm:0&amp;vid441sm.htm:0&amp;vid449-asm.htm:0&amp;vid455sm.htm:0&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18/problems 
+      ----</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;cd460b.problem:1&amp;cd458.problem:1&amp;cd462.problem:1&amp;cd457.problem:1&amp;cd461.problem:1&amp;cd460.problem:1&amp;cd464.problem:1&amp;cd459.problem:1&amp;cd463.problem:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18a 
+      ---- &amp;kap18a.sequence:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18a/problems 
+      ----</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;cd465.problem:1&amp;cd472.problem:1&amp;cd466.problem:1&amp;cd467.problem:1&amp;cd470.problem:1&amp;cd468.problem:1&amp;cd471.problem:1&amp;cd469.problem:1&amp;</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'><i>É etc for all 
+      resources in the course É</i></span></p>
+    <p class=H5><span style='layout-grid-mode:
+both'>Browser Information</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.mathml 
+      ---- </span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.os ---- 
+      mac</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.type ---- 
+      netscape</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.version 
+      ---- 4.75</span></p>
+    <p class=H5><span style='layout-grid-mode:
+both'>Cached Information about Courses and their Description</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.description 
+      ---- lbs267L Lab SS01</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.domain 
+      ---- msu</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.home 
+      ---- msul1</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.last_cache 
+      ---- 990461725</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.num 
+      ---- 12679c3ed543a16msul1</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.url 
+      ---- msu/mmp/lbs267l.sequence</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.description 
+      ---- lbs267 Lecture SS01</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.domain 
+      ---- msu</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.home 
+      ---- msul1</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.last_cache 
+      ---- 990461728</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.num 
+      ---- 12679c3ed543a25msul1</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.url 
+      ---- msu/mmp/lbs267.sequence</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.description 
+      ---- Demo Course</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.domain 
+      ---- msu</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.home 
+      ---- msul1</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.last_cache 
+      ---- 990461725</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.num 
+      ---- 12679c3ed543a37msul1</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.url 
+      ---- msu/korte/demo.sequence</span></p>
+    <p class=H5><span style='layout-grid-mode:
+both'>Information Imported from the Environment Database File of the User</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.favorite.cake 
+      ---- Cheese Cake</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.favorite.color 
+      ---- green</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.firstname 
+      ---- Gerd</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.id 
+      ---- z12345678</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.lastname 
+      ---- Kortemeyer</span></p>
+    <p><b>Information about the Request</b></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>httpref./res/msu/mmp/ 
+      ---- /res/msu/mmp/welcome267.htm</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.ambiguous 
+      ---- adm/pages/index.html</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.fn 
+      ---- /home/httpd/perl/tmp/kortemey_msu_12679c3ed543a25msul1</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.id 
+      ---- msu_12679c3ed543a25msul1</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.sec 
+      ---- </span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.uri 
+      ---- msu/mmp/lbs267.sequence</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.filename 
+      ---- /home/httpd/html/adm/test</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.host ---- 
+      zaphod.lite.msu.edu</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.role ---- 
+      cc./msu/12679c3ed543a25msul1</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.state ---- 
+      published</span></p>
+    <p class=H5><span style='layout-grid-mode:
+both'>Information about the User</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.domain ---- 
+      msu</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.environment 
+      ---- /home/httpd/lonIDs/kortemey_990461714_msu_msul1.id</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.home ---- 
+      msul1</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.login.time 
+      ---- 990461714</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.name ---- 
+      kortemey</span></p>
+    <p class=H5><span style='layout-grid-mode:
+both'>Information about User Roles and Privileges</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.au./msu/./ 
+      ---- :sma&amp;F:gan&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.au./msu/./msu/ 
+      ---- :cca&amp;IK:are&amp;F:bre&amp;F:cre&amp;F:ere&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./ 
+      ---- :sma&amp;F:gan&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./msu/ 
+      ---- :are&amp;F:bre&amp;F:cre&amp;F:ere&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./msu/korte 
+      ---- </span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./ 
+      ---- :sma&amp;F:bre&amp;F:mcr&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./msu/ 
+      ---- </span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./msu/12679c3ed543a16msul1 
+      ---- :opa&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cst&amp;IK:cin&amp;IK:ere&amp;F:vgr&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./ 
+      ---- :sma&amp;F:bre&amp;F:mcr&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./msu/ 
+      ---- </span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./msu/12679c3ed543a25msul1 
+      ---- :opa&amp;F:srm&amp;F:gan&amp;F:cta&amp;IK:cep&amp;IK:ccr&amp;IK:are&amp;F:cin&amp;IK:cst&amp;IK:cre&amp;F:ere&amp;F:vgr&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./ 
+      ---- :sma&amp;F:mcr&amp;F:bre&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./msu/ 
+      ---- </span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./msu/12679c3ed543a37msul1 
+      ---- :opa&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cst&amp;IK:cin&amp;IK:ere&amp;F:vgr&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./ 
+      ---- :sma&amp;F:mcr&amp;F:gan&amp;F:bre&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/ 
+      ---- :mau&amp;F:cca&amp;IK:cad&amp;UIK:ccc&amp;U:cst&amp;UIK:cdg&amp;UIK:are&amp;F:cli&amp;UIK:cta&amp;UIK:cep&amp;UIK:ccr&amp;UIK:bre&amp;F:cau&amp;U:cre&amp;F:cin&amp;UIK:ere&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a16msul1 
+      ---- :opa&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cst&amp;IK:cin&amp;IK:ere&amp;F:vgr&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a25msul1 
+      ---- :opa&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cst&amp;IK:cin&amp;IK:ere&amp;F:vgr&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a37msul1 
+      ---- :opa&amp;F:cst&amp;IK:vgr&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cin&amp;IK:ere&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/korte 
+      ---- </span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.dc./msu/./ 
+      ---- :sma&amp;F</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.dc./msu/./msu/ 
+      ---- :mau&amp;F:cad&amp;UIK:ccr&amp;UIK:cep&amp;UIK:cta&amp;UIK:cli&amp;UIK:ccc&amp;U:cau&amp;U:cst&amp;UIK:cin&amp;UIK:cdg&amp;UIK</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.au./msu/ 
+      ---- 964531839.0</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.ca./msu/korte 
+      ---- .</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a16msul1 
+      ---- 964531839.0</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a25msul1 
+      ---- 964531839.0</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a37msul1 
+      ---- 964531839.0</span></p>
+    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.dc./msu/ 
+      ---- 964531839.0</span></p>
+    <h2>&nbsp;</h2>
+    <h3><a name="_Toc421867052">Handler Reference: LON-CAPA and the 77 Web Perl 
+      Modules</a></h3>
+    <p><i>Scott Harrison, freeware volunteer, sharrison@sourceforge.net</i><span
+style='font-style:normal'> </span></p>
+    <p>LON-CAPA provides many different web services for coordinating online educational 
+      interactions. Currently, these web services are made available by 77 different 
+      perl modules. The invocation of these perl modules is many times due to 
+      the URI format based on entries inside <tt><span style='font-family:
+"Courier New"'>/etc/httpd/conf/loncapa_apache.conf</span></tt>. </p>
+    <p>Throughout this technical manual, various web perl modules are described 
+      in detail. Here is a summary of all the 77 web perl modules: </p>
+    <table border=1 cellpadding=0>
+      <tr> 
+        <td class="Normal"> 
+          <p align=center style='text-align:center'><b>Name/Location</b></p>
+        </td>
+        <td class="Normal"> 
+          <p align=center style='text-align:center'><b>Description</b></p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: rat/lonwrapper.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonwrapper.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Wrapper for external and binary files as standalone resources. Edit 
+            handler for rat maps; TeX content handler.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/publisher/loncfile.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/loncfile.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Provides web-based functionality for file copy, rename, mkdir, etc, 
+            in the construction space menu.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonstatistics.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonstatistics.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler to show statistics on solving LON-CAPA problems.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/publisher/londiff.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/londiff.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler to show difference between two files.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/publisher/lonupload.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonupload.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler to upload files through browser into construction space.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/essayresponse.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/essayresponse.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler to evaluate essay (ungraded) style responses.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/externalresponse.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/externalresponse.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler to evaluate externally graded responses.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/loncapagrade.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/loncapagrade.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler to evaluate externally graded responses.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/publisher/lonpubdir.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonpubdir.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler to publish directories.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/publisher/lonretrieve.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonretrieve.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler to retrieve old versions from resource space.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/edit.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/edit.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Helper functions when in homework edit mode.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonmeta.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonmeta.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Metadata display handler.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: rat/lonambiguous.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonambiguous.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler to resolve ambiguous file locations.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: rat/lonratparms.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonratparms.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler to set resource parameters inside of the RAT based on metadata.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: rat/lonsequence.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonsequence.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler for showing sequence objects of educational resources.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/loncreatecourse.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/loncreatecourse.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Allows domain coordinators to create new courses and assign course 
+            coordinators.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/loncreateuser.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/loncreateuser.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Allows users to within their own privileges create/edit users and 
+            give them roles.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonchart.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonchart.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Produces simple LectureOnline-like student assessment performance 
+            chart</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/loncommon.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/loncommon.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Makes a table out of the previous attempts. Inputs result_from_symbread, 
+            user, domain, home_server, course_id.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/grades.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/grades.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handles the viewing of grades.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/imageresponse.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/imageresponse.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Coordinates the response to clicking an image.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/optionresponse.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/optionresponse.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handles tags associated with showing a list of options.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/outputtags.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/outputtags.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handles tags associated with output. Seems to relate to due dates 
+            of the assignment.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lontest.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lontest.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Used for debugging and testing the LON-CAPA system.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/radiobuttonresponse.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/radiobuttonresponse.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handles multiple-choice style responses.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonassignments.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonassignments.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handles processing of assignments.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/loncommunicate.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/loncommunicate.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Will be the access handler to email sending, as well as the planned 
+            chatrooms, etc.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonerrorhandler.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonerrorhandler.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handles errors.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonevaluate.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonevaluate.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handles evaluation.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonfeedback.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonfeedback.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handles feedback from students to instructors and system administrators. 
+            Provides a screenshot of the current resource, as well as previous 
+            attempts if the resource was a homework. Used by lonmsg.pm.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonnavmaps.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonnavmaps.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handles navigational maps.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonpreferences.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonpreferences.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handles user preferences associated with customizing the online LON-CAPA 
+            educational environment.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonprintout.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonprintout.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handles the production of printable files and resources.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonsearchcat.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonsearchcat.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handles a searchable catalogue.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/londropadd.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/londropadd.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Allows course coordinators to upload courselists in different formats, 
+            and automatically create users (if they do not exist already), assign 
+            them the role of student in a course, and add them to the classlist.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonmsg.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonmsg.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>lonmsg.pm has several functions to send and receive internal messages. 
+            author_res_msg - send message to resource author. user_crit_msg - 
+            send a critical message to a user. A critical message will require 
+            acknowledgment by the recipient and the sender will be notified. user_crit_received 
+            - routine to trigger acknowledgment. statuschange - change the status 
+            of a message (read, replied, forwarded, etc). The handler also displays 
+            messages, has routines to reply, etc.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/hint.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/hint.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>This handler coordinates the delivery of hints to students working 
+            on LON-CAPA problems and assignments.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonspreadsheet.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonspreadsheet.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Spreadsheets are completely web-based. They exist on the level of 
+            a whole course, a student, and individual assessments.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonparmset.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonparmset.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler to resolve ambiguous file locations</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/publisher/lonconstruct.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonconstruct.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Page wrapper for handling construction space.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/publisher/lonpublisher.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonpublisher.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Publishes an LON-CAPA educational resource complete with metadata 
+            (authorship, language, copyright, creation date, etc).</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonmenu.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonmenu.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Has routines which control the remote control.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: rat/lonpageflip.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonpageflip.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Deals with forward, backward, and other page flips.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: rat/lonratedt.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonratedt.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Builds up frame set and loads in the right thing.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/html/res/adm/pages/homeworkmenu.html<br>
+            TARGET: home/httpd/html/res/adm/pages/homeworkmenu.html</p>
+        </td>
+        <td class="Normal"> 
+          <p>Homework remote control.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/html/res/adm/pages/annotator/admannotations.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/admannotations.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>This will take annotations and then plug them into a page.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/html/res/adm/pages/bookmarkmenu/admbookmarks.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/admbookmarks.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>This will take bookmarks and get/write/display them for the LON-CAPA 
+            user interface.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: rat/lonratsrv.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonratsrv.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler that takes output from RAT and stores it on disk. Handles 
+            the upper hidden frame of the added window that comes up in RAT. (3 
+            frames come up in RAT server, code, and output. This module handles 
+            server connection.)</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: rat/lonpage.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonpage.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>bundles pages into one page</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: rat/lonuserstate.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonuserstate.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>compile course into binary data structure (in loncom/rat)</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/xml/lontex.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lontex.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Handler for tex files (somewhere in modules)</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/xml/lontexconvert.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lontexconvert.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Access to tth/ttm</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/xml/lonxml.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonxml.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>XML Parsing Module</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/xml/lonplot.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonplot.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>XML-based plotter of graphs</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/xml/style.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/style.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Style Parsing Module</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/xml/londefdef.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/londefdef.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Tags Default Definition Module</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/xml/run.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/run.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>used to prevent poorly written problems from causing lingering after 
+            effects</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/xml/scripttag.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/scripttag.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>implements &lt;script&gt;, &lt;scriptlib&gt;, &lt;parserlib&gt;, 
+            and &lt;import&gt;</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/randomlabel.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/randomlabel.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Interface for producing applet code which randomizes the labelling 
+            of an image.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/lonhomework.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonhomework.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>handles requests for output, evaluation, and alteration of a homework 
+            resource</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/inputtags.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/inputtags.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>produces HTML input tags (&lt;INPUT&gt;) for rendering homework resources</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/structuretags.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/structuretags.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>produces HTML tags necessary for structuring the presentation of 
+            homework resources</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/response.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/response.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>defines different types of responses given to student as well as 
+            syntax for producing response values</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/caparesponse/caparesponse.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/caparesponse.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>handles request to the CAPA homework processing engine</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/xml/Safe.pm<br>
+            TARGET: home/httpd/lib/perl/Safe.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Meant to safely substitute for CPAN version of Safe. Allows for safely 
+            executing embedded perl comands in a way that does not threaten the 
+            operating system.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/auth/localauth.pm<br>
+            TARGET: home/httpd/lib/perl/localauth.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Local authentication mechanism (meant to be customized).</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/auth/lonacc.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonacc.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>(This module, like loncacc.pm also authenticates with cookies.) lonacc.pm 
+            coordinates access to a wide range of administrative-type functions 
+            (e.g. roles, logout, annotations, and bookmarks) as well as coordinating 
+            access to educational resources.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/auth/lonracc.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonracc.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>access handler for file transfers</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/auth/loncacc.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/loncacc.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>This module provides access to an educational resource construction 
+            area. This module is invoked by the URL-related pattern syntax LocationMatch 
+            &quot;^/priv.*&quot; or LocationMatch &quot;^/\~.*&quot;. Authentication 
+            of user identity is coordinated through cookies. The abbreviation 
+            &quot;cacc&quot; corresponds to &quot;construction-space access&quot;). 
+            If the cookie handle is invalid, then this module returns a forbidden 
+            status and makes appropriate log entries. If the cookie handle is 
+            valid, status is determined to be okay (and, for the &quot;priv&quot;-type 
+            access, the resource is delivered by the lonconstruct module).</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/auth/lonauth.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonauth.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>authenticate, set up session environment</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/auth/lonlogin.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonlogin.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>login screen</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/auth/lonlogout.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonlogout.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>logout</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/lonnet/perl/lonrep.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonrep.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>replication</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/auth/lonroles.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonroles.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>This perl handling module reads in the available roles available 
+            for a LON-CAPA user (different courses, different privileges, etc) 
+            and produces a form-element HTML page which allows the user to select 
+            which role he wishes to exercise in the LON-CAPA system. For instance, 
+            a user may want to select between being a student in a thermodynamics 
+            physics course or a teaching assistant for an introductory calculus 
+            class.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/lonindexer.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonindexer.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>cross server filesystem browser</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/interface/groupsort.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/groupsort.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Implements a second phase of importing multiple resources into the 
+            RAT. Allows for reordering the sequence of resources.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/lonnet/perl/lonnet.pm<br>
+            TARGET: home/httpd/lib/perl/Apache/lonnet.pm</p>
+        </td>
+        <td class="Normal"> 
+          <p>This file is an interface to the lonc processes of the LON-CAPA network 
+            as well as set of elaborated functions for handling information necessary 
+            for navigating through a given cluster of LON-CAPA machines within 
+            a domain. There are over 40 specialized functions in this module which 
+            handle the reading and transmission of metadata, user information 
+            (ids, names, environments, roles, logs), file information (storage, 
+            reading, directories, extensions, replication, embedded styles and 
+            descriptors), educational resources (course descriptions, section 
+            names and numbers), url hashing (to assign roles on a url basis), 
+            and translating abbreviated symbols to and from more descriptive phrases 
+            or explanations.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/lectureonline.lcpm<br>
+            TARGET: home/httpd/html/res/adm/includes/lectureonline.lcpm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Intended for providing perl functions for the &lt;script&gt;&lt;/script&gt; 
+            environment in a problem that was converted from lectureonline.</p>
+        </td>
+      </tr>
+      <tr> 
+        <td class="Normal"> 
+          <p>SOURCE: loncom/homework/default_homework.lcpm<br>
+            TARGET: home/httpd/html/res/adm/includes/default_homework.lcpm</p>
+        </td>
+        <td class="Normal"> 
+          <p>Provides many functions for the &lt;script&gt; environment in a .problem. 
+            Functions are documented in CVS:loncapa/doc/homework/homework5.html.</p>
+        </td>
+      </tr>
+    </table>
+  </div>
+</div>
+</body>
+</html>

--bowersj21058885220--