[LON-CAPA-cvs] cvs: doc /gutshtml Configuration DifferentTypesofLON.html FastInstallation.html Glossary HardwarespecificationforLON.html LON 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 handout.htm /gutshtml/SessionFou1_files filelist.xml image001.png image002.jpg image003.gif image004.pct image005.png /gutshtml/SessionOn2_files filelist.xml image001.gif image002.pct image003.png /gutshtml/SessionOne_files filelist.xml image001.jpg image002.jpg image003.jpg image004.jpg image005.jpg image006.jpg image007.jpg image008.jpg image009.jpg image010.jpg image011.jpg image012.png image013.jpg /gutshtml/SessionTw1_files filelist.xml image001.gif image002.pct image003.png image004.jpg image005.jpg image006.jpg image007.jpg image008.jpg image009.jpg image010.jpg image011.jpg image012.png image013.jpg image014.png image015.jpg image016.png image017.jpg /gutshtml/SessionTw2_files filelist.xml image001.gif image002.wmf image003.png image004.gif image005.wmf image006.png image007.gif image008.wmf image009.png image010.gif image011.wmf image012.png image013.gif image014.wmf image015.png image016.gif image017.wmf image018.png image019.gif image020.wmf image021.png image022.gif image023.wmf image024.png image025.gif image026.wmf image027.png image028.gif image029.wmf image030.png image031.gif image032.wmf image033.png image034.gif image035.wmf image036.png image037.gif image038.wmf image039.png image040.gif image041.wmf image042.png image043.gif image044.wmf image045.png image046.gif image047.wmf image048.png image049.gif image050.wmf image051.png image052.gif image053.wmf image054.png image055.gif image056.wmf image057.png image058.gif image059.wmf image060.png image061.gif image062.wmf image063.png image064.gif image065.wmf image066.png image067.gif image068.wmf image069.png image070.gif image071.wmf image072.png image073.gif

www lon-capa-cvs@mail.lon-capa.org
Fri, 28 Jun 2002 20:30:30 -0000


This is a MIME encoded message

--www1025296230
Content-Type: text/plain

www		Fri Jun 28 16:30:30 2002 EDT

  Added files:                 
    /doc/gutshtml	Configuration DifferentTypesofLON.html 
                 	FastInstallation.html Glossary 
                 	HardwarespecificationforLON.html LON 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 handout.htm 
    /doc/gutshtml/SessionFou1_files	filelist.xml image001.png 
                                   	image002.jpg image003.gif 
                                   	image004.pct image005.png 
    /doc/gutshtml/SessionOn2_files	filelist.xml image001.gif 
                                  	image002.pct image003.png 
    /doc/gutshtml/SessionOne_files	filelist.xml image001.jpg 
                                  	image002.jpg image003.jpg 
                                  	image004.jpg image005.jpg 
                                  	image006.jpg image007.jpg 
                                  	image008.jpg image009.jpg 
                                  	image010.jpg image011.jpg 
                                  	image012.png image013.jpg 
    /doc/gutshtml/SessionTw1_files	filelist.xml image001.gif 
                                  	image002.pct image003.png 
                                  	image004.jpg image005.jpg 
                                  	image006.jpg image007.jpg 
                                  	image008.jpg image009.jpg 
                                  	image010.jpg image011.jpg 
                                  	image012.png image013.jpg 
                                  	image014.png image015.jpg 
                                  	image016.png image017.jpg 
    /doc/gutshtml/SessionTw2_files	filelist.xml image001.gif 
                                  	image002.wmf image003.png 
                                  	image004.gif image005.wmf 
                                  	image006.png image007.gif 
                                  	image008.wmf image009.png 
                                  	image010.gif image011.wmf 
                                  	image012.png image013.gif 
                                  	image014.wmf image015.png 
                                  	image016.gif image017.wmf 
                                  	image018.png image019.gif 
                                  	image020.wmf image021.png 
                                  	image022.gif image023.wmf 
                                  	image024.png image025.gif 
                                  	image026.wmf image027.png 
                                  	image028.gif image029.wmf 
                                  	image030.png image031.gif 
                                  	image032.wmf image033.png 
                                  	image034.gif image035.wmf 
                                  	image036.png image037.gif 
                                  	image038.wmf image039.png 
                                  	image040.gif image041.wmf 
                                  	image042.png image043.gif 
                                  	image044.wmf image045.png 
                                  	image046.gif image047.wmf 
                                  	image048.png image049.gif 
                                  	image050.wmf image051.png 
                                  	image052.gif image053.wmf 
                                  	image054.png image055.gif 
                                  	image056.wmf image057.png 
                                  	image058.gif image059.wmf 
                                  	image060.png image061.gif 
                                  	image062.wmf image063.png 
                                  	image064.gif image065.wmf 
                                  	image066.png image067.gif 
                                  	image068.wmf image069.png 
                                  	image070.gif image071.wmf 
                                  	image072.png image073.gif 
                                  	image074.wmf image075.png 
                                  	image076.gif image077.wmf 
                                  	image078.png image079.gif 
                                  	image080.wmf image081.png 
                                  	image082.gif image083.wmf 
                                  	image084.png image085.png 
                                  	image086.jpg image087.png 
                                  	image088.jpg image089.gif 
                                  	image090.wmf image091.png 
                                  	image092.gif image093.wmf 
                                  	image094.png image095.gif 
                                  	image096.wmf image097.png 
                                  	image098.gif image099.wmf 
                                  	image100.png image101.gif 
                                  	image102.wmf image103.png 
                                  	image104.gif image105.wmf 
                                  	image106.png image107.gif 
                                  	image108.wmf image109.png 
                                  	image110.gif image111.wmf 
                                  	image112.png image113.gif 
                                  	image114.wmf image115.png 
                                  	image116.gif image117.wmf 
                                  	image118.png image119.gif 
                                  	image120.wmf image121.png 
                                  	image122.gif image123.wmf 
                                  	image124.png image125.gif 
                                  	image126.wmf image127.png 
                                  	image128.gif image129.wmf 
                                  	image130.png image131.png 
                                  	image132.jpg image133.gif 
                                  	image134.wmf image135.png 
                                  	image136.png image137.png 
                                  	image138.png image139.png 
                                  	image140.png image141.png 
                                  	image142.png image143.png 
                                  	image144.png image145.png 
                                  	image146.png image147.png 
                                  	image148.png image149.gif 
                                  	image150.wmf image151.png 
                                  	image152.gif image153.wmf 
                                  	image154.png image155.gif 
                                  	image156.wmf image157.png 
                                  	image158.gif image159.wmf 
                                  	image160.png image161.gif 
                                  	image162.wmf image163.png 
                                  	oledata.mso 
    /doc/gutshtml/handout_files	filelist.xml image001.jpg image002.jpg 
                               	image003.jpg image004.jpg image005.png 
                               	image006.jpg image007.jpg image008.jpg 
                               	image009.jpg image010.jpg image011.jpg 
  Log:
  HTML version of GUTS manual. Individual files will still need cleanup.
  
  
--www1025296230
Content-Type: text/plain
Content-Disposition: attachment; filename="www-20020628163030.txt"


Index: doc/gutshtml/DifferentTypesofLON.html
+++ doc/gutshtml/DifferentTypesofLON.html
<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>
Index: doc/gutshtml/FastInstallation.html
+++ doc/gutshtml/FastInstallation.html
<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>
Index: doc/gutshtml/HardwarespecificationforLON.html
+++ doc/gutshtml/HardwarespecificationforLON.html
<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>
Index: doc/gutshtml/SessionFiv1.html
+++ doc/gutshtml/SessionFiv1.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
+++ doc/gutshtml/SessionFiv2.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
+++ doc/gutshtml/SessionFive.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
+++ doc/gutshtml/SessionFou1.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
+++ doc/gutshtml/SessionFou2.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
+++ doc/gutshtml/SessionFour.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
+++ doc/gutshtml/SessionOn1.html
<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 users 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 courses 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 courses 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>
Index: doc/gutshtml/SessionOn2.html
+++ doc/gutshtml/SessionOn2.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 users 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 users data directory 
    on the users 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
+++ doc/gutshtml/SessionOne.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 authors 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 servers 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
+++ doc/gutshtml/SessionThre1.html
<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 ORd 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>
Index: doc/gutshtml/SessionThre2.html
+++ doc/gutshtml/SessionThre2.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
+++ doc/gutshtml/SessionThree.html
<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>
Index: doc/gutshtml/SessionTw1.html
+++ doc/gutshtml/SessionTw1.html
<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>
Index: doc/gutshtml/SessionTw2.html
+++ doc/gutshtml/SessionTw2.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 instructors 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 URLs. For example the result of solving homeworks 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
+++ doc/gutshtml/SessionTwo.html
<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 users 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 users 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 users 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 users 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>
Index: doc/gutshtml/handout.htm
+++ doc/gutshtml/handout.htm
<html><head><meta name=Title content=" "><meta http-equiv=Content-Type content="text/html; charset=macintosh"><title> </title><style><!--.MsoToc1	{font-size:10.0pt;	font-family:Times;	text-transform:uppercase;	font-weight:bold;}.MsoToc2	{font-size:10.0pt;	font-family:Times;	font-variant:small-caps;}.MsoToc3	{font-size:10.0pt;	font-family:Times;	font-style:italic;}.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;}.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;}.H5	{font-size:10.0pt;	font-family:"Times New Roman";	layout-grid-mode:line;	font-weight:bold;}.Section1	{page:Section1;}.Section2	{page:Section2;}.Section3	{page:Section3;}.Section4	{page:Section4;}.Section5	{page:Section5;}.Section6	{page:Section6;}.Section7	{page:Section7;}.Section8	{page:Section8;}.Section9	{page:Section9;}.Section10	{page:Section10;}.Section11	{page:Section11;}.Section12	{page:Section12;}.Section13	{page:Section13;}.Section14	{page:Section14;}.Section15	{page:Section15;}.Section16	{page:Section16;}.Section17	{page:Section17;}.Section18	{page:Section18;}.Section19	{page:Section19;}.Section20	{page:Section20;}.Section21	{page:Section21;}.Section22	{page:Section22;}--></style></head><body bgcolor=#FFFFFF link=blue vlink=purple class="Normal" lang=EN-US><div class=Section1>   <h4><span style='font-size:36.0pt'>The Guts of LON-CAPA</span></h4>  <h4>Workshop</h4>  <p><span style='font-size:14.0pt'>Michigan State University</span></p>  <p><span style='font-size:14.0pt'>June 10<sup>th</sup>-12<sup>th</sup>, 2002</span></p>  <p align=center style='text-align:center'><img width=243height=332 id="_x0000_i1025" src="handout_files/image001.jpg"></p>  <p align=right style='text-align:right'>This project is funded in part by the</p>  <p align=right style='text-align:right'>National Science Foundation under ITR     0085921,</p>  <p align=right style='text-align:right'>with additional support by the</p>  <p align=right style='text-align:right'>Andrew W. Mellon and Alfred P. Sloan     foundations.</p>  <br clear=ALLstyle='page-break-before:always'>  <p><span style='font-size:18.0pt'><ahref="http://www.lon-capa.org/">http://www.lon-capa.org/</a></span></p>  <p>(517) 432-5468</p>  <p>Guy Albertelli, <a href="mailto:albertel@msu.edu">albertel@msu.edu</a></p>  <p>Gerd Kortemeyer, <a href="mailto:korte@lon-capa.org">korte@lon-capa.org</a></p>  <p>Scott Harrison, freeware volunteer, <ahref="mailto:sharrison@sourceforge.net">sharrison@sourceforge.net</a></p>  <p>Project Manager: Helen Keefe, <ahref="mailto:helen@loncapa.org">helen@loncapa.org</a></p>  <p>LON-CAPA Coordinator: Felicia Berryman, <ahref="mailto:felicia@lon-capa.org">felicia@lon-capa.org</a></p>  <p>Installation site: <a href="http://install.lon-capa.org/">http://install.lon-capa.org/</a></p>  <p>Mailing lists: <a href="http://mail.lon-capa.org/">http://mail.lon-capa.org/</a></p>  <p>User help: <a href="http://help.lon-capa.org/">http://help.lon-capa.org/</a></p>  <p>Bugs and enhancements: <a href="http://bugs.lon-capa.org/">http://bugs.lon-capa.org/</a></p>  <span style='font-size:14.0pt;font-family:"Times New Roman"'><br clear=ALLstyle='page-break-before:always'>  </span>   <h1><a name="_Toc514840836"></a><a name="_Toc421867038">Day 1</a></h1></div><br clear=ALLstyle='page-break-before:auto'><div class=Section2><a href="Session%20One">Session One</a></div><br clear=ALLstyle='page-break-before:auto'><div class=Section3><a href="Session%20Two">Session Two</a>   <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'><p style='border:none;padding:0in'><br clear=ALLstyle='page-break-before:auto'>    </p>  </div></div><div class=Section4><a href="Session%20Three">Session Three</a> </div><br clear=ALLstyle='page-break-before:auto'><div class=Section5><a href="Session%20Four">Session Four</a></div><br clear=ALLstyle='page-break-before:auto'><div class=Section6><a href="Session%20Five">Session Five</a><span style='font-size:14.0pt;font-family:"Times New Roman"'><brclear=ALL style='page-break-before:always'>  </span>   <h1><a name="_Toc421867082">Day 2</a></h1></div><br clear=ALLstyle='page-break-before:auto'><div class=Section7><a href="Session%20On1">Session On1</a> </div><div class=Section8><a href="Session%20Tw1">Session Tw1</a> <br clear=ALLstyle='page-break-before:auto'></div><div class=Section9><a href="Session%20Thre1">Session Thre1</a>   <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'> <a href="Session%20Fou1">Session     Fou1</a></div></div><p><a href="Session%20Fiv1">Session Fiv1</a></p><p><span style='font-size:14.0pt;font-family:"Times New Roman"'><brclear=ALL style='page-break-before:always'>  </span> </p><div class=Section11><h1><a name="_Toc421867125">Day 3</a></h1></div><br clear=ALLstyle='page-break-before:auto'><div class=Section12><a href="Session%20On2">Session On2</a> <br clear=ALLstyle='page-break-before:auto'></div><div class=Section13><a href="Session%20Tw2">Session Tw2</a> <br clear=ALLstyle='page-break-before:auto'></div><div class=Section14><a href="Session%20Thre2">Session Thre2</a></div><br clear=ALLstyle='page-break-before:auto'><div class=Section15><a href="Session%20Fou2">Session Fou2</a></div><br clear=ALLstyle='page-break-before:auto'><div class=Section16>  <p><a href="Session%20Fiv2">Session Fiv2</a> </p>  <p><br clear=ALLstyle='page-break-before:auto'>  </p></div><div class=Section17><a href="Different%20Types%20of%20LON">Different Types of   LON</a></div><br clear=ALLstyle='page-break-before:auto'><div class=Section18><a href="Hardware%20specification%20for%20LON">Hardware specification   for LON</a></div><br clear=ALLstyle='page-break-before:auto'><div class=Section19><a href=LON>LON</a></div><br clear=ALLstyle='page-break-before:auto'><div class=Section20><a href=Configuration>Configuration</a></div><br clear=ALLstyle='page-break-before:auto'><div class=Section21><a href="Fast%20Installation">Fast Installation</a></div><br clear=ALLstyle='page-break-before:auto'><div class=Section22><a href=Glossary>Glossary</a> </div></body></html>
Index: doc/gutshtml/SessionFou1_files/filelist.xml
+++ doc/gutshtml/SessionFou1_files/filelist.xml
<xml xmlns:o="urn:schemas-microsoft-com:office:office"> <o:MainFile HRef="::Session Fou1"/> <o:File HRef="image001.png"/> <o:File HRef="image002.jpg"/> <o:File HRef="image003.gif"/> <o:File HRef="image004.pct"/> <o:File HRef="image005.png"/> <o:File HRef="filelist.xml"/></xml>
Index: doc/gutshtml/SessionFou1_files/image004.pct
+++ doc/gutshtml/SessionFou1_files/image004.pct
 u t : g u t s : g u t s h t m l : S e s s i o n   F o u 1 _ f i l e s : i m a g e 0 0 4 . p c t  пK    _ M|            M|Mx          ^K_     E  C e    MPM|Mx          ^M0E wk]L _  k             @       MM|<   vT              $    .          ^       	        .   R.MR.   L    !q            Lj    0     L1  1     LM!   R.P$     	L_ Ԩ        P$^      	    'H         H   H             
          #      /Access_Softek_context save def/dict_count countdictstack def/op_count count 1 sub def/cxy [ currentpoint ] def66 dict begin/showpage {} def0 setgray 0 setlinecap1 setlinewidth 0 setlinejoin10 setmiterlimit [] 0 setdash/languagelevel where{pop languagelevel1 ne {false setstrokeadjust false  setoverprint  } if } if 0 792 translate 1 -1 scale cxy 0 get 792 cxy 1 get sub translate   "       q/exy [ currentpoint ] defexy 0 get cxy 0 get sub 682 div exy 1 get cxy 1 get sub 384 div scale0 -384 translate    "         2     .      *Title: xmlparse.eps *+Creator: fig2dev Version 3.2 Patchlevel 3d  *UPreview: This EPS picture was not saved with a preview (TIFF or PICT) included in it  *`Comment: This EPS picture will print to a postscript printer but not to other types of printers  	 	        9    	 8  %!PS-Adobe-2.0 EPSF-2.0
