<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article>
  <title>Curriculum</title>
  <articleinfo>
    <author>
      <firstname>Staffan Hansson</firstname>
      <surname>(staffan@polyxena.net)</surname>
    </author>
  </articleinfo>
  <abstract>
    <para>This is the official documentation and user manual for the Curriculum module, which has been developed for use in online courses on OpenACS 5.0 and .LRN 2.0 websites. Curriculum's open source code was developed by Polyxena, Sweden, for the Medical Faculty of Heidelberg, Germany.</para>
  </abstract>
  <sect1 id="intro">
    <title>The Big Picture</title>
    <para>The Curriculum module allows you to arrange URLs of suggested learning resources into a series of educational elements, a study path that the students are invited to follow. The URL elements that you set up to form your curriculum are presented in a curriculum bar (horizontal or vertical course menu) displayed on each page and in a view at the curriculum index page or in a .LRN portlet. A checkbox right next to each element link gets checked when the user has visited the URL. When all the educational elements in the curriculum bar have been checked the curriculum itself gets checked - the course is completed.</para>
    <para>There can be one curriculum module instance per subsite, and each instance can have several curriculums published. Thus several curriculum bars may be displayed at a chosen position on each page. The teachers, assigned to a publishing workflow, administrate the curriculums and their elements. All students may restart a curriculum they are following or one that they have already finished. This means the elements for the curriculum in the student's personal bar get unchecked and that she has to take the course all over again. Thereby the student is given the opportunity to take a refresher course. Logged-in users will be able to drop curriculums, that is, they get to decide which of the published curriculums they want to take at any time.</para>
  </sect1>
  <sect1 id="user">
    <title>User's Guide</title>
    <para>Curriculum is a tool very much controlled by the educator, and for good reasons, since it is a pedagogical tool more than a plaything for the student - it is the didactical decisions made by the professional educator that should be implemented, and not the student's individual desires. This means that the publicity and content of the curriculum bar is supposed to be in the hands of the teachers and not the students. However, this doesn't mean that the students must not be in some individual control of their personal learning experience.</para>
    <sect2 id="student">
      <title>Student's Guide</title>
      <para>The Curriculum module provides online students with a course navigation and user tracking service that offers guidance through curriculums created by teachers. The traversal through the online course is manually controlled by the student herself, but she is presented with a suggested study path and the tracking of visited learning resources is fully automatic.</para>
      <para>To follow a curriculum set up by the publisher of a web site, just follow the links to learning resources presented in the bar - the student's little helper that is displayed on all pages. This user interface is a condensed version of the curriculums view found on the Curriculum index page and in the Curriculum portlet in .LRN. Your personal learning progress will be tracked; each link you visit gets checked. When you have visited all learning resources the curriculum itself gets checked; you have completed the course.</para>
      <para>Your learning progress is recorded in a cookie that is set in your browser. If you want to be sure that it is your personal progress that is being recorded, and not that of someone else using your computer, you have to be logged in. Then the web site will have your progress recorded in its own database, and you will be able to get a personalized service using any computer. A logged-in user will also have more curriculum management options - if you log in, you will be able to decide which curriculums to follow at any time. If you decide to drop a course, you can always resume it when you feel like it, and continue where you paused from your studies.</para>
      <para>The Curriculum index page presents an overview of all the published curriculums on the web site. To study a curriculum or one of its learning elements in a more detailed view, click on its name and you will be presented with its metadata. This close view of an individual curriculum or element is also the one you reach when you click on the information (i) link in the bar. You may visit the learning resources from the Curriculum index page too, but the normal way is to use the student's little helper found on all pages of the web site for traversing the curriculums. The index page is primarily the curriculum information page.</para>
      <para>But you may also use it to manage the curriculums and set them up according to your personal preferences. The status of your curriculums and your options at any given time is presented to you in the table. There is always the option of taking a refresher course, that is, to uncheck all boxes and start over. If you are logged in, you will have more options. Then you will be able to drop classes that you are not interested in and thus get them removed from your view on all pages except the Curriculum index page, where you may take up the class again at any time. If the course you remove is completed, you will have the option of restarting it afresh. But if you drop an ongoing class, your option will be to resume it, with visited URLs still checked.</para>
    </sect2>
    <sect2 id="teacher">
      <title>Teacher's Guide</title>
      <para>The Curriculum module provides online teachers with a handy educational tool. It allows you to set up curriculums made up of learning elements that are URLs found anywhere online. In order to manage this course design process, a publishing workflow aids the administration of curriculums in the making. While the teachers focus on designing courses, the web publisher is ultimately responsible for determining when a course is ready for public viewing, and when it is time to archive it. Hence Curriculum is administered via a content management system.</para>
      <para>The Curriculum admin page presents an overview of all set-up curriculums from a workflow perspective. Here you will get information about which publishing state each curriculum and its learning elements are in. If you click on a curriculum's name, you will (apart from the data about the curriculum) also be presented with those administrative actions you are allowed to take, depending on your assigned role in the workflow. On the admin page you use the tabs at the top to filter out a view of only those curriculums that are in a particular publishing state of your interest. The workflow states that are implemented in a default setup of Curriculum are: Pending, Edited, Rejected, Published, and Archived.</para>
      <para>The first thing to do is to create a new curriculum. Simply follow the "Add a curriculum" link, fill in the form, and submit it. Now, a curriculum is merely the container of the actual learning resources: the URL elements. The "Add an element" link found in the created curriculum will take you to a form where you fill in the data about a learning resource. If you don't state a URL, the element will consist solely of its metadata. Then the element URL in the curriculum bar will lead to the element info page, just like the info link. Repeat this operation for every element in your curriculum. If you wish to change the internal order of the elements in the curriculum, just click on the arrows in the "Move" column in the curriculum table. If you have created several curriculums, the order of these can also be altered in the same way.</para>
      <para>In order for you to get notifications of administrative actions taken on a curriculum, just click on the "Watch" link in the "Actions" column of the curriculums you are interested in. Then you will get an email report whenever someone has performed an action in the publishing workflow of the curriculum. The publisher will get notified about the created curriculum. If you are a publisher, you will be presented with the option of publishing the created (or edited) curriculum when you look at it in a detailed view. A published curriculum will go live; all users will be presented with it.</para>
    </sect2>
  </sect1>
  <sect1 id="admin">
    <title>Administrator's Guide</title>
    <para>As a site wide admin (SWA) there are a few things that you should be aware of when setting up an instance of the Curriculum module. The package essentially offers services to students and teachers of online courses. The students are offered a curriculum bar, a navigation and tracking interface, that is to be displayed on all master-templated pages of the site, or at least the subsite, where the Curriculum instance is mounted. You must facilitate this. The teachers that design courses use a publishing workflow. Unless you want to take on the responsibility for administrating the work, you must grant admin rights on the instance to a head teacher.</para>
    <para>Hence, after installing and mounting the Curriculum package (you can mount one instance of Curriculum per subsite) - and restarting the server - there are a few things left for you to do. First, make sure to facilitate the proper display of the curriculum bar widget. There are two versions of the curriculum bar to choose from: a horizontal and a vertical course menu. But the curriculum bar widget won't be displayed at all unless it is included in the master template. If it isn't, you will need to add the following curriculum bar include code at the desired place in the site-master or other template of preference, and perhaps write some markup code around it.</para>
    <para>Add this to the template's TCL file:</para>
    <para><blockquote><screen><![CDATA[# Curriculum bar
set curriculum_bar_p [llength [site_node::get_children -all -filters { package_key "curriculum" } -node_id $subsite_node_id]]]]></screen></blockquote></para>
    <para>Add this to the template's ADP file:</para>
    <para><blockquote><screen><![CDATA[<!-- Start curriculum bar -->
<if @curriculum_bar_p@><include src="/packages/curriculum/lib/bar" /></if>
<!-- End curriculum bar -->]]></screen></blockquote></para>
    <para>Where you decide to put the ADP include and what type of HTML and CSS formatting you want to work on it depends on which type of curriculum bar you are going to have. This and other preferences for the functionality and presentation of the curriculum bar you set at the instance parameters page. You'll find a link to the Curriculum parameters page at the top left of the Curriculum admin page. The setting of instance parameters can also be done later by a Curriculum administrator (a head teacher perhaps) as soon as you have granted someone such permission. You'll find a link to the Curriculum permissions page right next to the link to the Curriculum parameters page. Also, decide which users will get to read the curriculums.</para>
  </sect1>
  <sect1 id="dev">
    <title>Developer's Guide</title>
    <para>The usage of Curriculum has been extended quite a bit from the OpenACS 3 version, which wasn't subsite aware and didn't allow for several curriculums to be presented at once. The new expanded Curriculum module has also been adapted into a .LRN applet and portlet. One nice feature that has been kept from the original module is the ability to serve curriculums to both logged-in users and casual surfers. Non-registered users will get a cookie that keeps track of the curriculum progress. Logged-in users get their progress updated in the database, and are thus able to continue where they were last even if they are not using their own computer.</para>
    <para>The definition of the curriculums and their elements (and respective metadata) is entered via ad_forms into the <computeroutput>cu_curriculums</computeroutput> and the <computeroutput>cu_elements</computeroutput> tables. Elements, not curriculums, are actually the most fundamental objects that the Curriculum package works with. Presenting the elements as belonging to a certain curriculum, in turn belonging to a certain instance, is more or less a matter of display finesses. The curriculum and element definition tables are cached per instance, and the cache gets flushed via a callback whenever a curriculum or element is modified by an editor or publisher.</para>
    <para>The tracking of users' learning progress is handled with a registered filter that notes whenever a user visits a URL that has been defined as a learning element in a curriculum. If the URL is external to the subsite that hosts the Curriculum instance, it will be modified in the bar so as to lead to a "clickthrough" script where the tracking takes place as the web page is delivered. In order to display the curriculum bar on external pages too, these are presented with frames. A user's individual curriculum progress is set and updated in a cookie. Logged-in users get their learning progress recorded in the <computeroutput>cu_user_element_map</computeroutput>. In order for logged-in users to have more control over which curriculums to follow and which not to, the <computeroutput>cu_user_curriculum_map</computeroutput> keeps track of which curriculums a user wants displayed. This table is cached per user.</para>
    <para>Curriculum uses the Workflow package for managing the process of publishing curriculums. A default workflow - distinguishing between the roles of Creator, Editor, and Publisher - is automatically created when installing the Curriculum package. Every instance will use an individual copy of this default workflow. If you are dissatisfied with the default workflow template and wish to create another one to your own liking, please refer to the Workflow Developer's Guide.</para>
  </sect1>
  <sect1 id="future">
    <title>Future Developments</title>
    <para>The Curriculum module described in this text is the first development phase, or iteration, in a planned series. The visions for the future development of the Curriculum package are grand; eventually Curriculum is to become a tool for adaptive learning, working in concordance with IMS and SCORM standards. This entails a move away from a static and manual traversal of a curriculum to a dynamic and automatic ditto. This is realized by introducing branching of the curriculums and a conditioned sequencing of them. Assessment of users' understanding of the learning resources and exporting of courses (curriculum sequences and learning objects) will make Curriculum a full-fledged course management system.</para>
    <sect2 id="sequencing">
      <title>Second Iteration - Simple Sequencing</title>
      <para>Implementation of rule-based sequencing of a branched curriculum, following the IMS Simple Sequencing Specification. This iteration involves:</para>
      <itemizedlist>
	<listitem>
	  <para>Designing curriculum sequences as activity trees.</para>
	</listitem>
	<listitem>
	  <para>Implementing conditional (rule-based) sequencing.</para>
	</listitem>
	<listitem>
	  <para>Extending the user interface to fully manage the activity trees.</para>
	</listitem>
	<listitem>
	  <para>Modifying the curriculum bar to reflect the branched sequencing.</para>
	</listitem>
	<listitem>
	  <para>Adapting OpenACS terminology to IMS terminology.</para>
	</listitem>
	<listitem>
	  <para>Writing documentation for this version of Curriculum.</para>
	</listitem>
      </itemizedlist>
    </sect2>
    <sect2 id="testing">
      <title>Third Iteration - Mastery Testing</title>
      <para>Implementation of user mastery tests, in cooperation with the Assessment module, to control the user's level of attainment. This iteration involves: </para>
      <itemizedlist>
	<listitem>
	  <para>Authoring service contracts with the upcoming Assessment module.</para>
	</listitem>
	<listitem>
	  <para>Modifying the curriculum bar to show any tests connected to elements.</para>
	</listitem>
	<listitem>
	  <para>Extending admin and index pages to inform users of test result details.</para>
	</listitem>
	<listitem>
	  <para>Beautifying the UI and revising the general usability.</para>
	</listitem>
	<listitem>
	  <para>Writing documentation for this version of Curriculum.</para>
	</listitem>
      </itemizedlist>
    </sect2>
    <sect2 id="interop">
      <title>Fourth Iteration - LMS Interoperability</title>
      <para>Implementation of IMS (and SCORM) standards for packaging simple sequences into XML files for external LMSs to import. This iteration involves:</para>
      <itemizedlist>
	<listitem>
	  <para>Enabling packaging of simple sequences into standard XML files (manifests) for export, following IMS specifications, using the Learning Object Repository.</para>
	</listitem>
	<listitem>
	  <para>Facilitating translation of internal terminology to external terminology.</para>
	</listitem>
	<listitem>
	  <para>Creating a user interface for easy exportation of curriculum sequences.</para>
	</listitem>
	<listitem>
	  <para>Revising the UI and curriculum bar behavior to provide true adaptive learning.</para>
	</listitem>
	<listitem>
	  <para>Writing documentation for this version of Curriculum.</para>
	</listitem>
      </itemizedlist>
    </sect2>
  </sect1>
</article>