Annotation of doc/gutshtml/SessionThre1.html, revision 1.2
1.2 ! bowersj2 1: <html>
! 2: <head>
! 3: <meta name=Title
! 4: content="Session Three: Publication, Content Maps, Course Maps (Gerd)">
! 5: <meta http-equiv=Content-Type content="text/html; charset=macintosh">
! 6: <title>Session Three: Publication, Content Maps, Course Maps (Gerd)</title>
! 7: <style><!--
! 8: .Section1
! 9: {page:Section1;}
! 10: .Section2
! 11: {page:Section2;}
! 12: -->
! 13: </style>
! 14: </head>
! 15: <body bgcolor=#FFFFFF class="Normal" lang=EN-US>
! 16: <div class=Section1>
! 17: <h2>Session Three: Publication, Content Maps, Course Maps (Gerd)</h2>
! 18: <h3><a name="_Toc514840855"></a><a name="_Toc421867109">Publication of a Resource</a></h3>
! 19: <p>Authors can only write-access the<i> </i><span
! 20: style='font-family:"Courier New";font-style:normal'>/~</span><span
! 21: style='font-family:"Courier New"'><i>authorname</i></span><span
! 22: style='font-family:"Courier New"'>/</span> space. They can copy resources into
! 23: the resource area through the publication step, and move them back through
! 24: a recover step. Authors do not have direct write-access to their resource
! 25: space. </p>
! 26: <div class=Section9>
! 27: <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>
! 28: <p style='border:none;padding:0in'><span
! 29: style='font-size:14.0pt'><b>Construction space</b></span><span
! 30: style='font-size:14.0pt'> </span><span style='font-size:14.0pt;font-family:
! 31: Wingdings'>ˆ</span><span style='font-size:14.0pt'> Publication Step </span><span
! 32: style='font-size:14.0pt;font-family:Wingdings'>ˆ</span><span style='font-size:
! 33: 14.0pt'> <b>Resource space</b></span></p>
! 34: <p style='border:none;padding:0in'><span style='font-size:14.0pt'> </span><span
! 35: style='font-size:14.0pt;font-family:Wingdings'>§</span><span style='font-size:
! 36: 14.0pt'> Retrieve </span><span style='font-size:14.0pt;font-family:Wingdings'>§</span>
! 37: </p>
! 38: </div>
! 39: <p>During the publication step, several events will be triggered. Metadata
! 40: is gathered, where a wizard manages default entries on a hierarchical per-directory
! 41: base: The wizard imports the metadata (including access privileges and royalty
! 42: information) from the most recent published resource in the current directory,
! 43: and if that is not available, from the next directory above, etc. The Network
! 44: keeps all previous versions of a resource and makes them available by an
! 45: explicit version number, which is inserted between the file name and extension,
! 46: for example <span style='font-family:"Courier New"'>foo.2.html</span>, while
! 47: the most recent version does not carry a version number (<span
! 48: style='font-family:"Courier New"'>foo.html</span>). Servers subscribing to a changed
! 49: resource are notified that a new version is available.</p>
! 50: <h3><a name="_Toc514840857"></a><a name="_Toc421867110">Content Re-usage and
! 51: Granularity</a></h3>
! 52: <p>Any faculty participating in the Network can publish their own learning
! 53: resources into the common pool. To that end, the Network provides a Òconstruction
! 54: spaceÓ which is only accessible to the author, and a publication process,
! 55: which transfers the material to the shared pool Ð during the publication
! 56: process, metadata about the resource is gathered, and system-wide update
! 57: notification and versioning mechanisms are triggered..</p>
! 58: <p>Learning resources could be simple paragraphs of text, movies, applets,
! 59: individualizing homework problems, etc. In addition to providing a distributed
! 60: digital library with mechanisms to store and catalog these resources, the
! 61: Network enables faculty to combine and sequence these resources at several
! 62: levels: An instructor from Community College A could combine a text paragraph
! 63: from University B with a movie from College C and an online homework problem
! 64: from Publisher D, to form one page. Another instructor from High School
! 65: E can take that page from Community College A and combine it with other
! 66: pages into a module, unit or chapter. Those in turn can be combined into
! 67: whole coursepacks. Faculty can design their own curricula from existing
! 68: and newly created resources instead of having to buy into a complete off-the-shelf
! 69: product.</p>
! 70: <p><b>Fig. 2.3.1</b><span style='font-weight:normal'> shows a general overview
! 71: of the resource assembly mechanism and the different levels of content granularity
! 72: supported by the current implementation of this principle. The topmost puzzle
! 73: piece represents a resource at the fragment level Ð one GIF, one movie,
! 74: one paragraph of text, one problem, or one regular web page. Attached to
! 75: the resource is metadata gathered at the publication time of the resource.</span></p>
! 76: <p>Using the resource assembly tool described below, these fragments and pages
! 77: can be assembled into a page. A page is a resource of the grain size which
! 78: would be rendered as one page on the web and/or on the printer.</p>
! 79: <p>Using the same tool, fragments (which would then be rendered as standalone
! 80: pages), pages and sequences can be assembled into sequences. Sequences are
! 81: resources which are rendered a sequence of pages, not necessarily linear.
! 82: Examples are one lesson, one chapter, or one learning cycle</p>
! 83: <p>On the third granularity level, fragments (rendered as standalone pages),
! 84: pages, and sequences can be assembled into courses. Courses are a sequence
! 85: which represents the entirety of the resources belonging to a learning unit
! 86: into which learners can be enrolled. Examples are a University one-semester
! 87: course, a</p>
! 88: <p>workshop, or a High School class.</p>
! 89: <p align=center style='text-align:center'><img border=0
! 90: width=291 height=436 id="_x0000_i1029" src="handout_files/image005.png"></p>
! 91: <p><span style='font-size:14.0pt'><b>Fig. 2.1.1</b></span><span
! 92: style='font-size:14.0pt'> Ð Resource Assembly</span></p>
! 93: <h3><a name="_Toc514840858"></a><a name="_Toc421867111">Maps</a></h3>
! 94: <p>To increase the utility of the materials, the number of hard-coded hyperlinks
! 95: between the resources should be minimized. The actual combining and sequencing
! 96: is part of the system functionality and driven by external "roadmaps",
! 97: which are constructed by the instructors. With this mechanism, one and the
! 98: same resource can be part of different courses in different contexts. The
! 99: soft-linking makes it possible to import only the desired set of resources
! 100: without effectively importing additional parts another instructors resources
! 101: through hard-linked menus or "next page" buttons that might resided
! 102: on those resources.</p>
! 103: <h3><a name="_Toc514840859"></a><a name="_Toc421867112">Curriculum Adaptivity</a></h3>
! 104: <p>Maps allow for conditional choices and branching points. The actual path
! 105: through and presentation of the learning resources is determined by instructor-specified
! 106: combinations of learner choices and system-generated adaptations (for example,
! 107: if the learner does not pass a test, additional resources may be included).
! 108: Each learner can have an individualized curriculum according to preferences,
! 109: capabilities and skills.</p>
! 110: <p>These maps can be generated at different levels of granularity with a graphical
! 111: tool, or in an automated way through custom scripts.</p>
! 112: <h3><a name="_Toc514840860"></a><a name="_Toc421867113">Resource Assembly
! 113: Tool</a></h3>
! 114: <p>The Network provides the Resource Assembly Tool as one means to generate
! 115: maps. The Resource Assembly Tool provides a graphical user interface inside
! 116: of a standard web browser. The current implementation is written in JavaScript.
! 117: </p>
! 118: <p><b>Fig. 2.3.2</b><span style='font-weight:normal'> shows screenshots of
! 119: the current implementation. The interface usually consists of two browser
! 120: windows, one resizable one with a frameset that contains the menu and the
! 121: map under construction, and a multipurpose non-resizable window that displays
! 122: information and input forms.</span></p>
! 123: <p>When a new map is started, it only has a start and a finish resources.
! 124: The author can then enlarge the map area and insert resources into it.</p>
! 125: <p>In <b>Fig. 2.3.2A</b><span style='font-weight:normal'>, the author is editing
! 126: information about a resource in the map after clicking on the box representing
! 127: the resource in the map. In the dialog, the author can enter a map-internal
! 128: title for the resource, which is displayed to the learners when navigating
! 129: the maps. In the same dialog, the author will specify the URL of the resource,
! 130: which can either be internal to the Network, or any URL of a web page outside
! 131: of it. For internal resources, the author can also browse the Network filesystem
! 132: or search the resource metadata to locate an appropriate resource.</span></p>
! 133: <p><span style='font-size:14.0pt'><b><img border=0 width=431
! 134: height=327 id="_x0000_i1030" src="handout_files/image006.jpg">Fig. 2.3.2A</b></span><span
! 135: style='font-size:14.0pt'> Ð </span><span style='font-size:12.0pt'>Example, Graphical
! 136: User Interface of Resource Assembly Tool</span></p>
! 137: <p>The resource priority can be chosen. A resource can be Òregular,Ó ÒmandatoryÓ
! 138: or Òoptional.Ó These resource priorities are only used in book-keeping of
! 139: earned points by the learners. Within the map, resources of different priorities
! 140: are displayed in different colors.</p>
! 141: <p>The dialog also allows for two modes of removing the resource from the
! 142: map: deleting it from the map including every link to and from it, and deleting
! 143: it while reconnecting any links that went through the resource. As an example,
! 144: resources A and B might both connect to resource C, and resource C might
! 145: connect to D. When removing C from the map using the first option, A and
! 146: B will not be connected to D anymore. Using the second option, in the end,
! 147: A will connect to D, and B will connect to D. In the latter case, the Resource
! 148: Assembly tool will also handle link conditions correctly: if A connected
! 149: to C under condition 1, and C connected to D under condition 2, then in
! 150: the end A will connect to D under a new condition which is (1 AND 2).</p>
! 151: <p>Finally, this dialog allows the author to connect the resource to another
! 152: resource (or itself) through a new link. When selecting this option, the
! 153: Resource Assembly Tool goes into link mode, and will link the current resource
! 154: to the next resource clicked on (unless the action is cancelled).</p>
! 155: <p><img border=0 width=431 height=327 id="_x0000_i1031"
! 156: src="handout_files/image007.jpg"></p>
! 157: <p><span style='font-size:14.0pt'><b>Fig. 2.3.2B</b></span><span
! 158: style='font-size:14.0pt'> Ð </span><span style='font-size:12.0pt'>Example, Graphical
! 159: User Interface of Resource Assembly Tool</span></p>
! 160: <p><b>Fig. 2.3.2B</b><span style='font-weight:normal'> shows the Resource
! 161: Assembly Tool in info mode, that is, when no specific component of the map
! 162: is edited, and if the Tool is not in link mode. In info mode, the contents
! 163: of the dialog window change dynamically as the mouse is moved over the components
! 164: of the map. In this case, the mouse pointer is over the link condition between
! 165: two resources. The dialog window shows the titles of the connected resources,
! 166: as well as the condition priority. In this scenario, the condition priority
! 167: is set such that the link cannot be taken (Òis blockedÓ) if the condition
! 168: is false. The condition priority can also be set such that the link is recommended
! 169: if the condition is true (possibly giving the learner several options where
! 170: to go next), or that the link has to be taken (Òis forcedÓ) over any other
! 171: possible link if the condition is true. Within the map, conditions of different
! 172: priorities are displayed in different colors. If the author now were to
! 173: click on the condition, the Tool would go into edit mode, and the condition
! 174: could be edited.</span></p>
! 175: <p><b>Fig. 2.3.2C</b><span style='font-weight:normal'> shows the Tool in edit
! 176: mode for the link between the resource titles displayed. The author can
! 177: remove the link, or insert a new resource into the link.</span></p>
! 178: <p>Obviously, by this mechanism, rather complex maps can be generated. These
! 179: are different from binary trees, both because branches can loop back, and
! 180: because branches can be re-united Ð in fact, most branches re-unite in the
! 181: finish resources. Into each link, a condition with one of three different
! 182: priorities can be attached. Whether or not a certain resource in the map
! 183: can be displayed depends on whether or not it can be reached through any
! 184: path along allowed links, starting with the start resource of the course.
! 185: If a resource is not linked to, it is assumed to be accessible if the map
! 186: which it is part of is accessible.</p>
! 187: <p><img border=0 width=431 height=327 id="_x0000_i1032"
! 188: src="handout_files/image008.jpg"></p>
! 189: <p><span style='font-size:14.0pt'><b>Fig. 2.3.2C</b></span><span
! 190: style='font-size:14.0pt'> Ð </span><span style='font-size:12.0pt'>Example, Graphical
! 191: User Interface of Resource Assembly Tool </span></p>
! 192: <h3><a name="_Toc514840861"></a><a name="_Toc421867114">Map Representation
! 193: and Storage Format</a></h3>
! 194: <p><b>Fig. 2.3.3</b><span style='font-weight:normal'> shows the XML representation
! 195: of the resource map constructed in </span><b>Fig. 2.3.2</b><span
! 196: style='font-weight:normal'>, which is the format in which maps are stored. In
! 197: the figure, however, additional graphical map layout information generated
! 198: by the Resource Assembly Tool is not displayed. This graphical information
! 199: is optional to re-generate the same graphical layout when the map is brought
! 200: up again in the Resource Assembly Tool, and is not needed for any other
! 201: system functionality.</span></p>
! 202: <p>Maps can be generated by tools other than the Resource Assembly Tool. In
! 203: particular, an author might have some other representation of a course sequence,
! 204: which can be converted into a map using scripts. If this map then were to
! 205: be brought up in the Resource Assembly Tool, the Tool would automatically
! 206: generate a graphical layout for it. Each entry of the map (resources, conditions
! 207: and links) is stored in a separate tag. </p>
! 208: <p>Resources and conditions have to have unique ID numbers. These numbers
! 209: are automatically generated by the Resource Assembly Tool when the entry
! 210: is first created, or added to the entries when a map generated outside the
! 211: Resource Assembly Tool is first retrieved. They can also be assigned by
! 212: custom scripts or added in by hand.</p>
! 213: <p>In this example, <b>Fig. 2.3.3</b><span style='font-weight:
! 214: normal'>, entry 1 is the start resource of the map Ð when this map is accessed,
! 215: the source (src) URL of this tag will be the first resource rendered. Entry
! 216: 2 is the finish resource of this map. This resource will be the last resource
! 217: in the sequence of resources. Entry 6 is a problem resource with the given
! 218: URL and title, as well as the priority ÒmandatoryÓ. Entry 19 is a condition,
! 219: which is used by the link between entries 6, the problem, and 9, a sequence.
! 220: <i>The final syntax for conditions has not yet been determined.</i></span></p>
! 221: <table border=1 cellspacing=0 cellpadding=0>
! 222: <tr>
! 223: <td width=443 valign=top class="Normal">
! 224: <p class=Preformatted><span style='font-size:8.0pt'><map></span></p>
! 225: <p class=Preformatted><span style='font-size:8.0pt'><resource id="1"
! 226: </span></p>
! 227: <p class=Preformatted><span style='font-size:8.0pt'> src="/res/msu/korte/phy231welcome.html"
! 228: </span></p>
! 229: <p class=Preformatted><span style='font-size:8.0pt'> type="start"
! 230: </span></p>
! 231: <p class=Preformatted><span style='font-size:8.0pt'> title="Start"></resource></span></p>
! 232: <p class=Preformatted><span style='font-size:8.0pt'><resource id="2"
! 233: </span></p>
! 234: <p class=Preformatted><span style='font-size:8.0pt'> src=""
! 235: type="finish" </span></p>
! 236: <p class=Preformatted><span style='font-size:8.0pt'> title="Finish"></resource></span></p>
! 237: <p class=Preformatted><span style='font-size:8.0pt'><resource id="6"
! 238: </span></p>
! 239: <p class=Preformatted><span style='font-size:8.0pt'> src="/res/msu/korte/tests/units.problem"
! 240: </span></p>
! 241: <p class=Preformatted><span style='font-size:8.0pt'> type="mandatory"
! 242: </span></p>
! 243: <p class=Preformatted><span style='font-size:8.0pt'> title="Physical
! 244: Units Test"></resource></span></p>
! 245: <p class=Preformatted><span style='font-size:8.0pt'><resource id="9"
! 246: </span></p>
! 247: <p class=Preformatted><span style='font-size:8.0pt'> src="/res/msu/korte/chapters/onedim.sequence"
! 248: </span></p>
! 249: <p class=Preformatted><span style='font-size:8.0pt'> title="Motion
! 250: in One Dimension"></resource></span></p>
! 251: <p class=Preformatted><span style='font-size:8.0pt'><resource id="11"
! 252: </span></p>
! 253: <p class=Preformatted><span style='font-size:8.0pt'> src="/res/msu/bauer/bridges/units.sequence"
! 254: </span></p>
! 255: <p class=Preformatted><span style='font-size:8.0pt'> title="Physical
! 256: Units Refresher"></resource></span></p>
! 257: <p class=Preformatted><span style='font-size:8.0pt'><condition id="19"
! 258: </span></p>
! 259: <p class=Preformatted><span style='font-size:8.0pt'> type="stop"
! 260: </span></p>
! 261: <p class=Preformatted><span style='font-size:8.0pt'> value="user.assessments[this./res/msu/korte/tests/units.problem].status=solved"></span></p>
! 262: <p class=Preformatted><span style='font-size:8.0pt'> </condition></span></p>
! 263: <p class=Preformatted><span style='font-size:8.0pt'><link from="1"
! 264: to="6"></link></span></p>
! 265: <p class=Preformatted><span style='font-size:8.0pt'><link from="6"
! 266: to="9" condition="19"></link></span></p>
! 267: <p class=Preformatted><span style='font-size:8.0pt'><link from="6"
! 268: to="11"></link></span></p>
! 269: <p class=Preformatted><span style='font-size:8.0pt'><link from="11"
! 270: to="6"></link></span></p>
! 271: <p class=Preformatted><span style='font-size:8.0pt'></map></span></p>
! 272: </td>
! 273: </tr>
! 274: </table>
! 275: <p><span style='font-size:14.0pt'><b>Fig. 2.3.3</b></span><span
! 276: style='font-size:14.0pt'> Ð XML representation of the map in Fig. 2.3.2C (non-graphical
! 277: information only).</span></p>
! 278: <h3><a name="_Toc514840866"></a><a name="_Toc514840862"></a><a
! 279: name="_Toc514920452"></a><a name="_Toc421867115">Example of Nested Maps</a></h3>
! 280: <p><b>Fig. 2.3.4 </b><span style='font-weight:normal'>shows the XML representation
! 281: of three maps which are imported into each other. </span><b>Fig. 2.3.4B</b><span style='font-weight:normal'>
! 282: is the sequence that is referenced as resource 9 in the course map </span><b>Fig.
! 283: 2.3.4A</b><span
! 284: style='font-weight:normal'>. In the resulting map, the entry point of resource
! 285: 9 in </span><b>Fig. 2.3.4A</b><span style='font-weight:normal'> is in fact
! 286: the entry point of the start resource of </span><b>Fig. 2.3.4B</b><span
! 287: style='font-weight:normal'>, namely, resource 1 there. The exit point of resource
! 288: 9 in </span><b>Fig. 2.3.4A</b><span style='font-weight:normal'> is the exit
! 289: point of the finish resource of </span><b>Fig. 2.3.4B</b><span
! 290: style='font-weight:normal'>, namely, resource 2 there.</span></p>
! 291: <p><b>Fig. 2.3.4C</b><span style='font-weight:normal'> is the page which is
! 292: referenced as resource 24 in </span><b>Fig. 2.3.4B</b><span
! 293: style='font-weight:normal'>.</span></p>
! 294: <p>A course can easily contain several hundreds of these nested maps. Since
! 295: the accessibility of each individual resource in the course depends on the
! 296: state of all possible paths linking it to the start resource of the course
! 297: across all intermediate maps, the computation and disk-I/O effort per single
! 298: transaction could quickly become prohibitive. Thus, all maps and conditions
! 299: are compiled into a pre-processed binary data structure at the start of
! 300: a session.</p>
! 301: <table border=1 cellspacing=0 cellpadding=0>
! 302: <tr>
! 303: <td width=442 valign=top class="Normal">
! 304: <p class=Preformatted><span style='font-size:8.0pt'><map></span></p>
! 305: <p class=Preformatted><span style='font-size:8.0pt'><resource id="1"
! 306: src="" type="start" title="Start"></resource></span></p>
! 307: <p class=Preformatted><span style='font-size:8.0pt'><resource id="2"
! 308: src="" type="finish" title="Finish"></resource></span></p>
! 309: <p class=Preformatted><span style='font-size:8.0pt'><resource id="5"
! 310: src="/res/msu/korte/tests/pretest.problem" type="mandatory"
! 311: </span></p>
! 312: <p class=Preformatted><span style='font-size:8.0pt'> title="Pretest"></resource></span></p>
! 313: <p class=Preformatted><span style='font-size:8.0pt'><resource id="9"
! 314: src="/res/msu/korte/parts/part1.sequence" type="mandatory"
! 315: </span></p>
! 316: <p class=Preformatted><span style='font-size:8.0pt'> title="Part
! 317: 1"></resource></span></p>
! 318: <p class=Preformatted><span style='font-size:8.0pt'><resource id="11"
! 319: src="/res/msu/korte/tests/midterm.sequence" type="mandatory"
! 320: </span></p>
! 321: <p class=Preformatted><span style='font-size:8.0pt'> title="Midterm"></resource></span></p>
! 322: <p class=Preformatted><span style='font-size:8.0pt'><resource id="15"
! 323: src="/res/msu/korte/parts/part2.sequence" type="mandatory"
! 324: </span></p>
! 325: <p class=Preformatted><span style='font-size:8.0pt'> title="Part
! 326: 2"></resource></span></p>
! 327: <p class=Preformatted><span style='font-size:8.0pt'><condition id="19"
! 328: type="stop" </span></p>
! 329: <p class=Preformatted><span style='font-size:8.0pt'> value="user.assessments[this./msu/korte/tests/pretest.problem].status=solved"></span></p>
! 330: <p class=Preformatted><span style='font-size:8.0pt'> </condition></span></p>
! 331: <p class=Preformatted><span style='font-size:8.0pt'><resource id="20"
! 332: src="/res/msu/korte/refresh/refresher.sequence" </span></p>
! 333: <p class=Preformatted><span style='font-size:8.0pt'> title="Refresher"></resource></span></p>
! 334: <p class=Preformatted><span style='font-size:8.0pt'><resource id="29"
! 335: src="/res/msu/korte/tests/final.sequence" type="mandatory"
! 336: </span></p>
! 337: <p class=Preformatted><span style='font-size:8.0pt'> title="Final
! 338: Exam"></resource></span></p>
! 339: <p class=Preformatted><span style='font-size:8.0pt'><condition id="30"
! 340: type="stop" </span></p>
! 341: <p class=Preformatted><span style='font-size:8.0pt'> value="user.assessments[this./msu/korte/tests/midterm.sequence].percent>60"></span></p>
! 342: <p class=Preformatted><span style='font-size:8.0pt'> </condition></span></p>
! 343: <p class=Preformatted><span style='font-size:8.0pt'><resource id="36"
! 344: src="/res/msu/korte/refresh/review.sequence"</span></p>
! 345: <p class=Preformatted><span style='font-size:8.0pt'> title="Review"></resource></span></p>
! 346: <p class=Preformatted><span style='font-size:8.0pt'><condition id="43"
! 347: type="force" </span></p>
! 348: <p class=Preformatted><span style='font-size:8.0pt'> value="user.assessments[this./msu/korte/tests/midterm.sequence].percent<10"></span></p>
! 349: <p class=Preformatted><span style='font-size:8.0pt'> </condition></span></p>
! 350: <p class=Preformatted><span style='font-size:8.0pt'><resource id="58"
! 351: src="/res/msu/korte/chapters/applications.sequence" type="optional"
! 352: </span></p>
! 353: <p class=Preformatted><span style='font-size:8.0pt'> title="Applications"></resource></span></p>
! 354: <p class=Preformatted><span style='font-size:8.0pt'><condition id="70"
! 355: type="stop" </span></p>
! 356: <p class=Preformatted><span style='font-size:8.0pt'> value="user.assessments[this./msu/korte/tests/final.sequence].percent>60"></span></p>
! 357: <p class=Preformatted><span style='font-size:8.0pt'> </condition></span></p>
! 358: <p class=Preformatted><span style='font-size:8.0pt'><link from="1"
! 359: to="5"></link></span></p>
! 360: <p class=Preformatted><span style='font-size:8.0pt'><link from="9"
! 361: to="11"></link></span></p>
! 362: <p class=Preformatted><span style='font-size:8.0pt'><link from="11"
! 363: to="15" condition="30"></link></span></p>
! 364: <p class=Preformatted><span style='font-size:8.0pt'><link from="5"
! 365: to="9" condition="19"></link></span></p>
! 366: <p class=Preformatted><span style='font-size:8.0pt'><link from="5"
! 367: to="20"></link></span></p>
! 368: <p class=Preformatted><span style='font-size:8.0pt'><link from="20"
! 369: to="5"></link></span></p>
! 370: <p class=Preformatted><span style='font-size:8.0pt'><link from="11"
! 371: to="36" condition="43"></link></span></p>
! 372: <p class=Preformatted><span style='font-size:8.0pt'><link from="36"
! 373: to="9"></link></span></p>
! 374: <p class=Preformatted><span style='font-size:8.0pt'><link from="36"
! 375: to="11"></link></span></p>
! 376: <p class=Preformatted><span style='font-size:8.0pt'><link from="15"
! 377: to="29"></link></span></p>
! 378: <p class=Preformatted><span style='font-size:8.0pt'><link from="29"
! 379: to="2" condition="70"></link></span></p>
! 380: <p class=Preformatted><span style='font-size:8.0pt'><link from="11"
! 381: to="11"></link></span></p>
! 382: <p class=Preformatted><span style='font-size:8.0pt'></map></span></p>
! 383: </td>
! 384: </tr>
! 385: </table>
! 386: <p><span style='font-size:14.0pt'><b>Fig. 2.3.4A</b></span><span
! 387: style='font-size:14.0pt'> Ð Example of a course map that has nested sequences</span></p>
! 388: <br clear=ALL
! 389: style='page-break-before:always'>
! 390: <table border=1 cellspacing=0 cellpadding=0>
! 391: <tr>
! 392: <td width=442 valign=top class="Normal">
! 393: <p class=Preformatted><span style='font-size:8.0pt'><map></span></p>
! 394: <p class=Preformatted><span style='font-size:8.0pt'><resource id="1"
! 395: src="" type="start" title="Start"></resource></span></p>
! 396: <p class=Preformatted><span style='font-size:8.0pt'><resource id="2"
! 397: src="" type="finish" title="Finish"></resource></span></p>
! 398: <p class=Preformatted><span style='font-size:8.0pt'><resource id="5"
! 399: src="/res/msu/korte/parts/part1intro.html" </span></p>
! 400: <p class=Preformatted><span style='font-size:8.0pt'> title="Part
! 401: 1 Introduction"></resource></span></p>
! 402: <p class=Preformatted><span style='font-size:8.0pt'><resource id="6"
! 403: src="/res/msu/korte/parts/part1dir.xml" title="Directions"></resource></span></p>
! 404: <p class=Preformatted><span style='font-size:8.0pt'><resource id="12"
! 405: src="/res/msu/korte/tests/part11.problem" title="Problem
! 406: 1"></resource></span></p>
! 407: <p class=Preformatted><span style='font-size:8.0pt'><resource id="13"
! 408: src="/res/msu/korte/tests/part13.problem" title="Problem
! 409: 3"></resource></span></p>
! 410: <p class=Preformatted><span style='font-size:8.0pt'><resource id="19"
! 411: src="/res/msu/korte/tests/part12.problem" title="Problem
! 412: 2"></resource></span></p>
! 413: <p class=Preformatted><span style='font-size:8.0pt'><resource id="24"
! 414: src="/res/msu/korte/parts/summary.page" title="Summary"></resource></span></p>
! 415: <p class=Preformatted><span style='font-size:8.0pt'><condition id="47"
! 416: type="stop"</span></p>
! 417: <p class=Preformatted><span style='font-size:8.0pt'> value="user.assessments[this./msu/korte/tests/part11.problem].status=solved"></span></p>
! 418: <p class=Preformatted><span style='font-size:8.0pt'> </condition></span></p>
! 419: <p class=Preformatted><span style='font-size:8.0pt'><condition id="48"
! 420: type="stop" </span></p>
! 421: <p class=Preformatted><span style='font-size:8.0pt'> value="user.assessments[this./msu/korte/tests/part12.problem].status=solved"></span></p>
! 422: <p class=Preformatted><span style='font-size:8.0pt'> </condition></span></p>
! 423: <p class=Preformatted><span style='font-size:8.0pt'><condition id="49"
! 424: type="stop" </span></p>
! 425: <p class=Preformatted><span style='font-size:8.0pt'> value="user.assessments[this./msu/korte/tests/part13.problem].status=solved"></span></p>
! 426: <p class=Preformatted><span style='font-size:8.0pt'> </condition></span></p>
! 427: <p class=Preformatted><span style='font-size:8.0pt'><link from="5"
! 428: to="6"></link></span></p>
! 429: <p class=Preformatted><span style='font-size:8.0pt'><link from="1"
! 430: to="5"></link></span></p>
! 431: <p class=Preformatted><span style='font-size:8.0pt'><link from="6"
! 432: to="12"></link></span></p>
! 433: <p class=Preformatted><span style='font-size:8.0pt'><link from="6"
! 434: to="13"></link></span></p>
! 435: <p class=Preformatted><span style='font-size:8.0pt'><link from="6"
! 436: to="19"></link></span></p>
! 437: <p class=Preformatted><span style='font-size:8.0pt'><link from="12"
! 438: to="24" condition="47"></link></span></p>
! 439: <p class=Preformatted><span style='font-size:8.0pt'><link from="19"
! 440: to="24" condition="48"></link></span></p>
! 441: <p class=Preformatted><span style='font-size:8.0pt'><link from="13"
! 442: to="24" condition="49"></link></span></p>
! 443: <p class=Preformatted><span style='font-size:8.0pt'><link from="24"
! 444: to="2"></link></span></p>
! 445: <p class=Preformatted><span style='font-size:8.0pt'></map></span></p>
! 446: </td>
! 447: </tr>
! 448: </table>
! 449: <p><span style='font-size:14.0pt'><b>Fig. 2.3.4B</b></span><span
! 450: style='font-size:14.0pt'> Ð Example of a sequence (</span><span
! 451: style='font-size:14.0pt;font-family:"Courier New"'>part1.sequence</span><span
! 452: style='font-size:14.0pt'>) that has nested pages</span></p>
! 453: <table border=1 cellspacing=0 cellpadding=0>
! 454: <tr>
! 455: <td width=443 valign=top class="Normal">
! 456: <p class=Preformatted><span style='font-size:8.0pt'><map></span></p>
! 457: <p class=Preformatted><span style='font-size:8.0pt'><resource id="1"
! 458: src="" type="start" title="Start"></resource></span></p>
! 459: <p class=Preformatted><span style='font-size:8.0pt'><resource id="2"
! 460: src="" type="finish" title="Finish"></resource></span></p>
! 461: <p class=Preformatted><span style='font-size:8.0pt'><resource id="5"
! 462: src="/res/msu/smith/racecar.problem"></resource></span></p>
! 463: <p class=Preformatted><span style='font-size:8.0pt'><resource id="6"
! 464: src="/res/msu/smith/toofast.html"></resource></span></p>
! 465: <p class=Preformatted><span style='font-size:8.0pt'><resource id="8"
! 466: src="/res/msu/smith/tooslow.html"></resource></span></p>
! 467: <p class=Preformatted><span style='font-size:8.0pt'><resource id="15"
! 468: src="/res/msu/smith/accelerate.html"></resource></span></p>
! 469: <p class=Preformatted><span style='font-size:8.0pt'><condition id="40"
! 470: type="force" </span></p>
! 471: <p class=Preformatted><span style='font-size:8.0pt'> value="user.assessments[this./msu/smith/racecar.problem].status=solved"></condition></span></p>
! 472: <p class=Preformatted><span style='font-size:8.0pt'><condition id="41"
! 473: type="stop" </span></p>
! 474: <p class=Preformatted><span style='font-size:8.0pt'> value="user.assessments[this./msu/smith/racecar.problem].answer=friction"></condition></span></p>
! 475: <p class=Preformatted><span style='font-size:8.0pt'><condition id="42"
! 476: type="stop" </span></p>
! 477: <p class=Preformatted><span style='font-size:8.0pt'> value="user.assessments[this./msu/smith/racecar.problem].answer=sliding"></condition></span></p>
! 478: <p class=Preformatted><span style='font-size:8.0pt'><condition id="43"
! 479: type="stop" </span></p>
! 480: <p class=Preformatted><span style='font-size:8.0pt'>value="user.assessments[this./msu/smith/racecar.problem].answer=nonconstant"></condition></span></p>
! 481: <p class=Preformatted><span style='font-size:8.0pt'><link from="1"
! 482: to="5"></link></span></p>
! 483: <p class=Preformatted><span style='font-size:8.0pt'><link from="5"
! 484: to="6" condition="41"></link></span></p>
! 485: <p class=Preformatted><span style='font-size:8.0pt'><link from="5"
! 486: to="8" condition="42"></link></span></p>
! 487: <p class=Preformatted><span style='font-size:8.0pt'><link from="5"
! 488: to="15" condition="43"></link></span></p>
! 489: <p class=Preformatted><span style='font-size:8.0pt'><link from="6"
! 490: to="2"></link></span></p>
! 491: <p class=Preformatted><span style='font-size:8.0pt'><link from="8"
! 492: to="2"></link></span></p>
! 493: <p class=Preformatted><span style='font-size:8.0pt'><link from="15"
! 494: to="2"></link></span></p>
! 495: <p class=Preformatted><span style='font-size:8.0pt'><link from="5"
! 496: to="2" condition="40"></link></span></p>
! 497: <p class=Preformatted><span style='font-size:8.0pt'></map></span></p>
! 498: </td>
! 499: </tr>
! 500: </table>
! 501: <p><span style='font-size:14.0pt'><b>Fig. 2.3.4C</b></span><span
! 502: style='font-size:14.0pt'> Ð Example of a page (</span><span style='font-size:
! 503: 14.0pt;font-family:"Courier New"'>summary.page</span><span style='font-size:
! 504: 14.0pt'>)</span></p>
! 505: <br clear=ALL
! 506: style='page-break-before:always'>
! 507: <p><span style='font-size:14.0pt'><img border=0 width=432
! 508: height=456 id="_x0000_i1033" src="handout_files/image009.jpg"></span></p>
! 509: <p><span style='font-size:14.0pt'><b>Fig. 2.3.5 Ð </b></span><span
! 510: style='font-size:14.0pt'>Flow chart of the course initialization routine run when
! 511: a learner first accesses a course during a session (see Figs. 2.1.6A and
! 512: 2.1.8A for the procedures </span><span style='font-size:14.0pt;font-family:
! 513: "Courier New"'>loadmap</span><span style='font-size:14.0pt'> and </span><span
! 514: style='font-size:14.0pt;font-family:"Courier New"'>traceroute</span><span
! 515: style='font-size:14.0pt'>)</span></p>
! 516: <h3><a name="_Toc514840863"></a><a name="_Toc514920453"></a><a
! 517: name="_Toc421867116">Initialization of a Course for a Learner</a></h3>
! 518: <p>When a learner first enters a course during a session, the system will
! 519: initialize this course for the learner. In particular, at this point, the
! 520: course map and all nested (embedded) maps and resources are evaluated, and
! 521: the information is compiled into two binary structures, which are stored
! 522: with the session information: the resource properties hash, and the link
! 523: conditions array. This information will be used over the duration of the
! 524: session for several purposes: navigation (which resource is the next, which
! 525: one the previous?), for access control (can the resource be reached under
! 526: the link conditions given the current state of the student?), and to register
! 527: assessment results within the context of a certain course and map (there
! 528: might be several instances of the same problem resource within a course).</p>
! 529: <h3><a name="_Toc514840864"></a><a name="_Toc514920454"></a><a
! 530: name="_Toc421867117">Evaluation of the Map Structure for a Course</a></h3>
! 531: <p>The URL of the course is passed to the procedure <span
! 532: style='font-family:"Courier New"'>readmap</span> (<b>Fig. 2.3.5</b><span
! 533: style='font-weight:normal'>). Procedure </span><span style='font-family:"Courier New"'>readmap</span>
! 534: first initializes the resource properties as an empty hash, seeds the link
! 535: conditions array with a 0<sup>th</sup> element, which is set to ÒtrueÓ,
! 536: priority ÒnormalÓ, and sets the map counter to 0 (<b>Fig. 2.3.5, Step R1</b><span
! 537: style='font-weight:normal'>). While the resource properties hash, the link conditions
! 538: array and the map counter are global variable of the initialization process,
! 539: all other variables are local to the procedures (an important property for
! 540: these routines to run recursively). The procedure </span><span
! 541: style='font-family:"Courier New"'>readmap</span> then calls procedure <span
! 542: style='font-family:"Courier New"'>loadmap</span> for the URL of the course (<b>Fig.
! 543: 2.3.5, Step R2</b><span style='font-weight:normal'>).</span></p>
! 544: <p><b>Figs. 2.1.6, 2.1.7</b><span style='font-weight:normal'> show a dump
! 545: of excerpts of the binary structure generated in </span><span
! 546: style='font-family:"Courier New"'>loadmap</span> for the nested maps of example
! 547: <b>Fig. 2.3.4</b><span style='font-weight:normal'>.</span></p>
! 548: <p>Procedure <span style='font-family:"Courier New"'>loadmap</span> (<b>Fig.
! 549: 2.3.6A</b><span style='font-weight:normal'>) first checks if the map URL
! 550: has already been processed (multiple inclusion of the same map in a course
! 551: structure) (</span><b>Fig. 2.3.6A, Step L1</b><span style='font-weight:normal'>)
! 552: Ð if it was, it has been assigned a map counter value in the resource properties
! 553: hash. If the map has been processed, there is no need to process it again,
! 554: and </span><span style='font-family:"Courier New"'>loadmap</span> returns.</p>
! 555: <p>If the map has not been processed yet, the map counter is incremented and
! 556: the map is registered under the current value in the resource properties
! 557: hash (<b>Fig. 2.3.6A, Step L2</b><span style='font-weight:normal'>). The
! 558: file is then opened (</span><b>Fig. 2.3.6A, Step L3</b><span
! 559: style='font-weight:normal'>), which might entail prior replication, and the contents
! 560: are parsed. If there are no further entries, </span><span
! 561: style='font-family:"Courier New"'>loadmap</span> returns (<b>Fig. 2.3.6A, Step
! 562: L4</b><span style='font-weight:normal'>).</span></p>
! 563: <p>The new entry tag is then read (<b>Fig. 2.3.6A, Step L5</b><span
! 564: style='font-weight:normal'>) and the type is determined (</span><b>Fig. 2.3.6A,
! 565: Step L6</b><span style='font-weight:normal'>). </span></p>
! 566: <p>If the entry is a resource (<b>Step L7</b><span
! 567: style='font-weight:normal'>), a resource ID is formed by combining the map counter
! 568: and the resource ID within the map. For example, the ÒPart I IntroductionÓ
! 569: resource of part1.sequence (</span><b>Fig. 2.3.4B</b><span
! 570: style='font-weight:normal'>) was assigned the resource ID 2.5, since it has the
! 571: internal resource ID 5 in the 2<sup>nd</sup> map processed (see </span><b>Fig.
! 572: 2.3.6B</b><span style='font-weight:normal'> under Òids_Ó). If the same URL
! 573: is found again, additional IDs are assigned to it. It is necessary to store
! 574: the IDs under the URL in the resource properties hash for reverse lookup
! 575: if a user simply requests a URL. If the resource is a start or finish resources,
! 576: the resource ID is registered as the start or finish resource of the map,
! 577: respectively (</span><b>Fig. 2.3.6B</b><span style='font-weight:normal'>,
! 578: Òmap_start_Ó, Òmap_finish_Ó). The properties of the resource (URL, Title,
! 579: Priority, etc) are now stored under the resource ID, see for example </span><b>Fig.
! 580: 2.3.6B</b><span
! 581: style='font-weight:normal'> Òtitle_2.5Ó.</span></p>
! 582: <p>If the resource is not a map itself (<b>Fig. 2.3.6A</b><span
! 583: style='font-weight:normal'>, </span><b>Step L8</b><span style='font-weight:
! 584: normal'>), the next entry is read. Otherwise, procedure </span><span
! 585: style='font-family:"Courier New"'>loadmap </span>calls itself recursively to process
! 586: that map (<b>Step L9</b><span style='font-weight:normal'>).</span></p>
! 587: <p>If in <b>Step L6</b><span style='font-weight:normal'>, the type of the
! 588: entry was determined to be a condition, a condition ID is formed (</span><b>Step
! 589: L10</b><span style='font-weight:normal'>) by again combining the map counter
! 590: with the internal ID. The condition is also added to the end of the condition
! 591: array (see </span><b>Fig. 10</b><span style='font-weight:normal'>), which
! 592: is a compilation of all conditions in the course (</span><b>Step L11</b><span
! 593: style='font-weight:normal'>). The conditions in this array are evaluated when
! 594: a transaction occurs that could change the state of the student, and the
! 595: state of each condition is stored by the index number in the session environment.
! 596: A reference to the index number in the condition array is stored under the
! 597: condition ID (</span><b>Fig. 2.3.6D</b><span style='font-weight:normal'>,
! 598: Òcondid_Ó).</span></p>
! 599: <p>If the entry is a link (<b>Step L6</b><span
! 600: style='font-weight:normal'>), a link ID is generated (</span><b>Step L12</b><span
! 601: style='font-weight:normal'>). This ID is formed by combining the map counter and
! 602: another counter which is incremented for every new link within the map.
! 603: Under this ID, the IDs of the originating and the destination resource of
! 604: the link are stored, as well as that of the link condition (</span><b>Fig.
! 605: 2.3.6D</b><span
! 606: style='font-weight:normal'>). For the originating resource, in </span><b>Step
! 607: L13 </b><span style='font-weight:normal'>the link ID is added to the list
! 608: of outgoing links (</span><b>Fig. 2.3.6C</b><span style='font-weight:normal'>,
! 609: Òto_Ó), and for the destination resource, the link ID is added to the list
! 610: of incoming links (</span><b>Fig. 2.3.6C</b><span style='font-weight:normal'>,
! 611: Òfrom_Ó).</span></p>
! 612: <p>After the last entry has been processed, procedure <span
! 613: style='font-family:"Courier New"'>loadmap</span> returns. After the last map has
! 614: been processed, the original course-level instance of <span
! 615: style='font-family:"Courier New"'>loadmap</span> returns to <span
! 616: style='font-family:"Courier New"'>readmap</span> (<b>Fig. 2.3.5</b><span
! 617: style='font-weight:normal'>, </span><b>Step R2</b><span style='font-weight:
! 618: normal'>).</span></p>
! 619: <p><img border=0 width=432 height=547 id="_x0000_i1034"
! 620: src="handout_files/image010.jpg"></p>
! 621: <p><span style='font-size:14.0pt'><b>Fig. 2.3.6A</b></span><span
! 622: style='font-size:14.0pt'> Ð Flow chart of procedure </span><span
! 623: style='font-size:14.0pt;font-family:"Courier New"'>loadmap</span></p>
! 624: <br clear=ALL
! 625: style='page-break-before:always'>
! 626: <table border=1 cellspacing=0 cellpadding=0>
! 627: <tr>
! 628: <td width=443 valign=top class="Normal">
! 629: <p style='line-height:90%'><span style='font-size:8.0pt;
! 630: font-family:"Courier New"'>ids_/res/msu/korte/chapters/applications.sequence:
! 631: 1.58</span></p>
! 632: <p style='line-height:90%'><span style='font-size:8.0pt;
! 633: font-family:"Courier New"'>ids_/res/msu/korte/parts/part1.sequence: 1.9</span></p>
! 634: <p style='line-height:90%'><span style='font-size:8.0pt;
! 635: font-family:"Courier New"'>ids_/res/msu/korte/parts/part1dir.xml: 2.6</span></p>
! 636: <p style='line-height:90%'><span style='font-size:8.0pt;
! 637: font-family:"Courier New"'>ids_/res/msu/korte/parts/part1intro.html: 2.5</span></p>
! 638: <p style='line-height:90%'><span style='font-size:8.0pt;
! 639: font-family:"Courier New"'>ids_/res/msu/korte/parts/part2.sequence: 1.15</span></p>
! 640: <p style='line-height:90%'><span style='font-size:8.0pt;
! 641: font-family:"Courier New"'>ids_/res/msu/korte/parts/summary.page: 2.24</span></p>
! 642: <p style='line-height:90%'><span style='font-size:8.0pt;
! 643: font-family:"Courier New"'>ids_/res/msu/korte/refresh/refresher.sequence: 1.20</span></p>
! 644: <p style='line-height:90%'><span style='font-size:8.0pt;
! 645: font-family:"Courier New"'>ids_/res/msu/korte/refresh/review.sequence: 1.36</span></p>
! 646: <p style='line-height:90%'><span style='font-size:8.0pt;
! 647: font-family:"Courier New"'>ids_/res/msu/korte/tests/final.sequence: 1.29</span></p>
! 648: <p style='line-height:90%'><span style='font-size:8.0pt;
! 649: font-family:"Courier New"'>ids_/res/msu/korte/tests/midterm.sequence: 1.11</span></p>
! 650: <p style='line-height:90%'><span style='font-size:8.0pt;
! 651: font-family:"Courier New"'>ids_/res/msu/korte/tests/part11.problem: 2.12</span></p>
! 652: <p style='line-height:90%'><span style='font-size:8.0pt;
! 653: font-family:"Courier New"'>ids_/res/msu/korte/tests/part12.problem: 2.19</span></p>
! 654: <p style='line-height:90%'><span style='font-size:8.0pt;
! 655: font-family:"Courier New"'>ids_/res/msu/korte/tests/part13.problem: 2.13</span></p>
! 656: <p style='line-height:90%'><span style='font-size:8.0pt;
! 657: font-family:"Courier New"'>ids_/res/msu/korte/tests/pretest.problem: 1.5</span></p>
! 658: <p style='line-height:90%'><span style='font-size:8.0pt;
! 659: font-family:"Courier New"'>ids_/res/msu/smith/accelerate.html: 3.15</span></p>
! 660: <p style='line-height:90%'><span style='font-size:8.0pt;
! 661: font-family:"Courier New"'>ids_/res/msu/smith/racecar.problem: 3.5</span></p>
! 662: <p style='line-height:90%'><span style='font-size:8.0pt;
! 663: font-family:"Courier New"'>ids_/res/msu/smith/toofast.html: 3.6</span></p>
! 664: <p style='line-height:90%'><span style='font-size:8.0pt;
! 665: font-family:"Courier New"'>ids_/res/msu/smith/tooslow.html: 3.8</span></p>
! 666: <p style='line-height:90%'><span style='font-size:8.0pt;
! 667: font-family:"Courier New"'><b>É</b></span></p>
! 668: <p style='line-height:90%'><span style='font-size:8.0pt;
! 669: font-family:"Courier New"'>map_start_/res/msu/korte/foo.sequence: 1.1</span></p>
! 670: <p style='line-height:90%'><span style='font-size:8.0pt;
! 671: font-family:"Courier New"'>map_start_/res/msu/korte/parts/part1.sequence: 2.1</span></p>
! 672: <p style='line-height:90%'><span style='font-size:8.0pt;
! 673: font-family:"Courier New"'>map_start_/res/msu/korte/parts/summary.page: 3.1</span></p>
! 674: <p style='line-height:90%'><span style='font-size:8.0pt;
! 675: font-family:"Courier New"'><b>É</b></span></p>
! 676: <p style='line-height:90%'><span style='font-size:8.0pt;
! 677: font-family:"Courier New"'>map_finish_/res/msu/korte/foo.sequence: 1.2</span></p>
! 678: <p style='line-height:90%'><span style='font-size:8.0pt;
! 679: font-family:"Courier New"'>map_finish_/res/msu/korte/parts/part1.sequence: 2.2</span></p>
! 680: <p style='line-height:90%'><span style='font-size:8.0pt;
! 681: font-family:"Courier New"'>map_finish_/res/msu/korte/parts/summary.page: 3.2</span></p>
! 682: <p style='line-height:90%'><span style='font-size:8.0pt;
! 683: font-family:"Courier New"'><b>É</b></span></p>
! 684: <p style='line-height:90%'><span style='font-size:8.0pt;
! 685: font-family:"Courier New"'>title_1.11: Midterm</span></p>
! 686: <p style='line-height:90%'><span style='font-size:8.0pt;
! 687: font-family:"Courier New"'>title_1.15: Part 2</span></p>
! 688: <p style='line-height:90%'><span style='font-size:8.0pt;
! 689: font-family:"Courier New"'>title_1.20: Refresher</span></p>
! 690: <p style='line-height:90%'><span style='font-size:8.0pt;
! 691: font-family:"Courier New"'>title_1.29: Final Exam</span></p>
! 692: <p style='line-height:90%'><span style='font-size:8.0pt;
! 693: font-family:"Courier New"'>title_1.36: Review</span></p>
! 694: <p style='line-height:90%'><span style='font-size:8.0pt;
! 695: font-family:"Courier New"'>title_1.5: Pretest</span></p>
! 696: <p style='line-height:90%'><span style='font-size:8.0pt;
! 697: font-family:"Courier New"'>title_1.58: Applications</span></p>
! 698: <p style='line-height:90%'><span style='font-size:8.0pt;
! 699: font-family:"Courier New"'>title_1.9: Part 1</span></p>
! 700: <p style='line-height:90%'><span style='font-size:8.0pt;
! 701: font-family:"Courier New"'>title_2.12: Problem 1</span></p>
! 702: <p style='line-height:90%'><span style='font-size:8.0pt;
! 703: font-family:"Courier New"'>title_2.13: Problem 3</span></p>
! 704: <p style='line-height:90%'><span style='font-size:8.0pt;
! 705: font-family:"Courier New"'>title_2.19: Problem 2</span></p>
! 706: <p style='line-height:90%'><span style='font-size:8.0pt;
! 707: font-family:"Courier New"'>title_2.24: Summary</span></p>
! 708: <p style='line-height:90%'><span style='font-size:8.0pt;
! 709: font-family:"Courier New"'>title_2.5: Part 1 Introduction</span></p>
! 710: <p style='line-height:90%'><span style='font-size:8.0pt;
! 711: font-family:"Courier New"'>title_2.6: Directions</span></p>
! 712: <p style='line-height:90%'><span style='font-size:8.0pt;
! 713: font-family:"Courier New"'><b>É</b></span></p>
! 714: </td>
! 715: </tr>
! 716: </table>
! 717: <p><span style='font-size:14.0pt'><b>Fig. 2.3.6B</b></span><span
! 718: style='font-size:14.0pt'> Ð Dump of the resource properties hash. Excerpt of the
! 719: resource properties gathered in procedure </span><span style='font-size:
! 720: 14.0pt;font-family:"Courier New"'>loadmap</span></p>
! 721: <table border=1 cellspacing=0 cellpadding=0>
! 722: <tr>
! 723: <td width=443 valign=top class="Normal">
! 724: <p style='line-height:90%'><span style='font-size:8.0pt;
! 725: font-family:"Courier New"'>to_1.1: 1.1</span></p>
! 726: <p style='line-height:90%'><span style='font-size:8.0pt;
! 727: font-family:"Courier New"'>to_1.11: 1.3,1.7,1.12</span></p>
! 728: <p style='line-height:90%'><span style='font-size:8.0pt;
! 729: font-family:"Courier New"'>to_1.15: 1.10</span></p>
! 730: <p style='line-height:90%'><span style='font-size:8.0pt;
! 731: font-family:"Courier New"'>to_1.20: 1.6</span></p>
! 732: <p style='line-height:90%'><span style='font-size:8.0pt;
! 733: font-family:"Courier New"'>to_1.29: 1.11</span></p>
! 734: <p style='line-height:90%'><span style='font-size:8.0pt;
! 735: font-family:"Courier New"'>to_1.36: 1.8,1.9</span></p>
! 736: <p style='line-height:90%'><span style='font-size:8.0pt;
! 737: font-family:"Courier New"'>to_1.5: 1.4,1.5</span></p>
! 738: <p style='line-height:90%'><span style='font-size:8.0pt;
! 739: font-family:"Courier New"'>to_1.9: 1.2</span></p>
! 740: <p style='line-height:90%'><span style='font-size:8.0pt;
! 741: font-family:"Courier New"'>to_2.1: 2.2</span></p>
! 742: <p style='line-height:90%'><span style='font-size:8.0pt;
! 743: font-family:"Courier New"'>to_2.12: 2.6</span></p>
! 744: <p style='line-height:90%'><span style='font-size:8.0pt;
! 745: font-family:"Courier New"'>to_2.13: 2.8</span></p>
! 746: <p style='line-height:90%'><span style='font-size:8.0pt;
! 747: font-family:"Courier New"'>to_2.19: 2.7</span></p>
! 748: <p style='line-height:90%'><span style='font-size:8.0pt;
! 749: font-family:"Courier New"'>to_2.24: 2.9</span></p>
! 750: <p style='line-height:90%'><span style='font-size:8.0pt;
! 751: font-family:"Courier New"'>to_2.5: 2.1</span></p>
! 752: <p style='line-height:90%'><span style='font-size:8.0pt;
! 753: font-family:"Courier New"'>to_2.6: 2.3,2.4,2.5</span></p>
! 754: <p style='line-height:90%'><span style='font-size:8.0pt;
! 755: font-family:"Courier New"'>to_3.1: 3.1</span></p>
! 756: <p style='line-height:90%'><span style='font-size:8.0pt;
! 757: font-family:"Courier New"'>to_3.15: 3.7</span></p>
! 758: <p style='line-height:90%'><span style='font-size:8.0pt;
! 759: font-family:"Courier New"'>to_3.5: 3.2,3.3,3.4,3.8</span></p>
! 760: <p style='line-height:90%'><span style='font-size:8.0pt;
! 761: font-family:"Courier New"'>to_3.6: 3.5</span></p>
! 762: <p style='line-height:90%'><span style='font-size:8.0pt;
! 763: font-family:"Courier New"'>to_3.8: 3.6</span></p>
! 764: <p style='line-height:90%'><span style='font-size:8.0pt;
! 765: font-family:"Courier New"'><b>É</b></span></p>
! 766: <p style='line-height:90%'><span style='font-size:8.0pt;
! 767: font-family:"Courier New"'>from_1.11: 1.2,1.9,1.12</span></p>
! 768: <p style='line-height:90%'><span style='font-size:8.0pt;
! 769: font-family:"Courier New"'>from_1.15: 1.3</span></p>
! 770: <p style='line-height:90%'><span style='font-size:8.0pt;
! 771: font-family:"Courier New"'>from_1.2: 1.11</span></p>
! 772: <p style='line-height:90%'><span style='font-size:8.0pt;
! 773: font-family:"Courier New"'>from_1.20: 1.5</span></p>
! 774: <p style='line-height:90%'><span style='font-size:8.0pt;
! 775: font-family:"Courier New"'>from_1.29: 1.10</span></p>
! 776: <p style='line-height:90%'><span style='font-size:8.0pt;
! 777: font-family:"Courier New"'>from_1.36: 1.7</span></p>
! 778: <p style='line-height:90%'><span style='font-size:8.0pt;
! 779: font-family:"Courier New"'>from_1.5: 1.1,1.6</span></p>
! 780: <p style='line-height:90%'><span style='font-size:8.0pt;
! 781: font-family:"Courier New"'>from_1.9: 1.4,1.8</span></p>
! 782: <p style='line-height:90%'><span style='font-size:8.0pt;
! 783: font-family:"Courier New"'>from_2.12: 2.3</span></p>
! 784: <p style='line-height:90%'><span style='font-size:8.0pt;
! 785: font-family:"Courier New"'>from_2.13: 2.4</span></p>
! 786: <p style='line-height:90%'><span style='font-size:8.0pt;
! 787: font-family:"Courier New"'>from_2.19: 2.5</span></p>
! 788: <p style='line-height:90%'><span style='font-size:8.0pt;
! 789: font-family:"Courier New"'>from_2.2: 2.9</span></p>
! 790: <p style='line-height:90%'><span style='font-size:8.0pt;
! 791: font-family:"Courier New"'>from_2.24: 2.6,2.7,2.8</span></p>
! 792: <p style='line-height:90%'><span style='font-size:8.0pt;
! 793: font-family:"Courier New"'>from_2.5: 2.2</span></p>
! 794: <p style='line-height:90%'><span style='font-size:8.0pt;
! 795: font-family:"Courier New"'>from_2.6: 2.1</span></p>
! 796: <p style='line-height:90%'><span style='font-size:8.0pt;
! 797: font-family:"Courier New"'>from_3.15: 3.4</span></p>
! 798: <p style='line-height:90%'><span style='font-size:8.0pt;
! 799: font-family:"Courier New"'>from_3.2: 3.5,3.6,3.7,3.8</span></p>
! 800: <p style='line-height:90%'><span style='font-size:8.0pt;
! 801: font-family:"Courier New"'>from_3.5: 3.1</span></p>
! 802: <p style='line-height:90%'><span style='font-size:8.0pt;
! 803: font-family:"Courier New"'>from_3.6: 3.2</span></p>
! 804: <p style='line-height:90%'><span style='font-size:8.0pt;
! 805: font-family:"Courier New"'>from_3.8: 3.3</span></p>
! 806: <p style='line-height:90%'><span style='font-size:8.0pt;
! 807: font-family:"Courier New"'><b>É</b></span></p>
! 808: </td>
! 809: </tr>
! 810: </table>
! 811: <p><span style='font-size:14.0pt'><b>Fig. 2.3.6C</b></span><span
! 812: style='font-size:14.0pt'> Ð Dump of the resource properties hash. Excerpt of information
! 813: gathered about links between resources in subroutine </span><span
! 814: style='font-size:14.0pt;font-family:"Courier New"'>loadmap</span><span
! 815: style='font-size:14.0pt'>.</span></p>
! 816: <table border=1 cellspacing=0 cellpadding=0>
! 817: <tr>
! 818: <td width=148 valign=top class="Normal">
! 819: <p style='line-height:90%'><span style='font-size:8.0pt;
! 820: font-family:"Courier New"'>goesto_1.1: 1.5</span></p>
! 821: <p style='line-height:90%'><span style='font-size:8.0pt;
! 822: font-family:"Courier New"'>goesto_1.10: 1.29</span></p>
! 823: <p style='line-height:90%'><span style='font-size:8.0pt;
! 824: font-family:"Courier New"'>goesto_1.11: 1.2</span></p>
! 825: <p style='line-height:90%'><span style='font-size:8.0pt;
! 826: font-family:"Courier New"'>goesto_1.12: 1.11</span></p>
! 827: <p style='line-height:90%'><span style='font-size:8.0pt;
! 828: font-family:"Courier New"'>goesto_1.2: 1.11</span></p>
! 829: <p style='line-height:90%'><span style='font-size:8.0pt;
! 830: font-family:"Courier New"'>goesto_1.3: 1.15</span></p>
! 831: <p style='line-height:90%'><span style='font-size:8.0pt;
! 832: font-family:"Courier New"'>goesto_1.4: 1.9</span></p>
! 833: <p style='line-height:90%'><span style='font-size:8.0pt;
! 834: font-family:"Courier New"'>goesto_1.5: 1.20</span></p>
! 835: <p style='line-height:90%'><span style='font-size:8.0pt;
! 836: font-family:"Courier New"'>goesto_1.6: 1.5</span></p>
! 837: <p style='line-height:90%'><span style='font-size:8.0pt;
! 838: font-family:"Courier New"'>goesto_1.7: 1.36</span></p>
! 839: <p style='line-height:90%'><span style='font-size:8.0pt;
! 840: font-family:"Courier New"'>goesto_1.8: 1.9</span></p>
! 841: <p style='line-height:90%'><span style='font-size:8.0pt;
! 842: font-family:"Courier New"'>goesto_1.9: 1.11</span></p>
! 843: <p style='line-height:90%'><span style='font-size:8.0pt;
! 844: font-family:"Courier New"'>goesto_2.1: 2.6</span></p>
! 845: <p style='line-height:90%'><span style='font-size:8.0pt;
! 846: font-family:"Courier New"'>goesto_2.2: 2.5</span></p>
! 847: <p style='line-height:90%'><span style='font-size:8.0pt;
! 848: font-family:"Courier New"'>goesto_2.3: 2.12</span></p>
! 849: <p style='line-height:90%'><span style='font-size:8.0pt;
! 850: font-family:"Courier New"'>goesto_2.4: 2.13</span></p>
! 851: <p style='line-height:90%'><span style='font-size:8.0pt;
! 852: font-family:"Courier New"'>goesto_2.5: 2.19</span></p>
! 853: <p style='line-height:90%'><span style='font-size:8.0pt;
! 854: font-family:"Courier New"'>goesto_2.6: 2.24</span></p>
! 855: <p style='line-height:90%'><span style='font-size:8.0pt;
! 856: font-family:"Courier New"'>goesto_2.7: 2.24</span></p>
! 857: <p style='line-height:90%'><span style='font-size:8.0pt;
! 858: font-family:"Courier New"'>goesto_2.8: 2.24</span></p>
! 859: <p style='line-height:90%'><span style='font-size:8.0pt;
! 860: font-family:"Courier New"'>goesto_2.9: 2.2</span></p>
! 861: <p style='line-height:90%'><span style='font-size:8.0pt;
! 862: font-family:"Courier New"'>goesto_3.1: 3.5</span></p>
! 863: <p style='line-height:90%'><span style='font-size:8.0pt;
! 864: font-family:"Courier New"'>goesto_3.2: 3.6</span></p>
! 865: <p style='line-height:90%'><span style='font-size:8.0pt;
! 866: font-family:"Courier New"'>goesto_3.3: 3.8</span></p>
! 867: <p style='line-height:90%'><span style='font-size:8.0pt;
! 868: font-family:"Courier New"'>goesto_3.4: 3.15</span></p>
! 869: <p style='line-height:90%'><span style='font-size:8.0pt;
! 870: font-family:"Courier New"'>goesto_3.5: 3.2</span></p>
! 871: <p style='line-height:90%'><span style='font-size:8.0pt;
! 872: font-family:"Courier New"'>goesto_3.6: 3.2</span></p>
! 873: <p style='line-height:90%'><span style='font-size:8.0pt;
! 874: font-family:"Courier New"'>goesto_3.7: 3.2</span></p>
! 875: <p style='line-height:90%'><span style='font-size:8.0pt;
! 876: font-family:"Courier New"'>goesto_3.8: 3.2</span></p>
! 877: <p style='line-height:90%'><span style='font-size:8.0pt;
! 878: font-family:"Courier New"'><b>É</b></span></p>
! 879: </td>
! 880: <td width=148 valign=top class="Normal">
! 881: <p style='line-height:90%'><span style='font-size:8.0pt;
! 882: font-family:"Courier New"'>comesfrom_1.1: 1.1</span></p>
! 883: <p style='line-height:90%'><span style='font-size:8.0pt;
! 884: font-family:"Courier New"'>comesfrom_1.10: 1.15</span></p>
! 885: <p style='line-height:90%'><span style='font-size:8.0pt;
! 886: font-family:"Courier New"'>comesfrom_1.11: 1.29</span></p>
! 887: <p style='line-height:90%'><span style='font-size:8.0pt;
! 888: font-family:"Courier New"'>comesfrom_1.12: 1.11</span></p>
! 889: <p style='line-height:90%'><span style='font-size:8.0pt;
! 890: font-family:"Courier New"'>comesfrom_1.2: 1.9</span></p>
! 891: <p style='line-height:90%'><span style='font-size:8.0pt;
! 892: font-family:"Courier New"'>comesfrom_1.3: 1.11</span></p>
! 893: <p style='line-height:90%'><span style='font-size:8.0pt;
! 894: font-family:"Courier New"'>comesfrom_1.4: 1.5</span></p>
! 895: <p style='line-height:90%'><span style='font-size:8.0pt;
! 896: font-family:"Courier New"'>comesfrom_1.5: 1.5</span></p>
! 897: <p style='line-height:90%'><span style='font-size:8.0pt;
! 898: font-family:"Courier New"'>comesfrom_1.6: 1.20</span></p>
! 899: <p style='line-height:90%'><span style='font-size:8.0pt;
! 900: font-family:"Courier New"'>comesfrom_1.7: 1.11</span></p>
! 901: <p style='line-height:90%'><span style='font-size:8.0pt;
! 902: font-family:"Courier New"'>comesfrom_1.8: 1.36</span></p>
! 903: <p style='line-height:90%'><span style='font-size:8.0pt;
! 904: font-family:"Courier New"'>comesfrom_1.9: 1.36</span></p>
! 905: <p style='line-height:90%'><span style='font-size:8.0pt;
! 906: font-family:"Courier New"'>comesfrom_2.1: 2.5</span></p>
! 907: <p style='line-height:90%'><span style='font-size:8.0pt;
! 908: font-family:"Courier New"'>comesfrom_2.2: 2.1</span></p>
! 909: <p style='line-height:90%'><span style='font-size:8.0pt;
! 910: font-family:"Courier New"'>comesfrom_2.3: 2.6</span></p>
! 911: <p style='line-height:90%'><span style='font-size:8.0pt;
! 912: font-family:"Courier New"'>comesfrom_2.4: 2.6</span></p>
! 913: <p style='line-height:90%'><span style='font-size:8.0pt;
! 914: font-family:"Courier New"'>comesfrom_2.5: 2.6</span></p>
! 915: <p style='line-height:90%'><span style='font-size:8.0pt;
! 916: font-family:"Courier New"'>comesfrom_2.6: 2.12</span></p>
! 917: <p style='line-height:90%'><span style='font-size:8.0pt;
! 918: font-family:"Courier New"'>comesfrom_2.7: 2.19</span></p>
! 919: <p style='line-height:90%'><span style='font-size:8.0pt;
! 920: font-family:"Courier New"'>comesfrom_2.8: 2.13</span></p>
! 921: <p style='line-height:90%'><span style='font-size:8.0pt;
! 922: font-family:"Courier New"'>comesfrom_2.9: 2.24</span></p>
! 923: <p style='line-height:90%'><span style='font-size:8.0pt;
! 924: font-family:"Courier New"'>comesfrom_3.1: 3.1</span></p>
! 925: <p style='line-height:90%'><span style='font-size:8.0pt;
! 926: font-family:"Courier New"'>comesfrom_3.2: 3.5</span></p>
! 927: <p style='line-height:90%'><span style='font-size:8.0pt;
! 928: font-family:"Courier New"'>comesfrom_3.3: 3.5</span></p>
! 929: <p style='line-height:90%'><span style='font-size:8.0pt;
! 930: font-family:"Courier New"'>comesfrom_3.4: 3.5</span></p>
! 931: <p style='line-height:90%'><span style='font-size:8.0pt;
! 932: font-family:"Courier New"'>comesfrom_3.5: 3.6</span></p>
! 933: <p style='line-height:90%'><span style='font-size:8.0pt;
! 934: font-family:"Courier New"'>comesfrom_3.6: 3.8</span></p>
! 935: <p style='line-height:90%'><span style='font-size:8.0pt;
! 936: font-family:"Courier New"'>comesfrom_3.7: 3.15</span></p>
! 937: <p style='line-height:90%'><span style='font-size:8.0pt;
! 938: font-family:"Courier New"'>comesfrom_3.8: 3.5</span></p>
! 939: <p style='line-height:90%'><span style='font-size:8.0pt;
! 940: font-family:"Courier New"'><b>É</b></span></p>
! 941: </td>
! 942: <td width=148 valign=top class="Normal">
! 943: <p style='line-height:90%'><span style='font-size:8.0pt;
! 944: font-family:"Courier New"'>undercond_1.1: 0</span></p>
! 945: <p style='line-height:90%'><span style='font-size:8.0pt;
! 946: font-family:"Courier New"'>undercond_1.10: 0</span></p>
! 947: <p style='line-height:90%'><span style='font-size:8.0pt;
! 948: font-family:"Courier New"'>undercond_1.11: 1.70</span></p>
! 949: <p style='line-height:90%'><span style='font-size:8.0pt;
! 950: font-family:"Courier New"'>undercond_1.12: 0</span></p>
! 951: <p style='line-height:90%'><span style='font-size:8.0pt;
! 952: font-family:"Courier New"'>undercond_1.2: 0</span></p>
! 953: <p style='line-height:90%'><span style='font-size:8.0pt;
! 954: font-family:"Courier New"'>undercond_1.3: 1.30</span></p>
! 955: <p style='line-height:90%'><span style='font-size:8.0pt;
! 956: font-family:"Courier New"'>undercond_1.4: 1.19</span></p>
! 957: <p style='line-height:90%'><span style='font-size:8.0pt;
! 958: font-family:"Courier New"'>undercond_1.5: 0</span></p>
! 959: <p style='line-height:90%'><span style='font-size:8.0pt;
! 960: font-family:"Courier New"'>undercond_1.6: 0</span></p>
! 961: <p style='line-height:90%'><span style='font-size:8.0pt;
! 962: font-family:"Courier New"'>undercond_1.7: 1.43</span></p>
! 963: <p style='line-height:90%'><span style='font-size:8.0pt;
! 964: font-family:"Courier New"'>undercond_1.8: 0</span></p>
! 965: <p style='line-height:90%'><span style='font-size:8.0pt;
! 966: font-family:"Courier New"'>undercond_1.9: 0</span></p>
! 967: <p style='line-height:90%'><span style='font-size:8.0pt;
! 968: font-family:"Courier New"'>undercond_2.1: 0</span></p>
! 969: <p style='line-height:90%'><span style='font-size:8.0pt;
! 970: font-family:"Courier New"'>undercond_2.2: 0</span></p>
! 971: <p style='line-height:90%'><span style='font-size:8.0pt;
! 972: font-family:"Courier New"'>undercond_2.3: 0</span></p>
! 973: <p style='line-height:90%'><span style='font-size:8.0pt;
! 974: font-family:"Courier New"'>undercond_2.4: 0</span></p>
! 975: <p style='line-height:90%'><span style='font-size:8.0pt;
! 976: font-family:"Courier New"'>undercond_2.5: 0</span></p>
! 977: <p style='line-height:90%'><span style='font-size:8.0pt;
! 978: font-family:"Courier New"'>undercond_2.6: 2.47</span></p>
! 979: <p style='line-height:90%'><span style='font-size:8.0pt;
! 980: font-family:"Courier New"'>undercond_2.7: 2.48</span></p>
! 981: <p style='line-height:90%'><span style='font-size:8.0pt;
! 982: font-family:"Courier New"'>undercond_2.8: 2.49</span></p>
! 983: <p style='line-height:90%'><span style='font-size:8.0pt;
! 984: font-family:"Courier New"'>undercond_2.9: 0</span></p>
! 985: <p style='line-height:90%'><span style='font-size:8.0pt;
! 986: font-family:"Courier New"'>undercond_3.1: 0</span></p>
! 987: <p style='line-height:90%'><span style='font-size:8.0pt;
! 988: font-family:"Courier New"'>undercond_3.2: 3.41</span></p>
! 989: <p style='line-height:90%'><span style='font-size:8.0pt;
! 990: font-family:"Courier New"'>undercond_3.3: 3.42</span></p>
! 991: <p style='line-height:90%'><span style='font-size:8.0pt;
! 992: font-family:"Courier New"'>undercond_3.4: 3.43</span></p>
! 993: <p style='line-height:90%'><span style='font-size:8.0pt;
! 994: font-family:"Courier New"'>undercond_3.5: 0</span></p>
! 995: <p style='line-height:90%'><span style='font-size:8.0pt;
! 996: font-family:"Courier New"'>undercond_3.6: 0</span></p>
! 997: <p style='line-height:90%'><span style='font-size:8.0pt;
! 998: font-family:"Courier New"'>undercond_3.7: 0</span></p>
! 999: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1000: font-family:"Courier New"'>undercond_3.8: 3.40</span></p>
! 1001: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1002: font-family:"Courier New"'><b>É</b></span></p>
! 1003: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1004: font-family:"Courier New"'>condid_1.19: 8</span></p>
! 1005: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1006: font-family:"Courier New"'>condid_1.30: 9</span></p>
! 1007: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1008: font-family:"Courier New"'>condid_1.43: 10</span></p>
! 1009: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1010: font-family:"Courier New"'>condid_1.70: 11</span></p>
! 1011: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1012: font-family:"Courier New"'>condid_2.47: 5</span></p>
! 1013: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1014: font-family:"Courier New"'>condid_2.48: 6</span></p>
! 1015: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1016: font-family:"Courier New"'>condid_2.49: 7</span></p>
! 1017: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1018: font-family:"Courier New"'>condid_3.40: 1</span></p>
! 1019: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1020: font-family:"Courier New"'>condid_3.41: 2</span></p>
! 1021: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1022: font-family:"Courier New"'>condid_3.42: 3</span></p>
! 1023: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1024: font-family:"Courier New"'>condid_3.43: 4</span></p>
! 1025: <p style='line-height:90%'><span style='font-size:8.0pt;
! 1026: font-family:"Courier New"'><b>É</b></span></p>
! 1027: </td>
! 1028: </tr>
! 1029: </table>
! 1030: <p><span style='font-size:14.0pt'><b>Fig. 2.3.6D</b></span><span
! 1031: style='font-size:14.0pt'> Ð Dump of the resource properties hash. Excerpt of information
! 1032: gathered about links and link conditions between resources in subroutine
! 1033: </span><span style='font-size:14.0pt;font-family:"Courier New"'>loadmap</span><span
! 1034: style='font-size:14.0pt'>.</span></p>
! 1035: <span style='font-size:14.0pt;font-family:"Times New Roman"'><br clear=ALL
! 1036: style='page-break-before:always'>
! 1037: </span>
! 1038: <table border=1 cellspacing=0 cellpadding=0>
! 1039: <tr>
! 1040: <td width=443 valign=top class="Normal">
! 1041: <p><span style='font-size:12.0pt'>0 : true:normal</span></p>
! 1042: <p><span style='font-size:12.0pt'>1 : user.assessments[this./msu/smith/racecar.problem].status=solved:force</span></p>
! 1043: <p><span style='font-size:12.0pt'>2 : user.assessments[this./msu/smith/racecar.problem].answer=friction:stop</span></p>
! 1044: <p><span style='font-size:12.0pt'>3 : user.assessments[this./msu/smith/racecar.problem].answer=sliding:stop</span></p>
! 1045: <p><span style='font-size:12.0pt'>4 : user.assessments[this./msu/smith/racecar.problem].answer=nonconstant:stop</span></p>
! 1046: <p><span style='font-size:12.0pt'>5 : user.assessments[this./msu/korte/tests/part11.problem].status=solved:stop</span></p>
! 1047: <p><span style='font-size:12.0pt'>6 : user.assessments[this./msu/korte/tests/part12.problem].status=solved:stop</span></p>
! 1048: <p><span style='font-size:12.0pt'>7 : user.assessments[this./msu/korte/tests/part13.problem].status=solved:stop</span></p>
! 1049: <p><span style='font-size:12.0pt'>8 : user.assessments[this./msu/korte/tests/pretest.problem].status=solved:stop</span></p>
! 1050: <p><span style='font-size:12.0pt'>9 : user.assessments[this./msu/korte/tests/midterm.sequence].percent>60:stop</span></p>
! 1051: <p><span style='font-size:12.0pt'>10 : user.assessments[this./msu/korte/tests/midterm.sequence].percent<10:force</span></p>
! 1052: <p><span style='font-size:12.0pt'>11 : user.assessments[this./msu/korte/tests/final.sequence].percent>60:stop</span></p>
! 1053: <p><span style='font-size:18.0pt'><b>É</b></span></p>
! 1054: </td>
! 1055: </tr>
! 1056: </table>
! 1057: <p><span style='font-size:14.0pt'><b>Fig. 2.3.7</b></span><span
! 1058: style='font-size:14.0pt'> Ð Excerpt of the dump of the condition array constructed
! 1059: in procedure </span><span style='font-size:14.0pt;font-family:"Courier New"'>loadmap
! 1060: </span><i>(the final syntax of conditions has not yet been determined)</i></p>
! 1061: <h3><a name="_Toc514920455"></a><a name="_Toc421867118">Paths and Path Conditions</a></h3>
! 1062: <p>The next mayor step will be to determine all possible paths and conditions
! 1063: leading up to a resource for access control.</p>
! 1064: <p><span style='font-family:"Courier New"'>readmap</span> checks if the course
! 1065: has a start resource from its map_start entry in the resource properties
! 1066: (Step R2), and if does not, continue to store the two global binary data
! 1067: structures (<b>Steps R5,R6</b><span style='font-weight:normal'>) Ð in this
! 1068: special case, all resources which are part of any maps in the course are
! 1069: assumed to be accessible.</span></p>
! 1070: <p>If the course has a start resource, <span style='font-family:
! 1071: "Courier New"'>readmap</span> calls the procedure <span style='font-family:
! 1072: "Courier New"'>traceroute</span> (<b>Fig. 2.3.8A</b><span style='font-weight:
! 1073: normal'>) with the following parameters (</span><b>Step R4</b><span
! 1074: style='font-weight:normal'>): The cumulative condition along this path or route
! 1075: so far is set to ÒtrueÓ (the map is accessible); the resource ID of the
! 1076: start resource of the course map; and an empty list for all resources processed
! 1077: so far along this route. It is again important to note that all variables
! 1078: except the global binary structures are local to </span><span style='font-family:"Courier New"'>traceroute</span>,
! 1079: since <span style='font-family:"Courier New"'>traceroute</span> will recursively
! 1080: call itself whenever there is a branching to follow all possible paths of
! 1081: the maps.</p>
! 1082: <p><span style='font-family:"Courier New"'>traceroute</span> will establish
! 1083: a section within the resource properties hash that builds up all conditions
! 1084: leading up to a resource. <b>Fig. 2.3.8B</b><span style='font-weight:
! 1085: normal'> shows an excerpt of the final result. For example, resource 2.5, the
! 1086: introduction to part 1, can be reached under condition 8 (see </span><b>Fig.
! 1087: 2.3.7</b><span style='font-weight:normal'>), meaning, after solving the
! 1088: pretest problem.</span></p>
! 1089: <p><span style='font-family:"Courier New"'>traceroute</span> first checks
! 1090: if the resource has already been processed on this route by its resource
! 1091: ID (<b>Fig. 2.3.8A</b><span style='font-weight:normal'>, </span><b>Step
! 1092: T1</b><span style='font-weight:normal'>) Ð this test avoids that </span><span
! 1093: style='font-family:"Courier New"'>traceroute</span> runs into endless loops when
! 1094: the links on the map loop. Next, the resource ID is added to the list of
! 1095: processed resources on this route (<b>Step T2</b><span style='font-weight:normal'>).</span></p>
! 1096: <p>The resource conditions are now ORÕd with the cumulative conditions on
! 1097: this route (<b>Step T3</b><span style='font-weight:normal'>) Ð the route
! 1098: represents another way of getting to the resource. A small routine with
! 1099: simplification rules for boolean expressions is called to simplify the potentially
! 1100: very long expression.</span></p>
! 1101: <p>In the next step, it is determined if the resource is itself a map (<b>Step
! 1102: T4</b><span style='font-weight:normal'>). If it is, the exit route conditions
! 1103: can differ from the entry route condition by all additional conditions along
! 1104: the paths in the embedded maps (for non-map resources, entry and exit route
! 1105: conditions are the same). If however the embedded map does not have a start
! 1106: resource (</span><b>Step T5</b><span style='font-weight:normal'>), that
! 1107: is not the case Ð again, the missing of entry point to an embedded link
! 1108: structure is interpreted as the resources being openly accessible.</span></p>
! 1109: <p>If the embedded map does have a start resource, <span
! 1110: style='font-family:"Courier New"'>traceroute</span> is called recursively with
! 1111: the current route conditions, the ID of the start resource of that map,
! 1112: and the list of already processed resource IDs (<b>Step T6</b><span style='font-weight:
! 1113: normal'>). Upon return, if the embedded map does not have a finish resource, the
! 1114: entry and exit conditions of this map are assumed to be the same (</span><b>Step
! 1115: T7</b><span style='font-weight:normal'>). If the map had a finish resource,
! 1116: the route condition so far is set to the resource condition of the finish
! 1117: resource of the embedded map (</span><b>Step T8</b><span style='font-weight:normal'>)
! 1118: Ð in order go on from here, the user would have had to reach the finish
! 1119: resource of the embedded map.</span></p>
! 1120: <p>Now the route conditions are correctly set for exiting the resource and
! 1121: going on from here. <span style='font-family:"Courier New"'>traceroute </span>now
! 1122: loops over all outgoing links of the resource (<b>Step T9</b><span
! 1123: style='font-weight:normal'>). If the link does have a link condition (</span><b>Step
! 1124: T10</b><span style='font-weight:normal'>), then for this path, the cumulative
! 1125: route condition so far AND the link condition (</span><b>Step T11</b><span
! 1126: style='font-weight:normal'>). If there is no link condition, then there is no
! 1127: change in route conditions (</span><b>Step T12</b><span style='font-weight:
! 1128: normal'>).</span></p>
! 1129: <p>To further process the routes along this link, <span
! 1130: style='font-family:"Courier New"'>traceroute</span> is called recursively with
! 1131: the resource ID of the destination resource of the link, the new route conditions,
! 1132: and the list of already processed resources (<b>Step T13</b><span
! 1133: style='font-weight:normal'>). </span><span style='font-family:"Courier New"'>traceroute</span>
! 1134: returns after processing the last outgoing link of the resource it had been
! 1135: called for.</p>
! 1136: <p><b>Fig. 2.3.8B</b><span style='font-weight:normal'> shows part of the output
! 1137: of </span><span style='font-family:"Courier New"'>traceroute</span> for
! 1138: the example <b>Fig. 2.3.4</b><span style='font-weight:normal'>.</span></p>
! 1139: <br clear=ALL
! 1140: style='page-break-before:always'>
! 1141: <p><span style='font-size:14.0pt'><img border=0 width=432
! 1142: height=557 id="_x0000_i1035" src="handout_files/image011.jpg"></span></p>
! 1143: <p><span style='font-size:14.0pt'><b>Fig. 2.3.8A</b></span><span
! 1144: style='font-size:14.0pt'> Ð Flow chart of procedure </span><span
! 1145: style='font-size:14.0pt;font-family:"Courier New"'>traceroute</span></p>
! 1146: <br clear=ALL
! 1147: style='page-break-before:always'>
! 1148: <table border=1 cellspacing=0 cellpadding=0>
! 1149: <tr>
! 1150: <td width=443 valign=top class="Normal">
! 1151: <p>conditions_1.1: 0</p>
! 1152: <p>conditions_1.11:</p>
! 1153: <p>(((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1))|((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)))|((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)|(8&6&2)|(8&6&3)|(8&6&4)|(8&6&1))</p>
! 1154: <p>conditions_1.15:</p>
! 1155: <p>((((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1))|((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)))|((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)|(8&6&2)|(8&6&3)|(8&6&4)|(8&6&1)))&9</p>
! 1156: <p>conditions_1.2:</p>
! 1157: <p>(((((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1))|((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)))|((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)|(8&6&2)|(8&6&3)|(8&6&4)|(8&6&1)))&9)&11</p>
! 1158: <p>conditions_1.20: 0</p>
! 1159: <p>conditions_1.29:</p>
! 1160: <p>((((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1))|((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)))|((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)|(8&6&2)|(8&6&3)|(8&6&4)|(8&6&1)))&9</p>
! 1161: <p>conditions_1.36:</p>
! 1162: <p>((((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1))|((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)))|((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)|(8&6&2)|(8&6&3)|(8&6&4)|(8&6&1)))&10</p>
! 1163: <p>conditions_1.5: 0</p>
! 1164: <p>conditions_1.9: 8</p>
! 1165: <p>conditions_2.1: 8</p>
! 1166: <p>conditions_2.12: 8</p>
! 1167: <p>conditions_2.13: 8</p>
! 1168: <p>conditions_2.19: 8</p>
! 1169: <p>conditions_2.2:</p>
! 1170: <p>(((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1))|((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)))|((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)|(8&6&2)|(8&6&3)|(8&6&4)|(8&6&1))</p>
! 1171: <p>conditions_2.24: ((8&5)|(8&7)|(8&6))</p>
! 1172: <p>conditions_2.5: 8</p>
! 1173: <p>conditions_2.6: 8</p>
! 1174: <p>conditions_3.1: ((8&5)|(8&7)|(8&6))</p>
! 1175: <p>conditions_3.15: ((8&5&4)|(8&7&4)|(8&6&4))</p>
! 1176: <p>conditions_3.2: ((8&5&2)|(8&5&3)|(8&5&4)|(8&5&1)|(8&7&2)|(8&7&3)|(8&7&4)|(8&7&1)|(8&6&2)|(8&6&3)|(8&6&4)|(8&6&1))</p>
! 1177: <p>conditions_3.5: ((8&5)|(8&7)|(8&6))</p>
! 1178: <p>conditions_3.6: ((8&5&2)|(8&7&2)|(8&6&2))</p>
! 1179: <p>conditions_3.8: ((8&5&3)|(8&7&3)|(8&6&3))</p>
! 1180: </td>
! 1181: </tr>
! 1182: </table>
! 1183: <p><span style='font-size:14.0pt'><b>Fig. 2.3.8B Ð </b></span><span
! 1184: style='font-size:14.0pt'>Dump of resource properties hash. Excerpt of cumulative
! 1185: link conditions to reach a certain resource.</span></p>
! 1186: <h3><a name="_Toc514840865"></a><a name="_Toc514920456"></a><a
! 1187: name="_Toc421867119">Multivalued Boolean Evaluation of Link Priorities</a></h3>
! 1188: <p>When a user accessed a resource on a map and desires to access the ÒnextÓ
! 1189: resource, the request is processed by a number of steps. From the data examplified
! 1190: in <b>Fig. 2.3.6C</b><span style='font-weight:normal'>, it is determined
! 1191: which outgoing links exist. From the data in </span><b>Fig. 2.3.6D</b><span style='font-weight:normal'>
! 1192: it is determined to which resources those links lead. For each of the resources,
! 1193: the expressions in </span><b>Fig. 2.3.8A</b><span style='font-weight:normal'>
! 1194: are evaluated as follows. Stored in the session environment is the evaluation
! 1195: of the table </span><b>Fig. 10</b><span
! 1196: style='font-weight:normal'>, where the boolean part is evaluated as Ò0Ó or Ò1Ó.
! 1197: In addition, a multivalued boolean value is computed incorporating the condition
! 1198: priority. A false blocking condition is assigned the value zero, all other
! 1199: false conditions the value 1. A true forced condition is assigned the value
! 1200: 3, all other true conditions the value 2. </span></p>
! 1201: <p>In the expressions <b>Fig. 2.3.8A</b><span style='font-weight:
! 1202: normal'> an Ò&Ó (ÒANDÓ) is processed as the minimum (min) operation, a Ò|Ó
! 1203: (ÒORÓ) is processed as the maximum (max) operation. The outcome Ò0Ó means
! 1204: ÒblockedÓ, the outcome Ò1Ó mean Ònot recommendedÓ, the outcome Ò2Ó recommended,
! 1205: and the outcome Ò3Ó forced.</span></p>
! 1206: </div>
! 1207: <p> </p>
! 1208: </div>
! 1209: <br
! 1210: clear=ALL style='page-break-before:always;'>
! 1211: <div class=Section2> </div>
! 1212: </body>
! 1213: </html>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>