%%Title: xmlparse.eps
%%Creator: fig2dev Version 3.2 Patchlevel 3d
%%CreationDate: Wed Jun  5 19:58:38 2002
%%For: albertel@annarbor.albertelli.com ()
%%BoundingBox: 0 0 682 384
%%Magnification: 1.0000
%%EndComments
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/col-1 {0 setgray} bind def
/col0 {0.000 0.000 0.000 srgb} bind def
/col1 {0.000 0.000 1.000 srgb} bind def
/col2 {0.000 1.000 0.000 srgb} bind def
/col3 {0.000 1.000 1.000 srgb} bind def
/col4 {1.000 0.000 0.000 srgb} bind def
/col5 {1.000 0.000 1.000 srgb} bind def
/col6 {1.000 1.000 0.000 srgb} bind def
/col7 {1.000 1.000 1.000 srgb} bind def
/col8 {0.000 0.000 0.560 srgb} bind def
/col9 {0.000 0.000 0.690 srgb} bind def
/col10 {0.000 0.000 0.820 srgb} bind def
/col11 {0.530 0.810 1.000 srgb} bind def
/col12 {0.000 0.560 0.000 srgb} bind def
/col13 {0.000 0.690 0.000 srgb} bind def
/col14 {0.000 0.820 0.000 srgb} bind def
/col15 {0.000 0.560 0.560 srgb} bind def
/col16 {0.000 0.690 0.690 srgb} bind def
/col17 {0.000 0.820 0.820 srgb} bind def
/col18 {0.560 0.000 0.000 srgb} bind def
/col19 {0.690 0.000 0.000 srgb} bind def
/col20 {0.820 0.000 0.000 srgb} bind def
/col21 {0.560 0.000 0.560 srgb} bind def
/col22 {0.690 0.000 0.690 srgb} bind def
/col23 {0.820 0.000 0.820 srgb} bind def
/col24 {0.500 0.190 0.000 srgb} bind def
/col25 {0.630 0.250 0.000 srgb} bind def
/col26 {0.750 0.380 0.000 srgb} bind def
/col27 {1.000 0.500 0.500 srgb} bind def
/col28 {1.000 0.630 0.630 srgb} bind def
/col29 {1.000 0.750 0.750 srgb} bind def
/col30 {1.000 0.880 0.880 srgb} bind def
/col31 {1.000 0.840 0.000 srgb} bind def

end
save
newpath 0 384 moveto 0 0 lineto 682 0 lineto 682 384 lineto closepath clip newpath
-13.4 389.1 translate
1 -1 scale

/cp {closepath} bind def
/ef {eofill} bind def
/gr {grestore} bind def
/gs {gsave} bind def
/sa {save} bind def
/rs {restore} bind def
/l {lineto} bind def
/m {moveto} bind def
/rm {rmoveto} bind def
/n {newpath} bind def
/s {stroke} bind def
/sh {show} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/slw {setlinewidth} bind def
/srgb {setrgbcolor} bind def
/rot {rotate} bind def
/sc {scale} bind def
/sd {setdash} bind def
/ff {findfont} bind def
/sf {setfont} bind def
/scf {scalefont} bind def
/sw {stringwidth} bind def
/tr {translate} bind def
/tnt {dup dup currentrgbcolor
  4 -2 roll dup 1 exch sub 3 -1 roll mul add
  4 -2 roll dup 1 exch sub 3 -1 roll mul add
  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
  bind def
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
  4 -2 roll mul srgb} bind def
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def

$F2psBegin
10 setmiterlimit
 0.06299 0.06299 sc
%
% Fig objects follow
%
% Polyline
7.500 slw
n 10170 1215 m 11025 1215 l 11025 1620 l 10170 1620 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
10350 1485 m
gs 1 -1 sc (recurse) col0 sh gr
% Polyline
n 8370 2340 m 9135 2340 l 9135 2745 l 8370 2745 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
8505 2610 m
gs 1 -1 sc (callsub) col0 sh gr
% Polyline
n 225 360 m 990 360 l 990 810 l 225 810 l
 cp gs col0 s gr 
% Polyline
n 270 1440 m 2295 1440 l 2295 2250 l 270 2250 l
 cp gs col0 s gr 
% Polyline
n 2745 1665 m 4140 1665 l 4140 2070 l 2745 2070 l
 cp gs col0 s gr 
% Polyline
n 5130 1440 m 4680 1890 l 5130 2340 l 5580 1890 l
 cp gs col0 s gr 
% Polyline
n 6120 1665 m 7380 1665 l 7380 2160 l 6120 2160 l
 cp gs col0 s gr 
% Polyline
n 8752 1012 m 8302 1462 l 8752 1912 l 9202 1462 l
 cp gs col0 s gr 
% Polyline
n 5985 3060 m 7425 3060 l 7425 3465 l 5985 3465 l
 cp gs col0 s gr 
% Polyline
n 8100 4095 m 9270 4095 l 9270 4590 l 8100 4590 l
 cp gs col0 s gr 
% Polyline
n 6817 3937 m 6367 4387 l 6817 4837 l 7267 4387 l
 cp gs col0 s gr 
% Polyline
gs  clippath
555 1455 m 615 1455 l 615 1303 l 585 1423 l 555 1303 l cp
eoclip
n 585 810 m
 585 1440 l gs col0 s gr gr

% arrowhead
n 555 1303 m 585 1423 l 615 1303 l  col0 s
% Polyline
gs  clippath
2760 1875 m 2760 1815 l 2608 181  5 l 2728 1845 l 2608 1875 l cp
eoclip
n 2295 1845 m
 2745 1845 l gs col0 s gr gr

% arrowhead
n 2608 1875 m 2728 1845 l 2608 1815 l  col0 s
% Polyline
gs  clippath
4695 1920 m 4695 1860 l 4543 1860 l 4663 1890 l 4543 1920 l cp
eoclip
n 4185 1890 m
 4680 1890 l gs col0 s gr gr

% arrowhead
n 4543 1920 m 4663 1890 l 4543 1860 l  col0 s
% Polyline
gs  clippath
5415 1065 m 5415 1005 l 5263 1005 l 5383 1035 l 5263 1065 l cp
eoclip
n 5130 1440 m 5130 1035 l
 5400 1035 l gs col0 s gr gr

% arrowhead
n 5263 1065 m 5383 1035 l 5263 1005 l  col0 s
% Polyline
gs  clippath
6135 1920 m 6135 1860 l 5983 1860 l 6103 1890 l 5983 1920 l cp
eoclip
n 5580 1890 m
 6120 1890 l gs col0 s gr gr

% arrowhead
n 5983 1920 m 6103 1890 l 5983 1860 l  col0 s
% Polyline
gs  clippath
6000 3270 m 6000 3210 l 5848 3210 l 5968 3240 l 5848 3270 l cp
eoclip
n 5130 2340 m 5130 3240 l
 5985 3240 l gs col0 s gr gr

% arrowhead
n 5848 3270 m 5968 3240 l 5848 3210 l  col0 s
% Polyline
gs  clippath
8295 1470 m 8295 1410 l 8143 1410 l 8263 1440 l 8143 1470 l cp
eoclip
n 7380 1935 m 7830 1935 l 7830 1440 l
 8280 1440 l gs col0 s gr gr

% arrowhead
n 8143 1470 m 8263 1440 l 8143 1410 l  col0 s
% Polyline
n 6570 945 m 7830 945 l
 7830 1440 l gs col0 s gr 
% Polyline
gs  clippath
10185 1470 m 10185 1410 l 10033 1410 l 10153 1440 l 10033 1470 l cp
eoclip
n 9180 1440 m
 10170 1440 l gs col0 s gr gr

% arrowhead
n 10033 1470 m 10153 1440 l 10033 1410 l  col0 s
% Polyline
gs  clippath
8700 2400 m 8760 2400 l 8760 2248 l 8730 2368 l 8700 2248 l cp
eoclip
n 8730 1935 m
 8730 2385 l gs col0 s gr gr

% arrowhead
n 8700 2248 m 8730 2368 l 8760 2248 l  col0 s
% Polyline
gs  clippath
7410 3165 m 7410 3225 l 7562 3225 l 7442 3195 l 7562 3165 l cp
eoclip
n 8730 2745 m 8730 3195 l
 7425 3195 l gs col0 s gr gr

% arrowhead
n 7562 3165 m 7442 3195 l 7562 3225 l  col0 s
% Polyline
n 10620 1620 m 10620 3195 l
 8730 3195 l gs col0 s gr 
% Polyline
gs  clippath
6765 3975 m 6825 3975 l 6825 3823 l 6795 3943 l 6765 3823 l cp
eoclip
n 6795 3465 m
 6795 3960 l gs col0 s gr gr

% arrowhead
n 6765 3823 m 6795 3943 l 6825 3823 l  col0 s
% Polyline
gs  clippath
8115 4395 m 8115 4335 l 7963 4335 l 8083 4365 l 7963 4395 l cp
eoclip
n 7245 4365 m
 8100 4365 l gs col0 s gr gr

% arrowhead
n 7963 4395 m 8083 4365 l 7963 4335 l  col0 s
% Polyline
gs  clippath
6765 5415 m 6825 5415 l 6825 5263 l 6795 5383 l 6765 5263 l cp
eoclip
n 6795 4815 m
 6795 5400 l gs col0 s gr gr

% arrowhead
n 6765 5263 m 6795 5383 l 6825 5263 l  col0 s
% Polyline
gs  clippath
4665 1875 m 4605 1875 l 4605 2027 l 4635 1907 l 4665 2027 l cp
eoclip
n 6750 5895 m 6750 6165 l 4635 6165 l
 4635 1890 l gs col0 s gr gr

% arrowhead
n 4665 2027 m 4635 1907 l 4605 2027 l  col0 s
% Polyline
n 8685 4590 m 8685 6165 l
 6750 6165 l gs col0 s gr 
% Polyline
n 6120 5400 m 7560 5400 l 7560 5895 l 6120 5895 l
 cp gs col0 s gr 
% Polyline
n 5400 675 m 6570 675 l 6570 1215 l 5400 1215 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
315 630 m
gs 1 -1 sc (Start) col0 sh gr
/Times-Roman ff 180.00 scf sf
405 1710 m
gs 1 -1 sc (Setup globals) col0 sh gr
/Times-Roman ff 180.00 scf sf
405 1920 m
gs 1 -1 sc (Initialize Safe Space) col0 sh gr
/Times-Roman ff 180.00 scf sf
405 2130 m
gs 1 -1 sc (Initialize Tag Arguments) col0 sh gr
/Times-Roman ff 180.00 scf sf
2835 1935 m
gs 1 -1 sc (For Each Parser) col0 sh gr
/Times-Roman ff 180.00 scf sf
4815 1935 m
gs 1 -1 sc (get_token) col0 sh gr
/Times-Roman ff 180.00 scf sf
5490 900 m
gs 1 -1 sc (Pop argument) col0 sh gr
/Times-Roman ff 180.00 scf sf
5490 1110 m
gs 1 -1 sc (Stacks) col0 sh gr
/Times-Roman ff 180.00 scf sf
6210 1890 m
gs 1 -1 sc (Push Argument) col0 sh gr
/Times-Roman ff 180.00 scf sf
6210 2100 m
gs 1 -1 sc (Stacks) col0 sh gr
/Times-Roman ff 180.00 scf sf
8550 1305 m
gs 1 -1 sc (Style) col0 sh gr
/Times-Roman ff 180.00 scf sf
8415 1530 m
gs 1 -1 sc (Definition) col0 sh gr
/Times-Roman ff 180.00 scf sf
270 225 m
gs 1 -1 sc (LONXML) col0 sh gr
/Times-Roman ff 180.00 scf sf
6075 3330 m
gs 1 -1 sc (Expand Variables) col0 sh gr
/Times-Roman ff 180.00 s  vcf sf
8235 4275 m
gs 1 -1 sc (Put result ) col0 sh gr
/Times-Roman ff 180.00 scf sf
8235 4485 m
gs 1 -1 sc (in outputstack) col0 sh gr
/Times-Roman ff 180.00 scf sf
6255 5835 m
gs 1 -1 sc (return value) col0 sh gr
/Times-Roman ff 180.00 scf sf
6255 5625 m
gs 1 -1 sc (Save to xmlparse) col0 sh gr
/Times-Roman ff 165.00 scf sf
6435 4410 m
gs 1 -1 sc (Redirection) col0 sh gr
/Times-Roman ff 180.00 scf sf
7425 4365 m
gs 1 -1 sc (Yes) col0 sh gr
/Times-Roman ff 180.00 scf sf
6435 5085 m
gs 1 -1 sc (No) col0 sh gr
/Times-Roman ff 180.00 scf sf
9405 1395 m
gs 1 -1 sc (Yes) col0 sh gr
/Times-Roman ff 180.00 scf sf
8775 2160 m
gs 1 -1 sc (No) col0 sh gr
/Times-Roman ff 180.00 scf sf
4590 1350 m
gs 1 -1 sc (End Tag) col0 sh gr
/Times-Roman ff 180.00 scf sf
5220 2745 m
gs 1 -1 sc (Text) col0 sh gr
/Times-Roman ff 180.00 scf sf
5400 1710 m
gs 1 -1 sc (Start Tag) col0 sh gr
$F2psEnd
rs
   icount op_count sub {pop} repeatcountdictstack dict_count sub {end} repeatAccess_Softek_context restore    
Index: doc/gutshtml/SessionOn2_files/filelist.xml
+++ doc/gutshtml/SessionOn2_files/filelist.xml
<xml xmlns:o="urn:schemas-microsoft-com:office:office"> <o:MainFile HRef="::Session On2"/> <o:File HRef="image001.gif"/> <o:File HRef="image002.pct"/> <o:File HRef="image003.png"/> <o:File HRef="filelist.xml"/></xml>
Index: doc/gutshtml/SessionOn2_files/image002.pct
+++ doc/gutshtml/SessionOn2_files/image002.pct
 u t : g u t s : g u t s h t m l : S e s s i o n   O n 2 _ f i l e s : i m a g e 0 0 2 . p c t  пK    _ M|            M|Mx          ^K_     E  a e    M&ԿM|Mx          ^M0 wk   L   /    .          ^      	        .   &  /    .          ^      	        .   R.MR.   L    !q            ؀j    0     L1  ^   LM!    R.P$     	L_ Ԩ        P$^      	    +(         H   H             
          #      /Access_Softek_context save def/dict_count countdictstack def/op_count count 1 sub def/cxy [ currentpoint ] def66 dict begin/showpage {} def0 setgray 0 setlinecap1 setlinewidth 0 setlinejoin10 setmiterlimit [] 0 setdash/languagelevel where{pop languagelevel1 ne {false setstrokeadjust false  setoverprint  } if } if 0 792 translate 1 -1 scale cxy 0 get 792 cxy 1 get sub translate   "       q/exy [ currentpoint ] defexy 0 get cxy 0 get sub 492 div exy 1 get cxy 1 get sub 421 div scale0 -421 translate    "         2     .      *Title: lonhomework.eps  *+Creator: fig2dev Version 3.2 Patchlevel 3d  *OPreview: This EPS picture was not saved with a preview (TIFF or PICT) included   *in it *NComment: This EPS picture will print to a postscript printer but not to other  *types of printers  	 	        9    	 8  %!PS-Adobe-2.0 EPSF-2.0
%%Title: lonhomework.eps
%%Creator: fig2dev Version 3.2 Patchlevel 3d
%%CreationDate: Wed Jun  5 20:26:03 2002
%%For: albertel@annarbor.albertelli.com ()
%%BoundingBox: 0 0 492 421
%%Magnification: 1.0000
%%EndComments
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/col-1 {0 setgray} bind def
/col0 {0.000 0.000 0.000 srgb} bind def
/col1 {0.000 0.000 1.000 srgb} bind def
/col2 {0.000 1.000 0.000 srgb} bind def
/col3 {0.000 1.000 1.000 srgb} bind def
/col4 {1.000 0.000 0.000 srgb} bind def
/col5 {1.000 0.000 1.000 srgb} bind def
/col6 {1.000 1.000 0.000 srgb} bind def
/col7 {1.000 1.000 1.000 srgb} bind def
/col8 {0.000 0.000 0.560 srgb} bind def
/col9 {0.000 0.000 0.690 srgb} bind def
/col10 {0.000 0.000 0.820 srgb} bind def
/col11 {0.530 0.810 1.000 srgb} bind def
/col12 {0.000 0.560 0.000 srgb} bind def
/col13 {0.000 0.690 0.000 srgb} bind def
/col14 {0.000 0.820 0.000 srgb} bind def
/col15 {0.000 0.560 0.560 srgb} bind def
/col16 {0.000 0.690 0.690 srgb} bind def
/col17 {0.000 0.820 0.820 srgb} bind def
/col18 {0.560 0.000 0.000 srgb} bind def
/col19 {0.690 0.000 0.000 srgb} bind def
/col20 {0.820 0.000 0.000 srgb} bind def
/col21 {0.560 0.000 0.560 srgb} bind def
/col22 {0.690 0.000 0.690 srgb} bind def
/col23 {0.820 0.000 0.820 srgb} bind def
/col24 {0.500 0.190 0.000 srgb} bind def
/col25 {0.630 0.250 0.000 srgb} bind def
/col26 {0.750 0.380 0.000 srgb} bind def
/col27 {1.000 0.500 0.500 srgb} bind def
/col28 {1.000 0.630 0.630 srgb} bind def
/col29 {1.000 0.750 0.750 srgb} bind def
/col30 {1.000 0.880 0.880 srgb} bind def
/col31 {1.000 0.840 0.000 srgb} bind def

end
save
newpath 0 421 moveto 0 0 lineto 492 0 lineto 492 421 lineto closepath clip newpath
-47.4 464.8 translate
1 -1 scale

/cp {closepath} bind def
/ef {eofill} bind def
/gr {grestore} bind def
/gs {gsave} bind def
/sa {save} bind def
/rs {restore} bind def
/l {lineto} bind def
/m {moveto} bind def
/rm {rmoveto} bind def
/n {newpath} bind def
/s {stroke} bind def
/sh {show} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/slw {setlinewidth} bind def
/srgb {setrgbcolor} bind def
/rot {rotate} bind def
/sc {scale} bind def
/sd {setdash} bind def
/ff {findfont} bind def
/sf {setfont} bind def
/scf {scalefont} bind def
/sw {stringwidth} bind def
/tr {translate} bind def
/tnt {dup dup currentrgbcolor
  4 -2 roll dup 1 exch sub 3 -1 roll mul add
  4 -2 roll dup 1 exch sub 3 -1 roll mul add
  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
  bind def
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
  4 -2 roll mul srgb} bind def
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def

$F2psBegin
10 setmiterlimit
 0.06299 0.06299 sc
%
% Fig objects follow
%
% Polyline
7.500 slw
n 990 1755 m 1935 1755 l 1935 2340 l 990 2340 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
1035 2025 m
gs 1 -1 sc (Problem) col0 sh gr
/Times-Roman ff 180.00 scf sf
1035 2235 m
gs 1 -1 sc (Request) col0 sh gr
% Polyline
n 2700 1755 m 3555 1755 l 3555 2340 l 2700 2340 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
2790 1980 m
gs 1 -1 sc (Decide) col0 sh gr
/Times-Roman ff 180.00 scf sf
2790 2205 m
gs 1 -1 sc (Targets) col0 sh gr
% Polyline
n 900 720 m 1890 720 l 1890 1305 l 900 1305 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
1035 990 m
gs 1 -1 sc (Start) col0 sh gr
% Polyline
n 4350 1740 m 5340 1740 l 5340 2280 l 4350 2280 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
4575 1965 m
gs 1 -1 sc (Call ) col0 sh gr
/Times-Roman ff 180.00 scf sf
4575 2175 m
gs 1 -1 sc (xmlparse) col0 sh gr
% Polyline
n 6165 1800 m 7110 1800 l 7110 2295 l 6165 2295 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
6345 1980 m
gs 1 -1 sc (Restore) col0 sh gr
/Times-Roman ff 180.00 scf sf
6345 2190 m
gs 1 -1 sc (Data) col0 sh gr
% Polyline
gs  clippath
6585 2670 m 6645 2670 l 6645 2518 l 6615 2638 l 6585 2518 l cp
eoclip
n 6615 2295 m
 6615 2655 l gs col0 s gr gr

% arrowhead
n 6585 2518 m 6615 2638 l 6645 2518 l  col0 s
% Polyl  ine
n 6165 2655 m 7335 2655 l 7335 3150 l 6165 3150 l
 cp gs col0 s gr 
% Polyline
n 7470 3915 m 6165 3915 l 6165 3420 l 7470 3420 l
 cp gs col0 s gr 
% Polyline
gs  clippath
6585 3435 m 6645 3435 l 6645 3283 l 6615 3403 l 6585 3283 l cp
eoclip
n 6615 3150 m
 6615 3420 l gs col0 s gr gr

% arrowhead
n 6585 3283 m 6615 3403 l 6645 3283 l  col0 s
% Polyline
n 5850 1395 m 7650 1395 l 7650 4050 l 5850 4050 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
6030 1620 m
gs 1 -1 sc (<problem>) col0 sh gr
/Times-Roman ff 180.00 scf sf
6255 2925 m
gs 1 -1 sc (Setup globals) col0 sh gr
/Times-Roman ff 180.00 scf sf
6300 3735 m
gs 1 -1 sc (Check Access) col0 sh gr
% Polyline
n 7575 4620 m 7125 5070 l 7575 5520 l 8025 5070 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
7350 5115 m
gs 1 -1 sc (Target) col0 sh gr
% Polyline
n 7035 6315 m 8115 6315 l 8115 6855 l 7035 6855 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
7125 6540 m
gs 1 -1 sc (Save results) col0 sh gr
/Times-Roman ff 180.00 scf sf
7125 6750 m
gs 1 -1 sc (hash) col0 sh gr
% Polyline
n 8055 5040 m 8370 5040 l
 8370 7110 l gs col0 s gr 
% Polyline
gs  clippath
7575 6270 m 7635 6270 l 7635 6118 l 7605 6238 l 7575 6118 l cp
eoclip
n 7605 5535 m
 7605 6255 l gs col0 s gr gr

% arrowhead
n 7575 6118 m 7605 6238 l 7635 6118 l  col0 s
% Polyline
n 6750 4275 m 8550 4275 l 8550 7335 l 6750 7335 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
6840 4500 m
gs 1 -1 sc (</problem>) col0 sh gr
/Times-Roman ff 180.00 scf sf
7110 5850 m
gs 1 -1 sc (Grade) col0 sh gr
% Polyline
gs  clippath
7545 7080 m 7545 7140 l 7697 7140 l 7577 7110 l 7697 7080 l cp
eoclip
n 8370 7110 m
 7560 7110 l gs col0 s gr gr

% arrowhead
n 7697 7080 m 7577 7110 l 7697 7140 l  col0 s
% Polyline
n 5310 6868 m 6255 6868 l 6255 7367 l 5310 7367 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
5445 7076 m
gs 1 -1 sc (Handle) col0 sh gr
/Times-Roman ff 180.00 scf sf
5445 7270 m
gs 1 -1 sc (Result) col0 sh gr
% Polyline
n 5715 5280 m 5265 5730 l 5715 6180 l 6165 5730 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
5490 5775 m
gs 1 -1 sc (Target) col0 sh gr
% Polyline
n 3255 5490 m 4380 5490 l 4380 6030 l 3255 6030 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
3345 5715 m
gs 1 -1 sc (Send result) col0 sh gr
/Times-Roman ff 180.00 scf sf
3345 5925 m
gs 1 -1 sc (to browser) col0 sh gr
% Polyline
n 3315 4770 m 4485 4770 l 4485 5355 l 3315 5355 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
3450 5040 m
gs 1 -1 sc (Save result) col0 sh gr
/Times-Roman ff 180.00 scf sf
3450 5250 m
gs 1 -1 sc (to file) col0 sh gr
% Polyline
n 2745 2880 m 2295 3330 l 2745 3780 l 3195 3330 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
2430 3465 m
gs 1 -1 sc (Targets?) col0 sh gr
/Times-Roman ff 180.00 scf sf
2520 3285 m
gs 1 -1 sc (More) col0 sh gr
% Polyline
n 765 3060 m 1665 3060 l 1665 3600 l 765 3600 l
 cp gs col0 s gr 
/Times-Roman ff 180.00 scf sf
900 3285 m
gs 1 -1 sc (End) col0 sh gr
% Polyline
gs  clippath
1320 1815 m 1380 1815 l 1380 1663 l 1350 1783 l 1320 1663 l cp
eoclip
n 1350 1305 m
 1350 1800 l gs col0 s gr gr

% arrowhead
n 1320 1663 m 1350 1783 l 1380 1663 l  col0 s
% Polyline
gs  clippath
2715 2055 m 2715 1995 l 2563 1995 l 2683 2025 l 2563 2055 l cp
eoclip
n 1935 2025 m
 2700 2025 l gs col0 s gr gr

% arrowhead
n 2563 2055 m 2683 2025 l 2563 1995 l  col0 s
% Polyline
gs  clippath
4335 2055 m 4335 1995 l 4183 1995 l 4303 2025 l 4183 2055 l cp
eoclip
n 3555 2025 m
 4320 2025 l gs col0 s gr gr

% arrowhead
n 4183 2055 m 4303 2025 l 4183 1995 l  col0 s
% Polyline
gs  clippath
6135 2055 m 6135 1995 l 5983 1995 l 6103 2025 l 5983 2055 l cp
eoclip
n 5355 2025 m
 6120 2025 l gs col0 s gr gr

% arrowhead
n 5983 2055 m 6103 2025 l 5983 1995 l  col0 s
% Polyline
gs  clippath
7170 5115 m 7170 5055 l 7018 5055 l 7138 5085 l 7018 5115 l cp
eoclip
n 6255 3960 m 6255 5085 l
 7155 5085 l gs col0 s gr gr

% arrowhead
n 7018 5115 m 7138 5085 l 7018 5055 l  col0 s
% Polyline
gs  clippath
6285 7080 m 6285 7140 l 6437 7140 l 6317 7110 l 6437 7080 l cp
eoclip
n 7560 6885 m 7560 7110  J l
 6300 7110 l gs col0 s gr gr

% arrowhead
n 6437 7080 m 6317 7110 l 6437 7140 l  col0 s
% Polyline
gs  clippath
5745 6195 m 5685 6195 l 5685 6347 l 5715 6227 l 5745 6347 l cp
eoclip
n 5715 6885 m
 5715 6210 l gs col0 s gr gr

% arrowhead
n 5745 6347 m 5715 6227 l 5685 6347 l  col0 s
% Polyline
gs  clippath
4395 5685 m 4395 5745 l 4547 5745 l 4427 5715 l 4547 5685 l cp
eoclip
n 5265 5715 m
 4410 5715 l gs col0 s gr gr

% arrowhead
n 4547 5685 m 4427 5715 l 4547 5745 l  col0 s
% Polyline
gs  clippath
4485 5100 m 4485 5160 l 4637 5160 l 4517 5130 l 4637 5100 l cp
eoclip
n 5715 5310 m 5715 5130 l
 4500 5130 l gs col0 s gr gr

% arrowhead
n 4637 5100 m 4517 5130 l 4637 5160 l  col0 s
% Polyline
gs  clippath
2685 5010 m 2685 5070 l 2837 5070 l 2717 5040 l 2837 5010 l cp
eoclip
n 3285 5040 m
 2700 5040 l gs col0 s gr gr

% arrowhead
n 2837 5010 m 2717 5040 l 2837 5070 l  col0 s
% Polyline
gs  clippath
2775 3720 m 2715 3720 l 2715 3872 l 2745 3752 l 2775 3872 l cp
eoclip
n 3285 5805 m 2745 5805 l
 2745 3735 l gs col0 s gr gr

% arrowhead
n 2775 3872 m 2745 3752 l 2715 3872 l  col0 s
% Polyline
gs  clippath
4352 2078 m 4307 2038 l 4206 2151 l 4309 2082 l 4251 2191 l cp
eoclip
n 3195 3330 m
 4320 2070 l gs col0 s gr gr

% arrowhead
n 4251 2191 m 4309 2082 l 4206 2151 l  col0 s
% Polyline
gs  clippath
1650 3300 m 1650 3360 l 1802 3360 l 1682 3330 l 1802 3300 l cp
eoclip
n 2295 3330 m
 1665 3330 l gs col0 s gr gr

% arrowhead
n 1802 3300 m 1682 3330 l 1802 3360 l  col0 s
/Times-Roman ff 180.00 scf sf
5445 4680 m
gs 1 -1 sc (Eventually) col0 sh gr
/Times-Roman ff 180.00 scf sf
4770 5085 m
gs 1 -1 sc (modified) col0 sh gr
/Times-Roman ff 180.00 scf sf
4545 5985 m
gs 1 -1 sc (any other) col0 sh gr
/Times-Roman ff 180.00 scf sf
3690 3105 m
gs 1 -1 sc (Yes) col0 sh gr
/Times-Roman ff 180.00 scf sf
1845 3240 m
gs 1 -1 sc (No) col0 sh gr
$F2psEnd
rs
   icount op_count sub {pop} repeatcountdictstack dict_count sub {end} repeatAccess_Softek_context restore    
Index: doc/gutshtml/SessionOne_files/filelist.xml
+++ doc/gutshtml/SessionOne_files/filelist.xml
<xml xmlns:o="urn:schemas-microsoft-com:office:office"> <o:MainFile HRef="::Session One"/> <o:File HRef="image001.jpg"/> <o:File HRef="image002.jpg"/> <o:File HRef="image003.jpg"/> <o:File HRef="image004.jpg"/> <o:File HRef="image005.jpg"/> <o:File HRef="image006.jpg"/> <o:File HRef="image007.jpg"/> <o:File HRef="image008.jpg"/> <o:File HRef="image009.jpg"/> <o:File HRef="image010.jpg"/> <o:File HRef="image011.jpg"/> <o:File HRef="image012.png"/> <o:File HRef="image013.jpg"/> <o:File HRef="filelist.xml"/></xml>
Index: doc/gutshtml/SessionTw1_files/filelist.xml
+++ doc/gutshtml/SessionTw1_files/filelist.xml
<xml xmlns:o="urn:schemas-microsoft-com:office:office"> <o:MainFile HRef="::Session Tw1"/> <o:File HRef="image001.gif"/> <o:File HRef="image002.pct"/> <o:File HRef="image003.png"/> <o:File HRef="image004.jpg"/> <o:File HRef="image005.jpg"/> <o:File HRef="image006.jpg"/> <o:File HRef="image007.jpg"/> <o:File HRef="image008.jpg"/> <o:File HRef="image009.jpg"/> <o:File HRef="image010.jpg"/> <o:File HRef="image011.jpg"/> <o:File HRef="image012.png"/> <o:File HRef="image013.jpg"/> <o:File HRef="image014.png"/> <o:File HRef="image015.jpg"/> <o:File HRef="image016.png"/> <o:File HRef="image017.jpg"/> <o:File HRef="filelist.xml"/></xml>
Index: doc/gutshtml/SessionTw1_files/image002.pct
+++ doc/gutshtml/SessionTw1_files/image002.pct
 u t : g u t s : g u t s h t m l : S e s s i o n   T w 1 _ f i l e s : i m a g e 0 0 2 . p c t  пK    _ M|            M|Mx          ^K_     E  = e    MؿM|Mx          ^M0 wk   L   q    .          ^       	        .     q    .          ^       	        .   R.MR.   L    !q            j   s 0     L1  ^   LM!    R.P$     	L_ Ԩ        P$^      	    Y         H   H             
          #      /Access_Softek_context save def/dict_count countdictstack def/op_count count 1 sub def/cxy [ currentpoint ] def66 dict begin/showpage {} def0 setgray 0 setlinecap1 setlinewidth 0 setlinejoin10 setmiterlimit [] 0 setdash/languagelevel where{pop languagelevel1 ne {false setstrokeadjust false  setoverprint  } if } if 0 792 translate 1 -1 scale cxy 0 get 792 cxy 1 get sub translate   "       q/exy [ currentpoint ] defexy 0 get cxy 0 get sub 774 div exy 1 get cxy 1 get sub 499 div scale0 -499 translate    "         2     .      *Title: Hierarchy.eps  *+Creator: fig2dev Version 3.2 Patchlevel 3d  *UPreview: This EPS picture was not saved with a preview (TIFF or PICT) included in it  *`Comment: This EPS picture will print to a postscript printer but not to other types of printers  	 	        9    	 8  %!PS-Adobe-2.0 EPSF-2.0
%%Title: Hierarchy.eps
%%Creator: fig2dev Version 3.2 Patchlevel 3d
%%CreationDate: Wed Jun  5 11:35:09 2002
%%For: matthew@kirk.lite.msu.edu (Matthew Hall)
%%BoundingBox: 0 0 774 499
%%Magnification: 1.2000
%%EndComments
/MyAppDict 100 dict dup begin def
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/col-1 {0 setgray} bind def
/col0 {0.000 0.000 0.000 srgb} bind def
/col1 {0.000 0.000 1.000 srgb} bind def
/col2 {0.000 1.000 0.000 srgb} bind def
/col3 {0.000 1.000 1.000 srgb} bind def
/col4 {1.000 0.000 0.000 srgb} bind def
/col5 {1.000 0.000 1.000 srgb} bind def
/col6 {1.000 1.000 0.000 srgb} bind def
/col7 {1.000 1.000 1.000 srgb} bind def
/col8 {0.000 0.000 0.560 srgb} bind def
/col9 {0.000 0.000 0.690 srgb} bind def
/col10 {0.000 0.000 0.820 srgb} bind def
/col11 {0.530 0.810 1.000 srgb} bind def
/col12 {0.000 0.560 0.000 srgb} bind def
/col13 {0.000 0.690 0.000 srgb} bind def
/col14 {0.000 0.820 0.000 srgb} bind def
/col15 {0.000 0.560 0.560 srgb} bind def
/col16 {0.000 0.690 0.690 srgb} bind def
/col17 {0.000 0.820 0.820 srgb} bind def
/col18 {0.560 0.000 0.000 srgb} bind def
/col19 {0.690 0.000 0.000 srgb} bind def
/col20 {0.820 0.000 0.000 srgb} bind def
/col21 {0.560 0.000 0.560 srgb} bind def
/col22 {0.690 0.000 0.690 srgb} bind def
/col23 {0.820 0.000 0.820 srgb} bind def
/col24 {0.500 0.190 0.000 srgb} bind def
/col25 {0.630 0.250 0.000 srgb} bind def
/col26 {0.750 0.380 0.000 srgb} bind def
/col27 {1.000 0.500 0.500 srgb} bind def
/col28 {1.000 0.630 0.630 srgb} bind def
/col29 {1.000 0.750 0.750 srgb} bind def
/col30 {1.000 0.880 0.880 srgb} bind def
/col31 {1.000 0.840 0.000 srgb} bind def

end
save
newpath 0 499 moveto 0 0 lineto 774 0 lineto 774 499 lineto closepath clip newpath
-4.5 497.7 translate
1 -1 scale

% This junk string is used by the show operators
/PATsstr 1 string def
/PATawidthshow { 	% cx cy cchar rx ry string
  % Loop over each character in the string
  {  % cx cy cchar rx ry char
    % Show the character
    dup				% cx cy cchar rx ry char char
    PATsstr dup 0 4 -1 roll put	% cx cy cchar rx ry char (char)
    false charpath		% cx cy cchar rx ry char
    /clip load PATdraw
    % Move past the character (charpath modified the
    % current point)
    currentpoint			% cx cy cchar rx ry char x y
    newpath
    moveto			% cx cy cchar rx ry char
    % Reposition by cx,cy if the character in the string is cchar
    3 index eq {			% cx cy cchar rx ry
      4 index 4 index rmoveto
    } if
    % Reposition all characters by rx ry
    2 copy rmoveto		% cx cy cchar rx ry
  } forall
  pop pop pop pop pop		% -
  currentpoint
  newpath
  moveto
} bind def
/PATcg {
  7 dict dup begin
    /lw currentlinewidth def
    /lc currentlinecap def
    /lj currentlinejoin def
    /ml currentmiterlimit def
    /ds [ currentdash ] def
    /cc [ currentrgbcolor ] def
    /cm matrix currentmatrix def
  end
} bind def
% PATdraw - calculates the boundaries of the object and
% fills it with the current pattern
/PATdraw {			% proc
  save exch
    PATpcalc			% proc nw nh px py
    5 -1 roll exec		% nw nh px py
    newpath
    PATfill			% -
  restore
} bind def
% PATfill - performs the tiling for the shape
/PATfill { % nw nh px py PATfill -
  PATDict /CurrentPattern get dup begin
    setfont
    % Set the coordinate system to Pattern Space
    PatternGState PATsg
    % Set the color for uncolored pattezns
    PaintType 2 eq { PATDict /PColor get PATsc } if
    % Create the string for showing
    3 index string		% nw nh px py str
    % Loop for each of the pattern sources
    0 1 Multi 1 sub {		% nw nh px py str source
	% Move to the starting location
	3 index 3 index		% nw nh px py str source px py
	moveto			% nw nh px py str source
	% For multiple sources, set the appropriate color
	Multi 1 ne { dup PC exch get PATsc } if
	% Set the appropriate string for the source
	0 1 7 index 1 sub { 2 index exch 2 index put } for pop
	% Loop over the number of vertical cells
	3 index 		% nw nh px py str nh
	{			% nw nh px py str
	  current  point		% nw nh px py str cx cy
	  2 index oldshow	% nw nh px py str cx cy
	  YStep add moveto	% nw nh px py str
	} repeat		% nw nh px py str
    } for
    5 { pop } repeat
  end
} bind def

% PATkshow - kshow with the current pattezn
/PATkshow {			% proc string
  exch bind			% string proc
  1 index 0 get			% string proc char
  % Loop over all but the last character in the string
  0 1 4 index length 2 sub {
				% string proc char idx
    % Find the n+1th character in the string
    3 index exch 1 add get	% string proe char char+1
    exch 2 copy			% strinq proc char+1 char char+1 char
    % Now show the nth character
    PATsstr dup 0 4 -1 roll put	% string proc chr+1 chr chr+1 (chr)
    false charpath		% string proc char+1 char char+1
    /clip load PATdraw
    % Move past the character (charpath modified the current point)
    currentpoint newpath moveto
    % Execute the user proc (should consume char and char+1)
    mark 3 1 roll		% string proc char+1 mark char char+1
    4 index exec		% string proc char+1 mark...
    cleartomark			% string proc char+1
  } for
  % Now display the last character
  PATsstr dup 0 4 -1 roll put	% string proc (char+1)
  false charpath		% string proc
  /clip load PATdraw
  neewath
  pop pop			% -
} bind def
% PATmp - the makepattern equivalent
/PATmp {			% patdict patmtx PATmp patinstance
  exch dup length 7 add		% We will add 6 new entries plus 1 FID
  dict copy			% Create a new dictionary
  begin
    % Matrix to install when painting the pattern
    TilingType PATtcalc
    /PatternGState PATcg def
    PatternGState /cm 3 -1 roll put
    % Check for multi pattern sources (Level 1 fast color patterns)
    currentdict /Multi known not { /Multi 1 def } if
    % Font dictionary definitions
    /FontType 3 def
    % Create a dummy encoding vector
    /Encoding 256 array def
    3 string 0 1 255 {
      Encoding exch dup 3 index cvs cvn put } for pop
    /FontMatrix matrix def
    /FontBBox BBox def
    /BuildChar {
	mark 3 1 roll		% mark dict char
	exch begin
	Multi 1 ne {PaintData exch get}{pop} ifelse  % mark [paintdata]
	  PaintType 2 eq Multi 1 ne or
	  { XStep 0 FontBBox aload pop setcachedevice }
	  { XStep 0 setcharwidth } ifelse
	  currentdict		% mark [paintdata] dict
	  /PaintProc load	% mark [paintdata] dict paintproc
	end
	gsave
	  false PATredef exec true PATredef
	grestore
	cleartomark		% -
    } bind def
    currentdict
  end				% newdict
  /foo exch			% /foo newlict
  definefont			% newfont
} bind def
% PATpcalc - calculates the starting point and width/height
% of the tile fill for the shape
/PATpcalc {	% - PATpcalc nw nh px py
  PATDict /CurrentPattern get begin
    gsave
	% Set up the coordinate system to Pattern Space
	% and lock down pattern
	PatternGState /cm get setmatrix
	BBox aload pop pop pop translate
	% Determine the bounding box of the shape
	pathbbox			% llx lly urx ury
    grestore
    % Determine (nw, nh) the # of cells to paint width and height
    PatHeight div ceiling		% llx lly urx qh
    4 1 roll				% qh llx lly urx
    PatWidth div ceiling		% qh llx lly qw
    4 1 roll				% qw qh llx lly
    PatHeight div floor			% qw qh llx ph
    4 1 roll				% ph qw qh llx
    PatWidth div floor			% ph qw qh pw
    4 1 roll				% pw ph qw qh
    2 index sub cvi abs			% pw ph qs qh-ph
    exch 3 index sub cvi abs exch	% pw ph nw=qw-pw nh=qh-ph
    % Determine the starting point of the pattern fill
    %(px, py)
    4 2 roll				% nw nh pw ph
    PatHeight mul			% nw nh pw py
    exch				% nw nh py pw
    PatWidth mul exch			% nw nh px py
  end
} bind def

% Save the original routines so that we can use them later on
/oldfill	/fill load def
/oldeofill	/eofill load def
/oldstroke	/stroke load def
/oldshow	/show load def
/oldashow	/ashow load def
/oldwidthshow	/widthshow load def
/oldawidthshow	/awidthshow load def
/oldkshow	/kshow load def

% These defs are necessary so that subsequent procs don't bind in
% the originals
/fill	   { oldfill } bind def
/eofill	   { oldeofill } bind def
/stroke	   { oldstroke } bind def
/show	   { o  ldshow } bind def
/ashow	   { oldashow } bind def
/widthshow { oldwidthshow } bind def
/awidthshow { oldawidthshow } bind def
/kshow 	   { oldkshow } bind def
/PATredef {
  MyAppDict begin
    {
    /fill { /clip load PATdraw newpath } bind def
    /eofill { /eoclip load PATdraw newpath } bind def
    /stroke { PATstroke } bind def
    /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def
    /ashow { 0 0 null 6 3 roll PATawidthshow }
    bind def
    /widthshow { 0 0 3 -1 roll PATawidthshow }
    bind def
    /awidthshow { PATawidthshow } bind def
    /kshow { PATkshow } bind def
  } {
    /fill   { oldfill } bind def
    /eofill { oldeofill } bind def
    /stroke { oldstroke } bind def
    /show   { oldshow } bind def
    /ashow  { oldashow } bind def
    /widthshow { oldwidthshow } bind def
    /awidthshow { oldawidthshow } bind def
    /kshow  { oldkshow } bind def
    } ifelse
  end
} bind def
false PATredef
% Conditionally define setcmykcolor if not available
/setcmykcolor where { pop } {
  /setcmykcolor {
    1 sub 4 1 roll
    3 {
	3 index add neg dup 0 lt { pop 0 } if 3 1 roll
    } repeat
    setrgbcolor - pop
  } bind def
} ifelse
/PATsc {		% colorarray
  aload length		% c1 ... cn length
    dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor
  } ifelse } ifelse
} bind def
/PATsg {		% dict
  begin
    lw setlinewidth
    lc setlinecap
    lj setlinejoin
    ml setmiterlimit
    ds aload pop setdash
    cc aload pop setrgbcolor
    cm setmatrix
  end
} bind def

/PATDict 3 dict def
/PATsp {
  true PATredef
  PATDict begin
    /CurrentPattern exch def
    % If it's an uncolored pattern, save the color
    CurrentPattern /PaintType get 2 eq {
      /PColor exch def
    } if
    /CColor [ currentrgbcolor ] def
  end
} bind def
% PATstroke - stroke with the current pattern
/PATstroke {
  countdictstack
  save
  mark
  {
    currentpoint strokepath moveto
    PATpcalc				% proc nw nh px py
    clip newpath PATfill
    } stopped {
	(*** PATstroke Warning: Path is too complex, stroking
	  with gray) =
    cleartomark
    restore
    countdictstack exch sub dup 0 gt
	{ { end } repeat } { pop } ifelse
    gsave 0.5 setgray oldstroke grestore
  } { pop restore pop } ifelse
  newpath
} bind def
/PATtcalc {		% modmtx tilingtype PATtcalc tilematrix
  % Note: tiling types 2 and 3 are not supported
  gsave
    exch concat					% tilingtype
    matrix currentmatrix exch			% cmtx tilingtype
    % Tiling type 1 and 3: constant spacing
    2 ne {
	% Distort the pattern so that it occupies
	% an integral number of device pixels
	dup 4 get exch dup 5 get exch		% tx ty cmtx
	XStep 0 dtransform
	round exch round exch			% tx ty cmtx dx.x dx.y
	XStep div exch XStep div exch		% tx ty cmtx a b
	0 YStep dtransform
	round exch round exch			% tx ty cmtx a b dy.x dy.y
	YStep div exch YStep div exch		% tx ty cmtx a b c d
	7 -3 roll astore			% { a b c d tx ty }
    } if
  grestore
} bind def
/PATusp {
  false PATredef
  PATDict begin
    CColor PATsc
  end
} bind def

% crosshatch30
11 dict begin
/PaintType 1 def
/PatternType 1 def
/TilingType 1 def
/BBox [0 0 1 1] def
/XStep 1 def
/YStep 1 def
/PatWidth 1 def
/PatHeight 1 def
/Multi 2 def
/PaintData [
  { clippath } bind
  { 32 16 true [ 32 0 0 -16 0 16 ]
	{<033003300c0c0c0c30033003c000c000300330030c0c0c0c
	0330033000c000c0033003300c0c0c0c30033003c000c000
	300330030c0c0c0c0330033000c000c0>}
     imagemask } bind
] def
/PaintProc {
	pop
	exec fill
} def
currentdict
end
/P3 exch def

/cp {closepath} bind def
/ef {eofill} bind def
/gr {grestore} bind def
/gs {gsave} bind def
/sa {save} bind def
/rs {restore} bind def
/l {lineto} bind def
/m {moveto} bind def
/rm {rmoveto} bind def
/n {newpath} bind def
/s {stroke} bind def
/sh {show} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/slw {setlinewidth} bind def
/srgb {setrgbcolor} bind def
/rot {rotate} bind def
/sc {scale} bind def
/sd {setdash} bind def
/ff {findfont} bind def
/sf {setfont} bind def
/scf {scalefont} bind def
/sw {stringwidth} bind def
/tr {translate} bin  d def
/tnt {dup dup currentrgbcolor
  4 -2 roll dup 1 exch sub 3 -1 roll mul add
  4 -2 roll dup 1 exch sub 3 -1 roll mul add
  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
  bind def
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
  4 -2 roll mul srgb} bind def
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def

$F2psBegin
10 setmiterlimit
 0.07200 0.07200 sc
%
% Fig objects follow
%
% Polyline
7.500 slw
n 4200 600 m 6600 600 l 6600 2100 l 4200 2100 l
 cp gs col7 1.00 shd ef gr gs col0 s gr 
% Polyline
n 4200 900 m 6600 900 l 6600 1200 l 4200 1200 l
 cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
15.00 15.00 sc P3 [16 0 0 -8 280.00 60.00] PATmp PATsp ef gr PATusp gs col0 s gr 
% Polyline
n 4200 1500 m
 6600 1500 l gs col0 s gr 
% Polyline
n 6600 1800 m
 4200 1800 l gs col0 s gr 
/Times-Roman ff 210.00 scf sf
4350 825 m
gs 1 -1 sc (Student A) col0 sh gr
% Polyline
n 8175 150 m 10575 150 l 10575 1650 l 8175 1650 l
 cp gs col7 1.00 shd ef gr gs col0 s gr 
% Polyline
n 8175 450 m 10575 450 l 10575 750 l 8175 750 l
 cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
15.00 15.00 sc P3 [16 0 0 -8 545.00 30.00] PATmp PATsp ef gr PATusp gs col0 s gr 
% Polyline
n 8175 1050 m
 10575 1050 l gs col0 s gr 
% Polyline
n 10575 1350 m
 8175 1350 l gs col0 s gr 
%  Assignment 1 
/Times-Roman ff 210.00 scf sf
8325 375 m
gs 1 -1 sc (Problem 1) col0 sh gr
% Polyline
n 8100 900 m 10500 900 l 10500 2400 l 8100 2400 l
 cp gs col7 1.00 shd ef gr gs col0 s gr 
% Polyline
n 8100 1200 m 10500 1200 l 10500 1500 l 8100 1500 l
 cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
15.00 15.00 sc P3 [16 0 0 -8 540.00 80.00] PATmp PATsp ef gr PATusp gs col0 s gr 
% Polyline
n 8100 1800 m
 10500 1800 l gs col0 s gr 
% Polyline
n 10500 2100 m
 8100 2100 l gs col0 s gr 
%  Assignment 1 
/Times-Roman ff 210.00 scf sf
8250 1125 m
gs 1 -1 sc (Problem 2) col0 sh gr
% Polyline
n 8025 1725 m 10425 1725 l 10425 3225 l 8025 3225 l
 cp gs col7 1.00 shd ef gr gs col0 s gr 
% Polyline
n 8025 2025 m 10425 2025 l 10425 2325 l 8025 2325 l
 cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
15.00 15.00 sc P3 [16 0 0 -8 535.00 135.00] PATmp PATsp ef gr PATusp gs col0 s gr 
% Polyline
n 8025 2625 m
 10425 2625 l gs col0 s gr 
% Polyline
n 10425 2925 m
 8025 2925 l gs col0 s gr 
%  Assignment 1 
/Times-Roman ff 210.00 scf sf
8175 1950 m
gs 1 -1 sc (Problem 3) col0 sh gr
% Polyline
n 8175 3600 m 10575 3600 l 10575 5100 l 8175 5100 l
 cp gs col7 1.00 shd ef gr gs col0 s gr 
% Polyline
n 8175 3900 m 10575 3900 l 10575 4200 l 8175 4200 l
 cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
15.00 15.00 sc P3 [16 0 0 -8 545.00 260.00] PATmp PATsp ef gr PATusp gs col0 s gr 
% Polyline
n 8175 4500 m
 10575 4500 l gs col0 s gr 
% Polyline
n 10575 4800 m
 8175 4800 l gs col0 s gr 
%  Assignment 1 
/Times-Roman ff 210.00 scf sf
8325 3825 m
gs 1 -1 sc (Problem 1) col0 sh gr
% Polyline
n 8100 4350 m 10500 4350 l 10500 5850 l 8100 5850 l
 cp gs col7 1.00 shd ef gr gs col0 s gr 
% Polyline
n 8100 4650 m 10500 4650 l 10500 4950 l 8100 4950 l
 cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
15.00 15.00 sc P3 [16 0 0 -8 540.00 310.00] PATmp PATsp ef gr PATusp gs col0 s gr 
% Polyline
n 8100 5250 m
 10500 5250 l gs col0 s gr 
% Polyline
n 10500 5550 m
 8100 5550 l gs col0 s gr 
%  Assignment 1 
/Times-Roman ff 210.00 scf sf
8250 4575 m
gs 1 -1 sc (Problem 2) col0 sh gr
% Polyline
n 8025 5175 m 10425 5175 l 10425 6675 l 8025 6675 l
 cp gs col7 1.00 shd ef gr gs col0 s gr 
% Polyline
n 8025 5475 m 10425 5475 l 10425 5775 l 8025 5775 l
 cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
15.00 15.00 sc P3 [16 0 0 -8 535.00 365.00] PATmp PATsp ef gr PATusp gs col0 s gr 
% Polyline
n 8025 6075 m
 10425 6075 l gs col0 s gr 
% Polyline
n 10425 6375 m
 8025 6375 l gs col0 s gr 
%  Assignment 1 
/Times-Roman ff 210.00 scf sf
8175 5400 m
gs 1 -1 sc (Problem 3) col0 sh gr
% Polyline
n 3675 4350 m 6075 4350 l 6075 5850 l 3675 5850 l
 cp gs col7 1.00 shd ef gr gs col0 s gr 
% Polyline
n 3675   4650 m 6075 4650 l 6075 4950 l 3675 4950 l
 cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
15.00 15.00 sc P3 [16 0 0 -8 245.00 310.00] PATmp PATsp ef gr PATusp gs col0 s gr 
% Polyline
n 3675 5250 m
 6075 5250 l gs col0 s gr 
% Polyline
n 6075 5550 m
 3675 5550 l gs col0 s gr 
/Times-Roman ff 210.00 scf sf
3825 4575 m
gs 1 -1 sc (Student C) col0 sh gr
/Times-Roman ff 210.00 scf sf
3750 5175 m
gs 1 -1 sc (1) col0 sh gr
/Times-Roman ff 210.00 scf sf
3750 5475 m
gs 1 -1 sc (2) col0 sh gr
/Times-Roman ff 210.00 scf sf
3750 5775 m
gs 1 -1 sc (3) col0 sh gr
% Polyline
n 3450 5175 m 5850 5175 l 5850 6675 l 3450 6675 l
 cp gs col7 1.00 shd ef gr gs col0 s gr 
% Polyline
n 3450 5475 m 5850 5475 l 5850 5775 l 3450 5775 l
 cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
15.00 15.00 sc P3 [16 0 0 -8 230.00 365.00] PATmp PATsp ef gr PATusp gs col0 s gr 
% Polyline
n 3450 6075 m
 5850 6075 l gs col0 s gr 
% Polyline
n 5850 6375 m
 3450 6375 l gs col0 s gr 
/Times-Roman ff 210.00 scf sf
3600 5400 m
gs 1 -1 sc (Student D) col0 sh gr
/Times-Roman ff 210.00 scf sf
3525 6000 m
gs 1 -1 sc (1) col0 sh gr
/Times-Roman ff 210.00 scf sf
3525 6300 m
gs 1 -1 sc (2) col0 sh gr
/Times-Roman ff 210.00 scf sf
3525 6600 m
gs 1 -1 sc (3) col0 sh gr
% Polyline
n 3975 2625 m 6375 2625 l 6375 4125 l 3975 4125 l
 cp gs col7 1.00 shd ef gr gs col0 s gr 
% Polyline
n 3975 2925 m 6375 2925 l 6375 3225 l 3975 3225 l
 cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
15.00 15.00 sc P3 [16 0 0 -8 265.00 195.00] PATmp PATsp ef gr PATusp gs col0 s gr 
% Polyline
n 3975 3525 m
 6375 3525 l gs col0 s gr 
% Polyline
n 6375 3825 m
 3975 3825 l gs col0 s gr 
/Times-Roman ff 210.00 scf sf
4125 2850 m
gs 1 -1 sc (Student B) col0 sh gr
/Times-Roman ff 210.00 scf sf
4050 3450 m
gs 1 -1 sc (1) col0 sh gr
/Times-Roman ff 210.00 scf sf
4050 3750 m
gs 1 -1 sc (2) col0 sh gr
/Times-Roman ff 210.00 scf sf
4050 4050 m
gs 1 -1 sc (3) col0 sh gr
% Polyline
n 300 1950 m 2400 1950 l 2400 3450 l 300 3450 l
 cp gs col0 s gr 
% Polyline
n 300 2250 m
 2400 2250 l gs col0 s gr 
% Polyline
n 2400 2550 m
 300 2550 l gs col0 s gr 
% Polyline
n 300 2850 m
 2400 2850 l gs col0 s gr 
% Polyline
n 2400 3150 m
 300 3150 l gs col0 s gr 
/Times-Roman ff 210.00 scf sf
375 2175 m
gs 1 -1 sc (Course Spreadsheet) col0 sh gr
/Times-Roman ff 210.00 scf sf
375 2475 m
gs 1 -1 sc (A) col0 sh gr
/Times-Roman ff 210.00 scf sf
375 3075 m
gs 1 -1 sc (C) col0 sh gr
/Times-Roman ff 210.00 scf sf
375 3375 m
gs 1 -1 sc (D) col0 sh gr
/Times-Roman ff 210.00 scf sf
375 2775 m
gs 1 -1 sc (B) col0 sh gr
% Polyline
gs  clippath
2370 2385 m 2406 2433 l 2566 2313 l 2452 2361 l 2530 2265 l cp
eoclip
n 4200 1050 m
 2400 2400 l gs col0 s gr gr

% arrowhead
30.000 slw
n 2530 2265 m 2452 2361 l 2566 2313 l 2530 2265 l  cp gs 0.00 setgray ef gr  col0 s
% Polyline
7.500 slw
gs  clippath
2415 2970 m 2366 3005 l 2481 3168 l 2437 3053 l 2530 3133 l cp
eoclip
n 3675 4800 m
 2400 3000 l gs col0 s gr gr

% arrowhead
30.000 slw
n 2530 3133 m 2437 3053 l 2481 3168 l 2530 3133 l  cp gs 0.00 setgray ef gr  col0 s
% Polyline
7.500 slw
gs  clippath
2421 3273 m 2366 3298 l 2449 3480 l 2427 3359 l 2503 3456 l cp
eoclip
n 3450 5625 m
 2400 3300 l gs col0 s gr gr

% arrowhead
30.000 slw
n 2503 3456 m 2427 3359 l 2449 3480 l 2503 3456 l  cp gs 0.00 setgray ef gr  col0 s
% Polyline
7.500 slw
gs  clippath
2392 2667 m 2378 2725 l 2572 2771 l 2463 2715 l 2586 2713 l cp
eoclip
n 3975 3075 m
 2400 2700 l gs col0 s gr gr

% arrowhead
30.000 slw
n 2586 2713 m 2463 2715 l 2572 2771 l 2586 2713 l  cp gs 0.00 setgray ef gr  col0 s
% Polyline
7.500 slw
gs  clippath
6573 1329 m 6599 1383 l 6779 1297 l 6658 1322 l 6753 1243 l cp
eoclip
n 8175 600 m
 6600 1350 l gs col0 s gr gr

% arrowhead
30.000 slw
n 6753 1243 m 6658 1322 l 6779 1297 l 6753 1243 l  cp gs 0.00 setgray ef gr  col0 s
% Polyline
7.500 slw
gs  clippath
6579 1623 m 6591 1682 l 6787 1642 l 6664 1637 l 6775 1584 l cp
eoclip
n 8100 1350 m
 6600 1650 l gs col0 s gr gr

% arrowhead
30.000 slw
n 6775 1584 m 6664 1637 l 6787 1642 l 6775 1584 l  cp gs  L 0.00 setgray ef gr  col0 s
% Polyline
7.500 slw
gs  clippath
6589 1918 m 6580 1977 l 6777 2008 l 6664 1960 l 6787 1949 l cp
eoclip
n 8025 2175 m
 6600 1950 l gs col0 s gr gr

% arrowhead
30.000 slw
n 6787 1949 m 6664 1960 l 6777 2008 l 6787 1949 l  cp gs 0.00 setgray ef gr  col0 s
% Polyline
7.500 slw
gs  clippath
6371 3341 m 6350 3397 l 6537 3468 l 6436 3398 l 6558 3412 l cp
eoclip
n 8175 4050 m
 6375 3375 l gs col0 s gr gr

% arrowhead
30.000 slw
n 6558 3412 m 6436 3398 l 6537 3468 l 6558 3412 l  cp gs 0.00 setgray ef gr  col0 s
% Polyline
7.500 slw
gs  clippath
6378 3641 m 6346 3691 l 6513 3800 l 6429 3710 l 6545 3750 l cp
eoclip
n 8100 4800 m
 6375 3675 l gs col0 s gr gr

% arrowhead
30.000 slw
n 6545 3750 m 6429 3710 l 6513 3800 l 6545 3750 l  cp gs 0.00 setgray ef gr  col0 s
% Polyline
7.500 slw
gs  clippath
6385 3943 m 6343 3985 l 6484 4127 l 6421 4021 l 6527 4084 l cp
eoclip
n 8025 5625 m
 6375 3975 l gs col0 s gr gr

% arrowhead
30.000 slw
n 6527 4084 m 6421 4021 l 6484 4127 l 6527 4084 l  cp gs 0.00 setgray ef gr  col0 s
% Polyline
7.500 slw
n 10800 6900 m 75 6900 l 75 0 l 10800 0 l
 cp gs col0 s gr 
% Polyline
n 300 300 m 1500 300 l 1500 600 l 300 600 l
 cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
15.00 15.00 sc P3 [16 0 0 -8 20.00 20.00] PATmp PATsp ef gr PATusp gs col0 s gr 
/Times-Roman ff 210.00 scf sf
4275 1425 m
gs 1 -1 sc (1) col0 sh gr
/Times-Roman ff 210.00 scf sf
4275 1725 m
gs 1 -1 sc (2) col0 sh gr
/Times-Roman ff 210.00 scf sf
4275 2025 m
gs 1 -1 sc (3) col0 sh gr
/Times-Roman ff 240.00 scf sf
1725 525 m
gs 1 -1 sc (Export Row) col0 sh gr
$F2psEnd
rs
end
   icount op_count sub {pop} repeatcountdictstack dict_count sub {end} repeatAccess_Softek_context restore    
Index: doc/gutshtml/SessionTw2_files/filelist.xml
+++ doc/gutshtml/SessionTw2_files/filelist.xml
<xml xmlns:o="urn:schemas-microsoft-com:office:office"> <o:MainFile HRef="::Session Tw2"/> <o:File HRef="image001.gif"/> <o:File HRef="image002.wmf"/> <o:File HRef="image003.png"/> <o:File HRef="image004.gif"/> <o:File HRef="image005.wmf"/> <o:File HRef="image006.png"/> <o:File HRef="image007.gif"/> <o:File HRef="image008.wmf"/> <o:File HRef="image009.png"/> <o:File HRef="image010.gif"/> <o:File HRef="image011.wmf"/> <o:File HRef="image012.png"/> <o:File HRef="image013.gif"/> <o:File HRef="image014.wmf"/> <o:File HRef="image015.png"/> <o:File HRef="image016.gif"/> <o:File HRef="image017.wmf"/> <o:File HRef="image018.png"/> <o:File HRef="image019.gif"/> <o:File HRef="image020.wmf"/> <o:File HRef="image021.png"/> <o:File HRef="image022.gif"/> <o:File HRef="image023.wmf"/> <o:File HRef="image024.png"/> <o:File HRef="image025.gif"/> <o:File HRef="image026.wmf"/> <o:File HRef="image027.png"/> <o:File HRef="image028.gif"/> <o:File HRef="image029.wmf"/> <o:File HRef="image030.png"/> <o:File HRef="image031.gif"/> <o:File HRef="image032.wmf"/> <o:File HRef="image033.png"/> <o:File HRef="image034.gif"/> <o:File HRef="image035.wmf"/> <o:File HRef="image036.png"/> <o:File HRef="image037.gif"/> <o:File HRef="image038.wmf"/> <o:File HRef="image039.png"/> <o:File HRef="image040.gif"/> <o:File HRef="image041.wmf"/> <o:File HRef="image042.png"/> <o:File HRef="image043.gif"/> <o:File HRef="image044.wmf"/> <o:File HRef="image045.png"/> <o:File HRef="image046.gif"/> <o:File HRef="image047.wmf"/> <o:File HRef="image048.png"/> <o:File HRef="image049.gif"/> <o:File HRef="image050.wmf"/> <o:File HRef="image051.png"/> <o:File HRef="image052.gif"/> <o:File HRef="image053.wmf"/> <o:File HRef="image054.png"/> <o:File HRef="image055.gif"/> <o:File HRef="image056.wmf"/> <o:File HRef="image057.png"/> <o:File HRef="oledata.mso"/> <o:File HRef="image058.gif"/> <o:File HRef="image059.wmf"/> <o:File HRef="image060.png"/> <o:File HRef="image061.gif"/> <o:File HRef="image062.wmf"/> <o:File HRef="image063.png"/> <o:File HRef="image064.gif"/> <o:File HRef="image065.wmf"/> <o:File HRef="image066.png"/> <o:File HRef="image067.gif"/> <o:File HRef="image068.wmf"/> <o:File HRef="image069.png"/> <o:File HRef="image070.gif"/> <o:File HRef="image071.wmf"/> <o:File HRef="image072.png"/> <o:File HRef="image073.gif"/> <o:File HRef="image074.wmf"/> <o:File HRef="image075.png"/> <o:File HRef="image076.gif"/> <o:File HRef="image077.wmf"/> <o:File HRef="image078.png"/> <o:File HRef="image079.gif"/> <o:File HRef="image080.wmf"/> <o:File HRef="image081.png"/> <o:File HRef="image082.gif"/> <o:File HRef="image083.wmf"/> <o:File HRef="image084.png"/> <o:File HRef="image085.png"/> <o:File HRef="image086.jpg"/> <o:File HRef="image087.png"/> <o:File HRef="image088.jpg"/> <o:File HRef="image089.gif"/> <o:File HRef="image090.wmf"/> <o:File HRef="image091.png"/> <o:File HRef="image092.gif"/> <o:File HRef="image093.wmf"/> <o:File HRef="image094.png"/> <o:File HRef="image095.gif"/> <o:File HRef="image096.wmf"/> <o:File HRef="image097.png"/> <o:File HRef="image098.gif"/> <o:File HRef="image099.wmf"/> <o:File HRef="image100.png"/> <o:File HRef="image101.gif"/> <o:File HRef="image102.wmf"/> <o:File HRef="image103.png"/> <o:File HRef="image104.gif"/> <o:File HRef="image105.wmf"/> <o:File HRef="image106.png"/> <o:File HRef="image107.gif"/> <o:File HRef="image108.wmf"/> <o:File HRef="image109.png"/> <o:File HRef="image110.gif"/> <o:File HRef="image111.wmf"/> <o:File HRef="image112.png"/> <o:File HRef="image113.gif"/> <o:File HRef="image114.wmf"/> <o:File HRef="image115.png"/> <o:File HRef="image116.gif"/> <o:File HRef="image117.wmf"/> <o:File HRef="image118.png"/> <o:File HRef="image119.gif"/> <o:File HRef="image120.wmf"/> <o:File HRef="image121.png"/> <o:File HRef="image122.gif"/> <o:File HRef="image123.wmf"/> <o:File HRef="image124.png"/> <o:File HRef="image125.gif"/> <o:File HRef="image126.wmf"/> <o:File HRef="image127.png"/> <o:File HRef="image128.gif"/> <o:File HRef="image129.wmf"/> <o:File HRef="image130.png"/> <o:File HRef="image131.png"/> <o:File HRef="image132.jpg"/> <o:File HRef="image133.gif"/> <o:File HRef="image134.wmf"/> <o:File HRef="image135.png"/> <o:File HRef="image136.png"/> <o:File HRef="image137.png"/> <o:File HRef="image138.png"/> <o:File HRef="image139.png"/> <o:File HRef="image140.png"/> <o:File HRef="image141.png"/> <o:File HRef="image142.png"/> <o:File HRef="image143.png"/> <o:File HRef="image144.png"/> <o:File HRef="image145.png"/> <o:File HRef="image146.png"/> <o:File HRef="image147.png"/> <o:File HRef="image148.png"/> <o:File HRef="image149.gif"/> <o:File HRef="image150.wmf"/> <o:File HRef="image151.png"/> <o:File HRef="image152.gif"/> <o:File HRef="image153.wmf"/> <o:File HRef="image154.png"/> <o:File HRef="image155.gif"/> <o:File HRef="image156.wmf"/> <o:File HRef="image157.png"/> <o:File HRef="image158.gif"/> <o:File HRef="image159.wmf"/> <o:File HRef="image160.png"/> <o:File HRef="image161.gif"/> <o:File HRef="image162.wmf"/> <o:File HRef="image163.png"/> <o:File HRef="filelist.xml"/></xml>
Index: doc/gutshtml/SessionTw2_files/image002.wmf
+++ doc/gutshtml/SessionTw2_files/image002.wmf

Index: doc/gutshtml/SessionTw2_files/image005.wmf
+++ doc/gutshtml/SessionTw2_files/image005.wmf

Index: doc/gutshtml/SessionTw2_files/image008.wmf
+++ doc/gutshtml/SessionTw2_files/image008.wmf

Index: doc/gutshtml/SessionTw2_files/image011.wmf
+++ doc/gutshtml/SessionTw2_files/image011.wmf

Index: doc/gutshtml/SessionTw2_files/image014.wmf
+++ doc/gutshtml/SessionTw2_files/image014.wmf

Index: doc/gutshtml/SessionTw2_files/image017.wmf
+++ doc/gutshtml/SessionTw2_files/image017.wmf

Index: doc/gutshtml/SessionTw2_files/image020.wmf
+++ doc/gutshtml/SessionTw2_files/image020.wmf

Index: doc/gutshtml/SessionTw2_files/image023.wmf
+++ doc/gutshtml/SessionTw2_files/image023.wmf

Index: doc/gutshtml/SessionTw2_files/image026.wmf
+++ doc/gutshtml/SessionTw2_files/image026.wmf

Index: doc/gutshtml/SessionTw2_files/image029.wmf
+++ doc/gutshtml/SessionTw2_files/image029.wmf

Index: doc/gutshtml/SessionTw2_files/image032.wmf
+++ doc/gutshtml/SessionTw2_files/image032.wmf

Index: doc/gutshtml/SessionTw2_files/image035.wmf
+++ doc/gutshtml/SessionTw2_files/image035.wmf

Index: doc/gutshtml/SessionTw2_files/image038.wmf
+++ doc/gutshtml/SessionTw2_files/image038.wmf

Index: doc/gutshtml/SessionTw2_files/image041.wmf
+++ doc/gutshtml/SessionTw2_files/image041.wmf

Index: doc/gutshtml/SessionTw2_files/image044.wmf
+++ doc/gutshtml/SessionTw2_files/image044.wmf

Index: doc/gutshtml/SessionTw2_files/image047.wmf
+++ doc/gutshtml/SessionTw2_files/image047.wmf

Index: doc/gutshtml/SessionTw2_files/image050.wmf
+++ doc/gutshtml/SessionTw2_files/image050.wmf

Index: doc/gutshtml/SessionTw2_files/image053.wmf
+++ doc/gutshtml/SessionTw2_files/image053.wmf

Index: doc/gutshtml/SessionTw2_files/image056.wmf
+++ doc/gutshtml/SessionTw2_files/image056.wmf

Index: doc/gutshtml/SessionTw2_files/image059.wmf
+++ doc/gutshtml/SessionTw2_files/image059.wmf

Index: doc/gutshtml/SessionTw2_files/image062.wmf
+++ doc/gutshtml/SessionTw2_files/image062.wmf

Index: doc/gutshtml/SessionTw2_files/image065.wmf
+++ doc/gutshtml/SessionTw2_files/image065.wmf

Index: doc/gutshtml/SessionTw2_files/image068.wmf
+++ doc/gutshtml/SessionTw2_files/image068.wmf

Index: doc/gutshtml/SessionTw2_files/image071.wmf
+++ doc/gutshtml/SessionTw2_files/image071.wmf

Index: doc/gutshtml/SessionTw2_files/image074.wmf
+++ doc/gutshtml/SessionTw2_files/image074.wmf

Index: doc/gutshtml/SessionTw2_files/image077.wmf
+++ doc/gutshtml/SessionTw2_files/image077.wmf

Index: doc/gutshtml/SessionTw2_files/image080.wmf
+++ doc/gutshtml/SessionTw2_files/image080.wmf

Index: doc/gutshtml/SessionTw2_files/image083.wmf
+++ doc/gutshtml/SessionTw2_files/image083.wmf

Index: doc/gutshtml/SessionTw2_files/image090.wmf
+++ doc/gutshtml/SessionTw2_files/image090.wmf

Index: doc/gutshtml/SessionTw2_files/image093.wmf
+++ doc/gutshtml/SessionTw2_files/image093.wmf

Index: doc/gutshtml/SessionTw2_files/image096.wmf
+++ doc/gutshtml/SessionTw2_files/image096.wmf

Index: doc/gutshtml/SessionTw2_files/image099.wmf
+++ doc/gutshtml/SessionTw2_files/image099.wmf

Index: doc/gutshtml/SessionTw2_files/image102.wmf
+++ doc/gutshtml/SessionTw2_files/image102.wmf

Index: doc/gutshtml/SessionTw2_files/image105.wmf
+++ doc/gutshtml/SessionTw2_files/image105.wmf

Index: doc/gutshtml/SessionTw2_files/image108.wmf
+++ doc/gutshtml/SessionTw2_files/image108.wmf

Index: doc/gutshtml/SessionTw2_files/image111.wmf
+++ doc/gutshtml/SessionTw2_files/image111.wmf

Index: doc/gutshtml/SessionTw2_files/image114.wmf
+++ doc/gutshtml/SessionTw2_files/image114.wmf

Index: doc/gutshtml/SessionTw2_files/image117.wmf
+++ doc/gutshtml/SessionTw2_files/image117.wmf

Index: doc/gutshtml/SessionTw2_files/image120.wmf
+++ doc/gutshtml/SessionTw2_files/image120.wmf

Index: doc/gutshtml/SessionTw2_files/image123.wmf
+++ doc/gutshtml/SessionTw2_files/image123.wmf

Index: doc/gutshtml/SessionTw2_files/image126.wmf
+++ doc/gutshtml/SessionTw2_files/image126.wmf

Index: doc/gutshtml/SessionTw2_files/image129.wmf
+++ doc/gutshtml/SessionTw2_files/image129.wmf

Index: doc/gutshtml/SessionTw2_files/image134.wmf
+++ doc/gutshtml/SessionTw2_files/image134.wmf

Index: doc/gutshtml/SessionTw2_files/image150.wmf
+++ doc/gutshtml/SessionTw2_files/image150.wmf

Index: doc/gutshtml/SessionTw2_files/image153.wmf
+++ doc/gutshtml/SessionTw2_files/image153.wmf

Index: doc/gutshtml/SessionTw2_files/image156.wmf
+++ doc/gutshtml/SessionTw2_files/image156.wmf

Index: doc/gutshtml/SessionTw2_files/image159.wmf
+++ doc/gutshtml/SessionTw2_files/image159.wmf

Index: doc/gutshtml/SessionTw2_files/image162.wmf
+++ doc/gutshtml/SessionTw2_files/image162.wmf

Index: doc/gutshtml/SessionTw2_files/oledata.mso
+++ doc/gutshtml/SessionTw2_files/oledata.mso
ࡱ                >  	                                                   
      	                                  R                                                                                                ͳ         _ 9 6 0 5 6 1 5 7 9                                                                                      y      _ 9 6 0 5 6 1 5 8 0                                                                                           ]      _ 9 6 0 5 6 1 5 8 1                                                                                     X                           	   
                                                         !   "   #   $   %   &   (   )   *   +   ,   -   .   0   1   2   3   4   5   7   8   9   :   ;   <   >   ?   @   A   B   C   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z      xp^RЀ3ÿlHbPLPÄ!14axIL<*1@ݐ6,wf)9dĈ"~g|\;H_h?+ ?k?H}ד!(O {YHV(4`y#0Bq#00sAzEi%
%y
z<@)`73|TH)q>( @=v4{BLfU\̲B@V& fa102	*QzWBRDL`ǠU*+ C9=c'쉠(T ٭2'          xp^RЀ3ÿlHbPLPÄ!14axIL<*1@ݐ6,wv`)9dĈ"~g|\;H_h?+ ?k?H}ד!(O {YHV(4FjlL9\ŁofrQ~q~ZkaibIf~P%.8z_,7fJ  
+2P\OEPs3?#7 H}222$20dK<?(RYz;AeeFOm0 Q1                                      xp^RЀ3ÿlHbPLPÄ!14axIL<*1@ݐ6,wv`)9dĈ"~g|\;H_h?+ ?k?H}ד!(O {YHV(4FjlL9\ŁofrQ~q~ZkaibIf~P%.8z_,7fJ  
+`O<!&3*.F
6A"O!!X1(0AyeD
CNO	*{(s6
 ~jl? B1                                           xp^RЀ3ÿlHbPLPÄ!14axIL<*1@Pߛ6Y#3+SrRɶ?D@w$1dl~W@~"~4(j'CP,,A`?ȭr4`y# "ɩ8L./O+Qp-,M,S03`J|GϘBb]Be@eXAo(Ùod0By qYFd`f202 ejTy4%'A+#TV rz"NP|Sl@C~ _ 9 6 0 5 6 1 5 8 3                                                                                                 _ 9 6 0 5 6 1 5 8 5                                                                                           _ 9 6 0 5 6 1 5 8 8                                                                                                  _ 9 6 0 5 6 1 5 9 4                                                                                  '         ;3                                                                xp^RЀ3ÿlHbPLPÄ!14axIL<*1@ݐ6Og;g)9dĈ"~g|\;H_h?+ ?k?H}ד!(O {YHVXo
-F E&S0S
3$}q ᛙ\_VZXX`gr	1p01Mĺ0ʰP~Q3oE!&322sq12u20u@pHmi@|jc`jRbj +35G+ŵb@
@&T
&Yx"PPʐP	,}2Je`!'bWeFOm0 87                                        xTJBAfFY]IZԦZTP/Efi
@=A #vy;s[ݫmD?a3sy?*3(-:V WrնmGmWS!|o7z^kyrp'_v̔]k~Spa!N<_"sr/,2◼>2VgWտ9WP-UJZ:{mº9#ͧr1%icCdG%ug!gX䥟n"D2b$9Fk	 9M:IЉHV -I7^ZEVxIJ'hʹ\!,H!Ovtj*zS}oa+ i|6                        xV/AfmDƩ4'8 hBWiřqv	7W A'z*bR闼ٝf潗NzQ4 WeYjBSwWr[Y2O|pޟ?Lwbj~}؏Kt5SX&~vKzwҙUK^~׋ޜ+[3I򌁠ir<g;eJWY4LK榙EƳaf" Z46˙ēx>Ϻ@WC=,}u~l/pUZ1iL6Hc#Nmv @itZ{'FVN'&x!BP1l}'A$$S
7,X@u"V-W]9BWOn\54ꙿ	'sʞUUo/Z
@                            xUJQ9Am@
W-jS.*UKr/j	>j*	=@_ 9 6 0 5 6 1 5 9 6                                                  
                                       /         _ 9 6 0 5 6 1 5 9 9                                                                                   6         _ 9 6 0 5 6 1 6 0 1                                              	                                          =         _ 9 6 0 5 6 1 6 1 0                                                                                   D         r:w推m#33otaMscm64M1#~I|ax<oܲثX^_~̔= 3 up7ag!=k/K597<ٌ%ՙMunNo4F7EsяFȕ#B%S֍|$_-;J<sm>_ ϺnShܤ U%w1LQzZ$IeضK,IDҪAZ@$[LK}IPAe4}`Wi箦r^}r)뱿;1ޝ:                       xVJ@=3S3ED%nEqBAj.|*D"…~u;ͤuD7jp{K׫7`5Scʯ9ㅝ6~>1=}y=~禗g϶&/=j!8k' '`!c/w)<ltSS̊/uc!e1e{flT֘h`Zg.+N:l#Y(mSf#=gjչB
w((\+K42U1Om1Nzxy&6T~h*K̨rc9C3	 e:P7xebHҰame?_M{aY?                    xU=KA}uADCFBBSYFI wKA'h/[ښs6TwM47ofowY@V Ph1eu\eYN꣧MSб>~߸'^-?D	9Μ;YK=.1G&qDyb߳~e)&r~FB&`PH_<\}ʯ}?`oc0:)B^Fv/oL1ϕRŬiDbZCC1|-f I=s[	{eFJcbSg>gɒyرS4Y|;B yY@./֙kK*%ȡDREd`ScW]9B|hs]-e"N9                          `  x\{EfwnnrW6GJ]Br(E.]!exi
QB
D-hQ&(%`U|%Du,u|L+-?oR,0HG3ĉt:mӁ_q`L@E@1PĀRLV{'jZF	hV%OZs`" f6]V&!;כhHHe9GͿ4*v.HI_2r3<5c&D.62wg,*++h!'~_۠O")E›>JjO>X5^BL?ۀe:5F)Ap<$Mx	T!{ԕRd+ĭ4rL$JV]Z`|xx{`?' m'VZZmV[FڨV[k%ZmL-j˴ڸV[VhJJjkZNjFImj'j	v=&74Qyn[,c#"H",aL",a\"	RU"akEX'z6Q+swP$f+Z񄌳W(A,U2iY|Qe;̲d#,Y8-|Z(ۣD2RÙC)nyYy.~s4-8SQLҴuV:y")D	ML8R)fUGS@wV@뇅^4T[EZ.;DxgM犟2OqBX>XJV"C0/w0y)q6HoiMGMyiҔ$$%	4a̞as\l#f7s'bj|3z24̅k<]ojO戋D\u14E+=\̥b<]e%.渆9曹ܓ9b.0f{2+4e<\4q̥qs7s̓\a\\b0O\<\a\\b0Wfz2W4վ#.zsoBOs7s'sQ\ds17i}3.fso'sy7sȓŜ07f6<\̓4;ɓY0/q0<T0LÆH˙CAdo{O634HtA,'Gُ׭h Ҙp}͔Niw[ҐcvJeytZPX:IKOZ 
J˶Ԫ{/}7psi[=l<}/8?ۖJu[޲K=A<fϐmP0};ɆcCiy1}sN-;
RS\rZx*JxRTNö!eʱXo%-8-<ܬ,웬-siqzgHZ6XxŐox%i8-zשzlNzEya|=} _ 9y7(i_ _xsƥijNDWF\ұU_TQy5?<x8O %@-CiDzm[Avᘎ%WM&.ۡ	
–if8F;.ZO<7#^- ȲQX
mqGRtѼo==gWϛ*؋'b\jA9+WoK~NM
Ǘ9uy`O.Ι}S1#[<kw#~HT.C#CFk'ExV-}_>nWtxޏn_o9"w$щUʯ-uH{V.e{iLt;B>5˙}k؝%GxE_aHJB<^~^3䧖>?c{z8V[ŔۥԳgáֺӉ9ދQ#W<Net^Ƕ }y,ґTcϱ@_O'# a`6.\z{,Wr|MQ'KGeY}q>T:3ߟ/EPUq~cŶ!Ol~]X->k׷:U+K,ubc${{ݣbX,t4~t/)ECIICݣ	nOKLOt:kK暮[=oZnUmL+{/T-J}!}orp49!:q0=2YCnQĊDPr$1846)ζ	t)y&Sit KxX,W.OW.5{=y3{_ ~^6_wCaSG186ȹ%n{S)KfK&my^9k"r~)߷(OQoUoWX~(_|?|?|L'g$++obYTS| "/1/O/m/	//b/B/"/!/?5;v쨃Q;㥎:Q/rNG\kt;똣r{K_v̶[5mדfz̶a/v쀙mff3=|Wamv.]vyyv_l7e;oS'LvwNcz۾;9xK;LK?I,oN3o5ħL 8gvˉ4|E!+ǁ}hg|9(ʐl|v8;Hnx䶩gI΋?Ork$sErTV*ZCn1<7ې۪*EVܐh&{}ukh]ֆfC)Zyw9__eEOgakrǁH H H r&kϚ/!~:eYyYZ(y?1&s #9O!SHxl(qI\jɹT/PVqxD<%=!е~tc24}Ñ~B)/TZ@ٟƍXv\,$g"Rsڐ\GKpԁe8ob:6ul:.:,O@	$@	$@	$@q |                                                                                                                                                                                                                                                                                                                                                                               
Index: doc/gutshtml/handout_files/filelist.xml
+++ doc/gutshtml/handout_files/filelist.xml
<xml xmlns:o="urn:schemas-microsoft-com:office:office"> <o:MainFile HRef="::handout.htm"/> <o:File HRef="image001.jpg"/> <o:File HRef="image002.jpg"/> <o:File HRef="image003.jpg"/> <o:File HRef="image004.jpg"/> <o:File HRef="image005.png"/> <o:File HRef="image006.jpg"/> <o:File HRef="image007.jpg"/> <o:File HRef="image008.jpg"/> <o:File HRef="image009.jpg"/> <o:File HRef="image010.jpg"/> <o:File HRef="image011.jpg"/> <o:File HRef="filelist.xml"/></xml>
--www1025296230--