Sharebar?

IMS Simple Sequencing Best Practice and Implementation Guide Version 1.0 Final

IMS Logo

IMS Simple Sequencing Best Practice and Implementation Guide

Version 1.0 Final Specification

Copyright © 2003 IMS Global Learning Consortium, Inc. All Rights Reserved.
The IMS Logo is a trademark of IMS Global Learning Consortium, Inc.
Document Name: IMS Simple Sequencing Best Practice and Implementation Guide
Revision: 03 March 2003


 

Table of Contents


1. Introduction
     1.1 Overview
     1.2 Scope and Context
     1.3 Structure of this Document
     1.4 Nomenclature
     1.5 References

2. Relationship to Other Specifications
     2.1 IMS Specifications
           2.1.1 IMS Content Packaging
           2.1.2 IMS Question and Test Interoperability
           2.1.3 IMS Reusable Definition of Competency or Educational Objectives
           2.1.4 IMS Learning Design
     2.2 Related Specifications
           2.2.1 ADL SCORM
     2.3 IMS Specification Development Process

3. Overview of the Simple Sequencing Model
     3.1 Conceptual Model
           3.1.1 Scope
           3.1.2 Learning Activity
           3.1.3 Activity Tree
           3.1.4 Activity Resources
           3.1.5 Activity Clusters
           3.1.6 Navigation Control Modes
           3.1.7 Rule-Based Sequencing - Conditional Rules

4. Basic Examples
     4.1 Example of Sequencing Element
     4.2 Example of Sequencing Rules
     4.3 Example of Rollup Rules
     4.4 Example of Limit Conditions
     4.5 Example of Learning Objectives
     4.6 Example of Auxiliary Resources

5. Advanced Examples
     5.1 Photoshop - Remediation
     5.2 Photoshop - Data Mapping

6. Interaction with Content Packaging
     6.1 Content Aggregation
     6.2 Activity Tree
     6.3 Example of Embedded Sequencing Information

7. Runtime Implementation
     7.1 The Sequencing Loop
           7.1.1 Navigation Behavior
           7.1.2 Exit Behavior
           7.1.3 Rollup Rules
           7.1.4 Sequencing Behavior
           7.1.5 Delivery Behavior

8. Best Practice Recommendations
     8.1 Status Information Model
     8.2 Behavior Model
     8.3 Data Types, Multiplicities, and Obligations
     8.4 Binding of Simple Sequencing Information
     8.5 Data Collection and Updating Best Practices
           8.5.1 Data Updates
     8.6 Rule Evaluation Best Practices
           8.6.1 Order of Evaluation
           8.6.2 Optimizations
     8.7 Activity Tree Traversal
     8.8 Handling of Tracking Data Best Practices
     8.9 Numeric Tracking Data Best Practices

Appendix A - Glossary of Elements and Attributes

Appendix B - List of Example Files

Appendix C - SCORM Application Profiling of Simple Sequencing

About this Document
     List of Contributors

Revision History

Index


1. Introduction

1.1 Overview

The IMS Simple Sequencing Specification provides a means to represent information needed to sequence learning activities in a variety of ways. This Best Practice and Implementation Guide provides examples, clarifying explanations, implementation suggestions, and other information which may be used to develop systems which deliver sequenced content based on the Simple Sequencing Information Model [SS 03a]. Since this is the first version of this document, the practices included here represent early experience and will likely improve with future versions.

This is the first version of this specification and there is no previous history of this document, other than the drafts which preceded it. The IMS Simple Sequencing Specification stands on its own and may be used to describe sequencing information which is embedded in an IMS Content Packaging manifest. Alternatively, this information may be included in its own file.

1.2 Scope and Context

This document is the first version of the IMS Simple Sequencing Best Practice and Implementation Guide. As such it should be used in conjunction with:

  • IMS Simple Sequencing Information and Behavior Model v1.0 [SS 03a];
  • IMS Simple Sequencing XML Binding v1.0 [SS 03b].

1.3 Structure of this Document

The structure of this document is:

 
2. Relationship to Other Specifications

The relationship of this specification to other IMS and external specification activities.

3. Overview of the SS Model A brief summary of the IMS SS behavior and information models.
4. Basic Examples

Basic examples of SS enabled content.

5. Advanced Examples

Advanced examples of SS enabled content.

6. Interaction with Content Packaging Implementation guidance and tips for SS in the context of an IMS Content Package.
7. Runtime Implementation

Implementation guidance and tips for run time system developers.

8. Best Practice Recommendations

Implementation guidance and tips for content developers.

Appendix A Glossary of Elements and Attributes.
Appendix B List of Example Files.
Appendix C SCORM Application Profiling of Simple Sequencing.

1.4 Nomenclature

The following abbreviations and acronyms are used in this document:

 
ADL Advanced Distributed Learning
AICC Aviation Industry CBT Committee
ANSI American National Standards Institute
API Application Programming Interface
CBT Computer Based Training
CMI Computer Managed Instruction
CPI Content Packaging Interchange
DTD Document Type Definition
IEEE Institute of Electronic & Electrical Engineering
ISO International Standards Organization
JTC Joint Technical Committee
LTS Learning Technology System
LTSC Learning Technology Standards Committee
SCORM Shareable Courseware Object Reference Model
SS Simple Sequencing
W3C World Wide Web Consortium
XML Extensible Mark-up Language

1.5 References

The following document references are identified:

 
[SS, 03a,b]

IMS Simple Sequencing Specification Information Model, Binding Guide v1.0, March 2003

[CP, 01a,b,c]

IMS Content Packaging Specification - Information Model, Binding, Best Practices v1.1.2, August 2001

[QTI, 02a,b,c]

IMS Question and Test Interoperability Specification - Information Model, Binding, Best Practices v1.2, February 2002

[RDCEO, 02a,b,c]

IMS Reusable Definition of Competency or Educational Objective Specification - Information Model, Binding, Best Practices v1.0, October 2002

[LD, 03a,b,c]

IMS Learning Design Specification - Information Model, Binding, Best Practices v1.0, January 2003

[RFC 1766]

http://ds.internic.net/rfc/rfc1766.txt (xml:lang)

[SCORM] http://www.adlnet.org (ADL SCORM)

2. Relationship to Other Specifications

2.1 IMS Specifications

Version 1.0 of the IMS Simple Sequencing Specification is made up of three documents:

  • IMS Simple Sequencing Information and Behavior Model - Version 1.0. This document describes the data structures that are used to provide interoperability between learning management systems which sequence learning activities;
  • IMS Simple Sequencing XML Binding - Version 1.0. This document describes how to encode the sequencing objects in XML and provides the corresponding XML schema;
  • IMS Simple Sequencing Best Practice and Implementation Guide - Version 1.0. This document (the one you are reading now) provides an overview and describes how the IMS Simple Sequencing Information Model and XML Binding can be applied to specific types of interoperability scenarios.

The IMS Simple Sequencing Specification is related to other IMS specifications, both complete and in-progress. This specification is intended to be consistent with these other initiatives wherever possible, in order to reduce redundancy and confusion between specifications. The related specifications are:

  • IMS Content Package Specification - the IMS Simple Sequencing Specification was developed to allow sequencing descriptions to be embedded within a IMS Content Packaging manifest file using the XML namespace extension set aside for IMS Simple Sequencing [CP, 01a], [CP 01b], [CP, 01c].
  • IMS Question and Test Interoperability Specification - the IMS QTI Specification defines the structures used to support the exchange of question and test data [QTI, 02a], [QTI, 02b], [QTI, 02c].
  • IMS Reusable Definition of Competency or Educational Objective Specification - the IMS RDCEO Specification defines structures which allow competency and educational objectives to be defined in a simple and interoperable manner [RDCEO, 02a], [RDCEO, 02b], [RDCEO, 02c].
  • IMS Learning Design Specification - the Learning Design Specification provides information about learning resources, learning roles, and high level sequencing [LD, 03a], [LD, 03b], [LD, 03c].

2.1.1 IMS Content Packaging

The IMS Simple Sequencing binding defines a unique namespace for sequencing elements in such a way as to permit these elements to be embedded within an IMS Content Packaging manifest file. Elements in the Simple Sequencing namespace can be considered as extending the functionality of Content Packaging to included additional sequencing information. Simple Sequencing elements are intended to be included in the <organization> element of Content Packaging, which contains items that may be recursively included to create hierarchical trees of items. This tree corresponds to the activity tree that drives sequencing.

2.1.2 IMS Question and Test Interoperability

Several potential areas of harmonization with QTI have been identified during the development of Simple Sequencing. These include:

  • randomization, selection, and ordering
  • assessments as learning activities
  • using assessment to affect sequencing behavior

Simple Sequencing defines randomization of activities in a manner similar to that of QTI. Both the selection of activities from a set and/or random ordering of activities are supported. Simple sequencing does not support the filtering capability defined in QTI 1.2.

Learning activities are defined by resources associated with the leaf nodes of the Simple Sequencing activity tree or by aggregations of these nodes. Simple Sequencing does not place any restrictions on what can be sequenced in such a tree. An assessment defined by QTI could be one such activity. It is up to the learning management system (LMS) to detect assessments defined by QTI and deliver them in an appropriate manner.

QTI defines a means to associate competency, skill, mastery, or learning objectives with a question or set of questions. Simple Sequencing, in turn, defines an objective identifier and associated rules for testing mastery. More work is needed to determine how information flows between QTI and sequencing, but the mastery objective reference ID number should provide the basic link to make this happen.

2.1.3 IMS Reusable Definition of Competency or Educational Objectives

The IMS RDCEO Specification defines a means to create and identify competency (skill, mastery, objective, etc.) objects. Among the required pieces of information for an RDCEO object definition is an identifier string which could serve as an objective reference ID number.

2.1.4 IMS Learning Design

The IMS Learning Design Specification defines a learning activity and the various roles people take on in the learning process. It includes three levels which define resources, added conditions and properties, and finally, notification. It is intended to support a diverse set of learning styles and approaches.

The conditions and properties capability supported by Level 2 Learning Design includes the ability to sequence learning activities. This can be viewed as an alternative approach to Simple Sequencing which includes provisions for learning styles not addressed by this specification. Additional work will be required to determine how these sequencing styles might interact.

2.2 Related Specifications

2.2.1 ADL SCORM

The ADL Sharable Content Object Reference Model (SCORM)] describes a Web-based learning content aggregation model and runtime environment for learning objects. The current version of the SCORM (v1.2) is based on the IMS Content Packaging Specification, IMS Meta-Data Specification, an AICC data model, and a communications interface developed in conjunction with the IEEE LTSC. Simple Sequencing was developed to enhance the sequencing capabilities in SCORM and is expected to be released as SCORM v1.3. Simple Sequencing is, however, a general purpose sequencing method and may be incorporated in other applications or environments.

2.3 IMS Specification Development Process

The development lifecycle for an IMS specification has been established as:

  • Month 0 - setup of the team including identification of the team leads (for Simple Sequencing, this was Ron Ball, ADL Co-labs and Brandt Dargue, Boeing Corporation; later Brendon Towle, Thomson NETg, replaced Ron Ball), editors (for Simple Sequencing this was initially Ron Ball; Angelo Panar, ADL Co-labs; Claude Ostyn, Click2Learn; and Mark Norton, IMS Global Learning Consortium, Inc.), and key collaborating groups and organizations. Team and scope/requirements development;
  • Month 1 - Initial internal team documents developed;
  • Months 2 & 3 - Base document development and vote. Approval of the Base Documents by the Technical Board;
  • Months 4 & 5 - Document improvement. Open issues are identified and solutions developed. Companies are encouraged to develop code against the base documents. Further document improvement and feedback from organizations involved in implementations;
  • Month 6 - Completion of the Public Draft Specification and approval by the IMS Technical Board;
  • Months 7 & 8 - Accept feedback from organizations working to the Public Draft Specification. Resolve any issues raised;
  • Month 9 - Completion of the Final Specification and approval by the IMS Technical Board. This is the combination of the Public Draft Specification plus resolutions due to experience gained in working with it.

The term 'Base Document' is used for draft specifications that have reached a relatively high level of stability based on input from the team and the Technical Board. Base documents represent the stage in the specification process of final development and refinement. It is base documents that are presented in their final forms to the IMS Technical Board for vote. If approved, the document becomes a 'Public Draft Specification' and is listed as such on the IMS Public Website. If not approved, the team works through whatever adjustments and recommendations the Technical Board provides, and then resubmits the document. After three months the Public Draft Specification should be adopted as a 'Final Specification'.

After a Final Specification is released, the team develops the next scope document and seeks a charter for subsequent work. New requirements and features dropped from the previous specification constitute the scope of the next effort.

3. Overview of the Simple Sequencing Model

The Simple Sequencing model is intended to provide base level support for sequencing learning activities. It is purposely neutral with regard to models of pedagogy and the use of instructional strategies, but it describes only fairly simple behaviors in order to limit the specification and especially conformance verification to a manageable scope.

3.1 Conceptual Model

Sequencing occurs within a conceptual runtime environment which translates navigation events into navigation requests to the sequencing engine. Results of sequencing are then used to modify or create the user interface which the learner sees. This model is intended to give enough background to an implementer to understand how the Simple Sequencing Specification can fit into a complete delivery environment. The examples and practices given here are for illustration purposes only and represent only one way to realize the Simple Sequencing Model in an actual implementation.

3.1.1 Scope

the simple sequencing problem space

 

Figure 3.1 - Problem space.

The Simple Sequencing Specification addresses a small but productive segment of the entire problem space for learning content sequencing. The IMS Simple Sequencing Specification relies on the concept of learning activities. A learning activity may be loosely described as an instructional event or events embedded in a content resource, or as an aggregation of activities that eventually resolve to discreet content resources with their contained instructional events.

3.1.2 Learning Activity

A Learning Activity is a pedagogically neutral unit of instruction, knowledge, assessment, etc. It can have sub-activities and may be nested to an arbitrarily deep level. Each activity may have a tracking status associated for each learner that is assigned to experience the activity. Activities can be attempted any number of times, or the number can be specified. They can be suspended, abandoned, exited normally, etc. All activities are performed within the context of a parent activity.

3.1.3 Activity Tree

The activities managed through Simple Sequencing are arranged as an activity tree (see Figure 3.2). LMS sequencing behavior is described in terms of traversing the nodes of the tree to determine which activity to deliver to the learner. Each node in this tree is an activity.

The tree is not necessarily balanced and its branches are not necessarily of equal length. There is an implicit containment hierarchy in the tree. For example, activity AB is said to be part of activity A. Activity ABCA is part of activity ABC which is part of activity AB. You can assign any conceptual label you want to those activities. For example, one could say that A is a course, AA a lesson, and AAA a step in that lesson. Another implementer may define A as a curriculum, AA as an assigned task, and AAA as a lesson.

activity tree

 

Figure 3.2 - Activity tree.

The Simple Sequencing Specification defines the canonical traversal of the activity tree as pre-order traversal. Using the example in Figure 3.2, this means that, starting from A, the traversal would go to AA, then AAA, then AAB, then AAC, then AB, then ABA, etc. Note that the reverse pre-order traversal is not just a mirror image of the forward pre-order traversal. Using the example in Figure 3.2 again, the precedent of AC is ABCA, not AB.

The default traversal path can be modified through the association of sequencing rules created by a learning designer. Traversal is triggered by a sequencing request, which in turn is triggered by the learner through navigational events or by the delivery system itself. Sequencing rules are evaluated at runtime and can be conditional based on tracking status. Activities are always delivered one at a time and may have auxiliary resources associated with them.

Note: The activity tree can be represented as an <organization> element in the IMS Content Packaging Specification. The top level activity is the <organization> itself, and each node in the tree is an <item> in the <organization>. However, the Simple Sequencing Specification itself makes no assumptions about packaging of the learning content. The same Simple Sequencing behaviors and rules defined in this specification could be used for content that is assembled and managed dynamically by an intelligent tutoring system, for example.

3.1.4 Activity Resources

A content resource may be associated with any node in the activity tree that is a leaf node. What this means is that the delivery of an activity involves the delivery of the content resource. The Simple Sequencing Specification assumes that some content resources may be able to communicate results, and others not. For example, a resource may be a "dumb" document or HTML page, or it may be a SCO as defined in SCORM. Simple Sequencing assumes that some results that map to the status data model defined in the specification; however, it does not define how to communicate the data. There can be different ways to do this, all of which would work with Simple Sequencing. Therefore, how a content resource can communicate results must be defined elsewhere.

If no content resource is associated with a leaf node, Simple Sequencing does not specify any particular behavior. This is an example of an undefined behavior, which is outside the scope of the Simple Sequencing Specification.

3.1.5 Activity Clusters

Simple Sequencing rules are associated with clusters of activity nodes. In Simple Sequencing, the term cluster refers to a single node and its immediate children. The scope of a particular rule never extends beyond the cluster. For example, many rules govern how to handle the sub-activities in a cluster, or rollup the result of the sub-activities in a cluster. Those rules are associated with the parent node in the cluster. Other rules are associated with a specific activity and do not affect its children.

Examples of Clusters

 

Figure 3.3 - Examples of Clusters.

3.1.6 Navigation Control Modes

Unless otherwise specified, a learner is allowed to choose any sub-activity in a cluster, but a guided flow through the cluster can also be specified. Flowing through a cluster as a learner continues from activity to activity delivers each of the sub-activities in the cluster, one after the other, as shown in Figure 3.4. The rule that governs whether such guided flow is enabled is associated with the parent node in the cluster. If the sub-activities are leaf nodes with an associated content resource, the flow of sequencing will deliver each of these content resources, one after the other.

Enabling forward flow for activity AA. The learner sees AAA, AAB, then AAC

 

Figure 3.4 - Enabling forward flow for activity AA. The learner sees AAA, AAB, then AAC.

The basic control modes that govern this behavior are choice and flow, each of which can be enabled or disabled. If choice is disabled, the user is not allowed to choose but must follow the defined flow. If flow is enabled, the user is guided through the activities according to the structure of the tree. Both can be enabled at the same time, in which case the user can choose any activity, but can also be guided. However, both cannot be disabled at the same time.

The same control modes can be specified for all the clusters in an activity tree, or they can be different for different clusters. For example, the learner may be guided by flow through a sequence of exercises within which she is free to choose different practice items.

3.1.7 Rule-Based Sequencing - Conditional Rules

Complex navigation behaviors may be achieved by assigning rules to different nodes at different levels of nesting. Figure 3.5 shows how the traversal of the tree as the user continues from activity to activity when flow is enabled can be affected by rules. In this example, specific nodes have a rule that specifies that they should be skipped under certain conditions. Each cluster is given a rule called "control mode" that enables flowing through its children, and specific nodes are given a conditional rule that states that it should be skipped.

Example of effect of rules that affect navigation for specific activity nodes (conditional skip)

 

Figure 3.5 - Example of effect of rules that affect navigation for specific activity nodes (conditional skip).

Many of the conditional rules defined in Simple Sequencing are based on data collected by tracking the results of activities. When an activity contains sub-activities, in other words when it is the parent node in an activity cluster, the results of the sub-activities are rolled up into summary results for the cluster. This is not always desirable. For example, whether a learner succeeded in a free practice should not affect the result of a course. Rollups can be controlled in two ways. One way is by the assignment of rollup rules to a cluster, as shown in Figure 3.6. The other way is by "tagging" a particular sub-activity to specify it should not be included in rollups.

Example of the effect of a rule that controls rollup of sub-activity results

 

Figure 3.6 - Example of the effect of a rule that controls rollup of sub-activity results.

4. Basic Examples

The IMS Simple Sequencing Specification defines a set of elements that describe how activities organized in an activity tree should be presented to the user. This presentation, or sequencing is defined by normative behaviors closely associated with these elements. These behaviors must be properly implemented to ensure a consistent user experience from system to system.

Any packaged collection of learning activities may contain sequencing descriptions defined by the Simple Sequencing Specification. This description is comprised of elements defined in the Simple Sequencing Information Model that are expected to be used in a manner described by the Simple Sequencing Information and Behavior Model.

The IMS Content Packaging Specification describes one way to package collections of learning activities using a file called a manifest. Simple Sequencing elements may be included in this manifest in an <organization> element. If a <sequencing> element is present in the manifest, it indicates that a sequencing process will be required to deliver these activities in a consistent manner. Although the presences of a <sequencing> element indicates that sequencing information is present, parsing the manifest every time to determine this could be inefficient. One approach to making it easier to determine if sequencing is needed would be to add meta-data to the top level of the manifest. A vocabulary extension such as follows could be used:

<technical>
      <requirement>
         <type>
            <source>IMS</source>
            <value>IMS Sequencing 1.0</value>
         <type>
      </requirement>
</technical>

Note that a Content Package may have multiple <organization> sections in an <organizations>. These may contain separate or alternative sequencing descriptions. For example, one organization may contain a set of 'dumb' content to presented in the default order, while another organization may allow richer interaction by including sequencing data.

The following diagrams show the various sequencing elements and how they are assembled into groups of elements that describe how activities should be sequenced.

4.1 Example of Sequencing Element

<sequencing> element

 

Figure 4.1 - <sequencing> element.

Sequencing information consists of an identifier and sequencing reference, plus additional information. The control mode specifies how sequencing will proceed for this node: flow, auto advance, or choice. Sequencing rules provide details of the rules to be used for sequencing behavior. Limit conditions allow limits to be placed on the number attempts, etc. Auxiliary resources provide a means to link in other resources such as glossaries, help text, Interactive Electronic Technical Manuals (IETMs), etc. Rollup rules control how information in sub-activities are rolled up into higher level nodes in the activity tree. Objectives are a list of learning objectives associated with this node. Randomization controls define how selection and randomization of activities are to be done. Finally, the delivery controls are used when the activity is delivered.

Diagram of basic sequencing behavior

 

Figure 4.2 - Diagram of basic sequencing behavior.

Here is a basic example of how sequencing information can be merged into an IMS Content Package manifest:

<?xml version = "1.0" encoding = "UTF-8"?>
<manifest xmlns = "http://www.imsglobal.org/xsd/imscp_v1p1" 
      xmlns:imsss = "http://www.imsglobal.org/xsd/imsss"
      xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation = "http://www.imsglobal.org/xsd/imsss Schemas/imsss_v1p0.xsd 
         http://www.imsglobal.org/xsd/imscp_v1p1 Schemas/imscp_v1p1p3.xsd" 
      identifier = "BBT_TLCExamplePostTest">
<!-- This manifest contains a solution to the following ID Problem:
 * Deliver content, then post-test
 * If student doesn't pass the post-test, deliver remediation, then repeat the content and post-test
-->
      <organizations>
         <organization identifier = "Organization">
            <item identifier = "Unit">
               <item identifier = "Content"/>
               <item identifier = "Posttest">
                  <imsss:sequencing>
                     <imsss:objectives>
                        <imsss:primaryObjective objectiveID = "posttest1" satisfiedByMeasure = "true">
                           <imsss:mapInfo targetObjectiveID = "content1" readSatisfiedStatus = "true"/>
                        </imsss:primaryObjective>
                     </imsss:objectives>
                  </imsss:sequencing>
               </item>
               <item identifier = "Remediation">
                  <imsss:sequencing>
                     <imsss:sequencingRules>
                        <imsss:preConditionRule>
                           <imsss:ruleConditions>
                              <imsss:ruleCondition condition = "satisfied"/>
                           </imsss:ruleConditions>
                           <imsss:ruleAction action = "skip"/>
                        </imsss:preConditionRule>
                     </imsss:sequencingRules>
                     <imsss:objectives>
                        <imsss:primaryObjective objectiveID = "remediation1">
                           <imsss:mapInfo targetObjectiveID = "content1" readSatisfiedStatus = "true"/>
                        </imsss:primaryObjective>
                     </imsss:objectives>
                  </imsss:sequencing>
               </item>
               <imsss:sequencing>
                  <imsss:controlMode choice = "false" flow = "true" forwardOnly = "true"/>
                  <imsss:sequencingRules>
                     <imsss:postConditionRule>
                        <imsss:ruleConditions>
                           <imsss:ruleCondition condition = "satisfied" operator = "not"/>
                        </imsss:ruleConditions>
                        <imsss:ruleAction action = "retry"/>
                     </imsss:postConditionRule>
                  </imsss:sequencingRules>
                  <imsss:objectives>
                     <imsss:primaryObjective objectiveID = "unit1">
                        <imsss:mapInfo targetObjectiveID="content1" readSatisfiedStatus= "true"/>
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
         </organization>
      </organizations>
      <resources/>
</manifest>

4.2 Example of Sequencing Rules

Sequencing rules are defined by the type of condition present in the rule. Preconditions are actions that control sequencing decisions and delivery of a specific activity. Rules that include such actions are used to determine if the activity will be delivered. Exit conditions include actions that terminate an activity. Rules that include such actions are applied when a descendent of an activity exits. Post conditions are actions that control sequencing flow by issuing sequencing requests. Rules that include such actions are applied when an activity exits.

Diagram of basic sequencing rules

 

Figure 4.3 - Diagram of basic sequencing rules.

This is an example of how pre-condition rules can be used to deliver material passed on a pre-test:

<?xml version = "1.0" encoding = "UTF-8"?>
<manifest xmlns = "http://www.imsglobal.org/xsd/imscp_v1p1" 
      xmlns:imsss = "http://www.imsglobal.org/xsd/imsss"
      xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation = "http://www.imsglobal.org/xsd/imsss Schemas/imsss_v1p0.xsd 
         http://www.imsglobal.org/xsd/imscp_v1p1 Schemas/imscp_v1p1p3.xsd" 
      identifier = "BBT_TLCExamplePostTest">
<!-- This manifest contains a solution to the following ID Problem:
 * Require pretest before content
 * Deliver material based on score in pretest
      * N < 25% => Remediation then General
      * 25% < N < 75% => General only
      * 75% < N < 90% => General then Advanced
      * N > 90% => Advanced only
 * Allow student to choose any material, regardless of score
-->      
<organizations>
         <organization identifier = "Organization">
            <item identifier = "Course">
               <item identifier = "Pretest">
                  <imsss:sequencing>
                     <imsss:sequencingRules>
                        <imsss:preConditionRule>
                           <imsss:ruleConditions>
                              <imsss:ruleCondition condition = "attempted" 
                                 operator = "not"/>
                           </imsss:ruleConditions>
                           <imsss:ruleAction action = "stopForwardTraversal"/>
                        </imsss:preConditionRule>
                     </imsss:sequencingRules>
                     <imsss:objectives objectiveID = "pretest1">
                        <imsss:primaryObjective>
                           <imsss:mapInfo targetObjectiveID = "content1" 
                              writeSatisfiedStatus = "true"/>
                        </imsss:primaryObjective>
                     </imsss:objectives>
                  </imsss:sequencing>
               </item>
               <item identifier = "Content" isvisible = "false">
                  <item identifier = "Remediation">
                     <imsss:sequencing>
                        <imsss:sequencingRules>
                           <imsss:preConditionRule>
                              <imsss:ruleConditions>
                                 <imsss:ruleCondition condition = 
                                    "objectiveMeasureGreaterThan" 
                                    referencedObjective = "remediation1" 
                                    measureThreshold = "0.25"/>
                              </imsss:ruleConditions>
                              <imsss:ruleAction action = "skip"/>
                           </imsss:preConditionRule>
                        </imsss:sequencingRules>
                        <imsss:objectives>
                           <imsss:primaryObjective objectiveID = "remediation1">
                              <imsss:mapInfo targetObjectiveID = "content1" 
                                 readSatisfiedStatus = "true"/>
                           </imsss:primaryObjective>
                        </imsss:objectives>
                     </imsss:sequencing>
                  </item>
                  <item identifier = "General">
                     <imsss:sequencing>
                        <imsss:sequencingRules>
                           <imsss:preConditionRule>
                              <imsss:ruleConditions>
                                 <imsss:ruleCondition condition = 
                                    "objectiveMeasureGreaterThan" 
                                    referencedObjective = "general1" 
                                    measureThreshold = "0.90"/>
                              </imsss:ruleConditions>
                              <imsss:ruleAction action = "skip"/>
                           </imsss:preConditionRule>
                        </imsss:sequencingRules>
                        <imsss:objectives>
                           <imsss:primaryObjective objectiveID = "general1">
                              <imsss:mapInfo targetObjectiveID = "content1" 
                                 readSatisfiedStatus = "true"/>
                           </imsss:primaryObjective>
                        </imsss:objectives>
                     </imsss:sequencing>
                  </item>
                  <item identifier = "Advanced">
                     <imsss:sequencing>
                        <imsss:sequencingRules>
                           <imsss:preConditionRule>
                              <imsss:ruleConditions>
                                 <imsss:ruleCondition condition = 
                                    "objectiveMeasureLessThan" 
                                    referencedObjective = "advanced1" 
                                    measureThreshold = "0.75"/>
                              </imsss:ruleConditions>
                              <imsss:ruleAction action = "skip"/>
                           </imsss:preConditionRule>
                        </imsss:sequencingRules>
                        <imsss:objectives>
                           <imsss:primaryObjective objectiveID = "advanced1">
                              <imsss:mapInfo targetObjectiveID = "content1" 
                                 readSatisfiedStatus = "true"/>
                           </imsss:primaryObjective>
                        </imsss:objectives>
                     </imsss:sequencing>
                  </item>
                  <imsss:sequencing>
                     <imsss:controlMode choice = "true" flow="true" forwardOnly = "false"/>
                  </imsss:sequencing>
               </item>
               <imsss:sequencing>
                  <imsss:controlMode choice = "false" flow = "true" forwardOnly = "true"/>
               </imsss:sequencing>
            </item>
         </organization>
      </organizations>
      <resources/>
</manifest>

4.3 Example of Rollup Rules

Multiple rollup rules can be associated with a cluster or activity. The child activity set defines when the rule is triggered based on the rollup conditions of its children. These include all, any, none, at least count, and at least percent. Rollup conditions include satisfied, objective status known, objective measure known, etc. Finally, a number of rollup actions are defined including: satisfied, not satisfied, and completed.

Here is an example of rollup rules, presented as sequencing information outside of a manifest:

<?xml version = "1.0" encoding = "UTF-8"?>
<!--Generated by Turbo XML 2.3.1.100. Conforms to w3c http://www.w3.org/2001/XMLSchema-->
<xs:schema xmlns = "http://www.imsglobal.org/xsd/imsss"
       targetNamespace = "http://www.imsglobal.org/xsd/imsss"
       xmlns:xs = "http://www.w3.org/2001/XMLSchema"
       elementFormDefault = "qualified"
       attributeFormDefault = "unqualified">
      <xs:include schemaLocation = "imsss_v1p0util.xsd"/>
      
      <xs:complexType name = "rollupRuleType">
         <xs:sequence>
            <xs:element name = "rollupCondition" maxOccurs = "unbounded" block = "#all">
               <xs:complexType>
                  <xs:attribute name = "operator" default = "noOp" type = "conditionOperatorType"/>
                  <xs:attribute name = "condition" use = "required" type = "rollupRuleConditionType"/>
               </xs:complexType>
            </xs:element>
            <xs:element name = "rollupAction" block = "#all">
               <xs:complexType>
                  <xs:attribute name = "action" use = "required" type = "rollupActionType"/>
               </xs:complexType>
            </xs:element>
         </xs:sequence>
         <xs:attribute name = "childActivitySet" default = "all" type = "childActivityType"/>
         <xs:attribute name = "minimumCount" default = "0" type = "xs:integer"/>
         <xs:attribute name = "minimumPercent" default = "0" type = "percentType"/>
         <xs:attribute name = "conditionCombination" default = "any" type = "conditionCombinationType"/>
      </xs:complexType>
      <xs:complexType name = "rollupRulesType">
         <xs:sequence>
            <xs:element name = "rollupRule" type = "rollupRuleType" minOccurs = "0" maxOccurs = "unbounded" 
               block = "#all"/>
         </xs:sequence>
         <xs:attribute name = "rollupObjectiveSatisfied" default = "true" type = "xs:boolean"/>
         <xs:attribute name = "rollupProgressCompletion" default = "true" type = "xs:boolean"/>
         <xs:attribute name = "objectiveMeasureWeight" default = "1.0000" type = "weightType"/>
      </xs:complexType>
</xs:schema>

4.4 Example of Limit Conditions

Limit conditions impose constraints on access to activities based on time of day, time spent on the activity, and number of attempts. Attempt limits prevent an activity from being accessed more than a given number of times. Absolute Duration limits access to a time duration based on the start and end time points. Experienced Duration limits access to the amount of time that the learner views an activity. Begin time limit indicates that an activity cannot be started before the time specified and end time limit indicates that it must be completed by the time point specified.

Some example of limit condition rules:

<?xml version = "1.0" encoding = "UTF-8"?>
<!--Generated by Turbo XML 2.3.1.100. Conforms to w3c http://www.w3.org/2001/XMLSchema-->
<xs:schema xmlns = "http://www.imsglobal.org/xsd/imsss"
       targetNamespace = "http://www.imsglobal.org/xsd/imsss"
       xmlns:xs = "http://www.w3.org/2001/XMLSchema"
       elementFormDefault = "qualified"
       attributeFormDefault = "unqualified">
      <xs:complexType name = "limitConditionsType">
         <xs:attribute name = "attemptLimit" type = "xs:nonNegativeInteger">
               <xs:annotation>
                  <xs:documentation>Limit Condition Attempt Limit</xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name = "attemptAbsoluteDurationLimit" type = "xs:duration" >
               <xs:annotation>
                  <xs:documentation>Limit Condition Activity Attempt Absolute Duration Limit.  
                  Typed as 
                  xs:duration: see http://www.w3.org/TR/xmlschema-2/#duration</xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name = "attemptExperiencedDurationLimit" type = "xs:duration">
               <xs:annotation>
                  <xs:documentation>Limit Condition Activity Attempt Experienced Duration Limit.  
                  Typed as 
                  xs:duration: see http://www.w3.org/TR/xmlschema-2/#duration</xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name = "activityAbsoluteDurationLimit" type = "xs:duration">
               <xs:annotation>
                  <xs:documentation>Limit Condition Activity Absolute Duration Limit.  
                  Typed as 
                  xs:duration: see http://www.w3.org/TR/xmlschema-2/#duration</xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name = "activityExperiencedDurationLimit" type = "xs:duration" >
               <xs:annotation>
                  <xs:documentation>Limit Condition Activity Experienced Duration Limit.  
                  Typed as 
                  xs:duration: see http://www.w3.org/TR/xmlschema-2/#duration</xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name = "beginTimeLimit" type = "xs:dateTime">
               <xs:annotation>
                  <xs:documentation>Limit Condition Begin Time Limit</xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name = "endTimeLimit" type = "xs:dateTime">
               <xs:annotation>
                  <xs:documentation>Limit Condition End Time Limit</xs:documentation>
               </xs:annotation>
            </xs:attribute>
      </xs:complexType>
</xs:schema>

4.5 Example of Learning Objectives

Each activity can have one or more educational objectives associated with it. The first objective in the list of objectives is considered to be the primary objective. Additional objectives may be included also. Each objective has a flag to indicate that some measure of completion has been satisfied along with an objective ID string which can be used to tie such measurements to a competency or objective management system (not included in this specification). The objective may contain a minimum normalized measure score, which is the number used to determine if completion is met. Finally, mapping information can be used to indicate how the measure is mapped onto an unspecified data model. If multiple objectives are present, then each instance must contain an objective ID.

An example of the use of objectives:

<?xml version = "1.0" encoding = "UTF-8"?>
<!--Generated by Turbo XML 2.3.1.100. Conforms to w3c http://www.w3.org/2001/XMLSchema-->
<xs:schema xmlns = "http://www.imsglobal.org/xsd/imsss"
       targetNamespace = "http://www.imsglobal.org/xsd/imsss"
       xmlns:xs = "http://www.w3.org/2001/XMLSchema"
       elementFormDefault = "qualified"
       attributeFormDefault = "unqualified">
      <xs:include schemaLocation = "imsss_v1p0util.xsd"/>
      <xs:complexType name = "objectiveType">
         <xs:sequence>
            <xs:element name = "minNormalizedMeasure" type = "measureType" default = "1.00000" 
               minOccurs = "0" block = "#all"/>
            <xs:element name = "mapInfo" type = "objectiveMappingType" minOccurs = "0" block = "#all"/>
         </xs:sequence>
         <xs:attribute name = "satisfiedByMeasure" default = "false" type = "xs:boolean"/>
      </xs:complexType>
      <xs:complexType name = "objectivesType">
         <xs:annotation>
            <xs:documentation>The specification states: "Each activity must have one and only one objective that contributes to rollup".  The following type describes an unbounded set of elements all named "objective" that do not contribute to rollup, and one element called "primaryObjective" that contributes to rollup.</xs:documentation>
         </xs:annotation>
         <xs:sequence>
            <xs:element name = "primaryObjective" block = "#all">
               <xs:annotation>
                  <xs:documentation>Contributes to rollup of the activity. </xs:documentation>
               </xs:annotation>
               <xs:complexType>
                  <xs:complexContent>
                     <xs:extension base = "objectiveType">
                        <xs:attribute name = "objectiveID" type = "xs:string"/>
                     </xs:extension>
                  </xs:complexContent>
               </xs:complexType>
            </xs:element>
            <xs:element name = "objective" minOccurs = "0" maxOccurs = "unbounded" block = "#all">
               <xs:annotation>
                  <xs:documentation>Does not contribute to the rollup of the activity.</xs:documentation>
               </xs:annotation>
               <xs:complexType>
                  <xs:complexContent>
                     <xs:extension base = "objectiveType">
                        <xs:attribute name = "objectiveID" use = "required" type = "xs:string"/>
                     </xs:extension>
                  </xs:complexContent>
               </xs:complexType>
            </xs:element>
         </xs:sequence>
      </xs:complexType>
      <xs:complexType name = "objectiveMappingType">
         <xs:annotation>
            <xs:documentation>The type that describes an individual objective mapping. Mapping one local objective
             GUID to one global objective GUID</xs:documentation>
         </xs:annotation>
         <xs:attribute name = "targetObjectiveID" use = "required" type = "xs:string"/>
         <xs:attribute name = "readSatisfiedStatus" default = "true" type = "xs:boolean"/>
         <xs:attribute name = "readNormalizedMeasure" default = "true" type = "xs:boolean"/>
         <xs:attribute name = "writeSatisfiedStatus" default = "false" type = "xs:boolean"/>
         <xs:attribute name = "writeNormalizedMeasure" default = "false" type = "xs:boolean"/>
      </xs:complexType>
</xs:schema>

4.6 Example of Auxiliary Resources

Auxiliary resources may be associated with an activity node. These resources allow additional material to be associated with an activity beyond the main content objects. This in turn allows glossary entries, help text, interactive manual pages, etc. to be defined and associated with an activity.

Example of auxiliary resources in use:

<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Turbo XML 2.3.1.100. Conforms to w3c http://www.w3.org/2001/XMLSchema-->
<xs:schema targetNamespace="http://www.imsglobal.org/xsd/imsss" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.imsglobal.org/xsd/imsss" elementFormDefault="qualified" attributeFormDefault="unqualified">
      <xs:include schemaLocation="imsss_v1p0util.xsd"/>
      <xs:complexType name="auxiliaryResourceType">
         <xs:attribute name="auxiliaryResourceID" type="xs:string" use="required"/>
         <xs:attribute name="purpose" type="xs:string" use="required"/>
      </xs:complexType>
      <xs:complexType name="auxiliaryResourcesType">
         <xs:sequence>
            <xs:element name="auxiliaryResource" minOccurs="0" maxOccurs="unbounded"
                type="auxiliaryResourceType" block = "#all"/>
         </xs:sequence>
      </xs:complexType>
</xs:schema>

5. Advanced Examples

The following examples illustrate two more advanced examples of sequencing showing remediation and datamapping. Each is based on a set of modules that teach a short course on Photoshop.

Diagram Symbols

Each example is accompanied by a diagram which shows the course structure in a visual format. The small circles represent sequencing or rollup rules. They are color-coded and associated with the activities they apply to. The large (green) circles represent the order in which the associated activity is sequencing during flow (start, continue, or previous) sequencing requests. The blue ovals represent the objective associated with the activity. An implicit objective mapping is not represented in the diagrams - all objectives (blue ovals) exist both locally and globally (with the same name); pretests write local to global objectives, lessons only read, and posttests both read and write.

The outer bold box in each diagram represents the 'root' activity. Nested boxes represent clusters.

The example Photoshop course consists of several content pieces: an introduction, five modules that contain some number of lessons, and an assessment for each module that consists of five questions. These pieces are reused to illustrate various learning strategies by organizing the pieces in different ways and by applying sequencing rules to the resultant content aggregation.

5.1 Photoshop - Remediation

Choice is not allowed anywhere in the content aggregation. The learner is directed from the introduction to each lesson of the five modules in order. The learner decides when to progress through the content and in what direction by signaling continue and previous events. After all of the modules are experienced, the learner is presented an assessment that consists of all twenty-five questions divided into five, five question parts. The learner 'satisfies' one part of the assessment if they get 80% of the questions correct; 'satisfying' a part of the assessment also 'satisfies' the associated module's objective. After the assessment, the learner is directed through any modules, in order, whose associated objective has not been 'satisfied'; 'satisfied' modules are skipped. The learner decides when to progress through the content and in what direction, by signaling continue and previous events. After the required modules are experienced, the learner is presented a post-test that consists of all twenty-five questions divided into five, five question parts. The learner is only presented post-test parts that correspond to module objectives that where not 'satisfied' in the first assessment; 'satisfied' modules are skipped. The learner 'satisfies' one part of the assessment if they get 80% of the questions correct; 'satisfying' a part of the assessment also 'satisfies' the associated module's objective. The content aggregation exits after the leaner has experienced or skipped each piece of content at least once.

Photoshop Course - Remediation

 

Figure 5.1 - Photoshop Course - Remediation.

The following XML example shows how sequencing rules can be used to implement remediation. Careful note should be made of how objectives are used by the rules to determine which activity is made available to the learner.

<?xml version="1.0" standalone="no" ?>

<manifest identifier="photo-MANIFEST-remediation" version="1.2"
    xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"
    xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3"
    xmlns:imsss = "http://www.imsglobal.org/xsd/imsss"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1p3.xsd
        http://www.imsglobal.org/xsd/imsmd_v1p2 imsmd_v1p2p2.xsd
        http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_rootv1p3.xsd  
        http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd"  >

   <metadata>
      <schema>IMS Content</schema>
      <schemaversion>1.2</schemaversion>
      <lom xmlns="http://www.imsglobal.org/xsd/imsmd_v1p2" >
         <general>
            <title>
               <langstring xml:lang="en-US">Photoshop Tutorial</langstring>
            </title>
            <description>
               <langstring xml:lang="en-US">This tutorial provides you with an overview of the basic skills of Photoshop.</langstring>
            </description>
            <keyword>
               <langstring xml:lang="en-US">Blending Images, Enhancing Images, Special Effects, Basic Skills.</langstring>
            </keyword>
         </general>
      </lom>
   </metadata>
   <organizations default="TOC1">
      <organization identifier="TOC1">
         <title>Photoshop Tutorial</title>
         <item identifier="INTRO" identifierref="RESOURCE30">
            <title>Photoshop Introduction</title>
            <imsss:sequencing>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
            </imsss:sequencing>
         </item>
         <item identifier="MODULE1">
            <item identifier="ITEM1" identifierref="RESOURCE1">
               <title>Photoshop Lesson 1</title>
            </item>
            <item identifier="ITEM12" identifierref="RESOURCE12">
               <title>Photoshop Toolbox Lesson 2</title>
            </item>
            <item identifier="ITEM17" identifierref="RESOURCE17">
               <title>Photoshop Palettes Lesson 3</title>
            </item>
            <item identifier="ITEM18" identifierref="RESOURCE18">
               <title>Photoshop Layers Lesson 4</title>
            </item>
            <item identifier="ITEM19" identifierref="RESOURCE19">
               <title>Photoshop File Types Lesson 5</title>
            </item>
            <item identifier="ITEM20" identifierref="RESOURCE20">
               <title>Photoshop Resolution Lesson 6</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
            </imsss:sequencing>
         </item>
         <item identifier="MODULE2">
            <item identifier="ITEM21" identifierref="RESOURCE21">
               <title>Photoshop Color Balance Lesson 7</title>
            </item>
            <item identifier="ITEM22" identifierref="RESOURCE22">
               <title>Photoshop Brightness and Contrast Lesson 8</title>
            </item>
            <item identifier="ITEM23" identifierref="RESOURCE23">
               <title>Photoshop Hue and Saturation Lesson 9</title>
            </item>
            <item identifier="ITEM2" identifierref="RESOURCE2">
               <title>Photoshop Cropping Lesson 10</title>
            </item>
            <item identifier="ITEM3" identifierref="RESOURCE3">
               <title>Photoshop Cloning Stamp Lesson 11</title>
            </item>
            <item identifier="ITEM4" identifierref="RESOURCE4">
               <title>Photoshop Blurring, Sharpening and Smudging Lesson 12</title>
            </item>
            <item identifier="ITEM5" identifierref="RESOURCE5">
               <title>Photoshop Burn, Dodge and Sponge Tools Lesson 13</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
            </imsss:sequencing>
         </item>
         <item identifier="MODULE3">
            <item identifier="ITEM6" identifierref="RESOURCE6">
               <title>Photoshop Selection Tools Lesson 14</title>
            </item>
            <item identifier="ITEM7" identifierref="RESOURCE7">
               <title>Photoshop Transforming Lesson 15</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
            </imsss:sequencing>
         </item>
         <item identifier="MODULE4">
            <item identifier="ITEM8" identifierref="RESOURCE8">
               <title>Photoshop Filters Lesson 16</title>
            </item>
            <item identifier="ITEM9" identifierref="RESOURCE9">
               <title>Photoshop Effects Lesson 17</title>
            </item>
            <item identifier="ITEM10" identifierref="RESOURCE10">
               <title>Photoshop Opacity Lesson 18</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
            </imsss:sequencing>
         </item>
         <item identifier="MODULE5">
            <item identifier="ITEM11" identifierref="RESOURCE11">
               <title>Photoshop Color Picker Lesson 19</title>
            </item>
            <item identifier="ITEM13" identifierref="RESOURCE13">
               <title>Photoshop Type Tool Lesson 20</title>
            </item>
            <item identifier="ITEM14" identifierref="RESOURCE14">
               <title>Photoshop Paint Tools Lesson 21</title>
            </item>
            <item identifier="ITEM15" identifierref="RESOURCE15">
               <title>Photoshop Vector Tools Lesson 22</title>
            </item>
            <item identifier="ITEM16" identifierref="RESOURCE16">
               <title>Photoshop Gradients Lesson 23</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
            </imsss:sequencing>
         </item>
         <item identifier="FIRSTEXAM">
            <item identifier="FIRSTEXAM_PART1">
               <item identifier="ITEM40" identifierref="QUESTION1"/>
               <item identifier="ITEM41" identifierref="QUESTION2"/>
               <item identifier="ITEM42" identifierref="QUESTION3"/>
               <item identifier="ITEM43" identifierref="QUESTION4"/>
               <item identifier="ITEM44" identifierref="QUESTION5"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupConditions>
                           <imsss:rollupCondition condition="attempted"/>
                        </imsss:rollupConditions>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_1" readSatisfiedStatus="false" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <item identifier="FIRSTEXAM_PART2">
               <item identifier="ITEM45" identifierref="QUESTION6"/>
               <item identifier="ITEM46" identifierref="QUESTION7"/>
               <item identifier="ITEM47" identifierref="QUESTION8"/>
               <item identifier="ITEM48" identifierref="QUESTION9"/>
               <item identifier="ITEM49" identifierref="QUESTION10"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupConditions>
                           <imsss:rollupCondition condition="attempted"/>
                        </imsss:rollupConditions>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_2" readSatisfiedStatus="false" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <item identifier="FIRSTEXAM_PART3">
               <item identifier="ITEM50" identifierref="QUESTION11"/>
               <item identifier="ITEM51" identifierref="QUESTION12"/>
               <item identifier="ITEM52" identifierref="QUESTION13"/>
               <item identifier="ITEM53" identifierref="QUESTION14"/>
               <item identifier="ITEM54" identifierref="QUESTION15"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupConditions>
                           <imsss:rollupCondition condition="attempted"/>
                        </imsss:rollupConditions>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_3" readSatisfiedStatus="false" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <item identifier="FIRSTEXAM_PART4">
               <item identifier="ITEM55" identifierref="QUESTION16"/>
               <item identifier="ITEM56" identifierref="QUESTION17"/>
               <item identifier="ITEM57" identifierref="QUESTION18"/>
               <item identifier="ITEM58" identifierref="QUESTION19"/>
               <item identifier="ITEM59" identifierref="QUESTION20"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupConditions>
                           <imsss:rollupCondition condition="attempted"/>
                        </imsss:rollupConditions>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_4" readSatisfiedStatus="false" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <item identifier="FIRSTEXAM_PART5">
               <item identifier="ITEM60" identifierref="QUESTION21"/>
               <item identifier="ITEM61" identifierref="QUESTION22"/>
               <item identifier="ITEM62" identifierref="QUESTION23"/>
               <item identifier="ITEM63" identifierref="QUESTION24"/>
               <item identifier="ITEM64" identifierref="QUESTION25"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupConditions>
                           <imsss:rollupCondition condition="attempted"/>
                        </imsss:rollupConditions>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_5" readSatisfiedStatus="false" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
            </imsss:sequencing>
         </item>
         <item identifier="REMEDIATION_MODULE1">
            <item identifier="ITEM70" identifierref="RESOURCE1">
               <title>Photoshop Lesson 1</title>
            </item>
            <item identifier="ITEM71" identifierref="RESOURCE12">
               <title>Photoshop Toolbox Lesson 2</title>
            </item>
            <item identifier="ITEM72" identifierref="RESOURCE17">
               <title>Photoshop Palettes Lesson 3</title>
            </item>
            <item identifier="ITEM73" identifierref="RESOURCE18">
               <title>Photoshop Layers Lesson 4</title>
            </item>
            <item identifier="ITEM74" identifierref="RESOURCE19">
               <title>Photoshop File Types Lesson 5</title>
            </item>
            <item identifier="ITEM75" identifierref="RESOURCE20">
               <title>Photoshop Resolution Lesson 6</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:sequencingRules>
                  <imsss:preConditionRule>
                     <imsss:ruleConditions>
                        <imsss:ruleCondition condition="satisfied"/>
                     </imsss:ruleConditions>
                     <imsss:ruleAction action="skip"/>
                  </imsss:preConditionRule>
               </imsss:sequencingRules>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
               <imsss:objectives>
                  <imsss:primaryObjective>
                     <imsss:mapInfo targetObjectiveID="obj_module_1" readSatisfiedStatus="true"/>
                  </imsss:primaryObjective>
               </imsss:objectives>
            </imsss:sequencing>
         </item>
         <item identifier="REMEDIATION_MODULE2">
            <item identifier="ITEM76" identifierref="RESOURCE21">
               <title>Photoshop Color Balance Lesson 7</title>
            </item>
            <item identifier="ITEM77" identifierref="RESOURCE22">
               <title>Photoshop Brightness and Contrast Lesson 8</title>
            </item>
            <item identifier="ITEM78" identifierref="RESOURCE23">
               <title>Photoshop Hue and Saturation Lesson 9</title>
            </item>
            <item identifier="ITEM79" identifierref="RESOURCE2">
               <title>Photoshop Cropping Lesson 10</title>
            </item>
            <item identifier="ITEM80" identifierref="RESOURCE3">
               <title>Photoshop Cloning Stamp Lesson 11</title>
            </item>
            <item identifier="ITEM81" identifierref="RESOURCE4">
               <title>Photoshop Blurring, Sharpening and Smudging Lesson 12</title>
            </item>
            <item identifier="ITEM82" identifierref="RESOURCE5">
               <title>Photoshop Burn, Dodge and Sponge Tools Lesson 13</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:sequencingRules>
                  <imsss:preConditionRule>
                     <imsss:ruleConditions>
                        <imsss:ruleCondition condition="satisfied"/>
                     </imsss:ruleConditions>
                     <imsss:ruleAction action="skip"/>
                  </imsss:preConditionRule>
               </imsss:sequencingRules>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
               <imsss:objectives>
                  <imsss:primaryObjective>
                     <imsss:mapInfo targetObjectiveID="obj_module_2" readSatisfiedStatus="true"/>
                  </imsss:primaryObjective>
               </imsss:objectives>
            </imsss:sequencing>
         </item>
         <item identifier="REMEDIATION_MODULE3">
            <item identifier="ITEM83" identifierref="RESOURCE6">
               <title>Photoshop Selection Tools Lesson 14</title>
            </item>
            <item identifier="ITEM84" identifierref="RESOURCE7">
               <title>Photoshop Transforming Lesson 15</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:sequencingRules>
                  <imsss:preConditionRule>
                     <imsss:ruleConditions>
                        <imsss:ruleCondition condition="satisfied"/>
                     </imsss:ruleConditions>
                     <imsss:ruleAction action="skip"/>
                  </imsss:preConditionRule>
               </imsss:sequencingRules>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
               <imsss:objectives>
                  <imsss:primaryObjective>
                     <imsss:mapInfo targetObjectiveID="obj_module_3" readSatisfiedStatus="true"/>
                  </imsss:primaryObjective>
               </imsss:objectives>
            </imsss:sequencing>
         </item>
         <item identifier="REMEDIATION_MODULE4">
            <item identifier="ITEM85" identifierref="RESOURCE8">
               <title>Photoshop Filters Lesson 16</title>
            </item>
            <item identifier="ITEM86" identifierref="RESOURCE9">
               <title>Photoshop Effects Lesson 17</title>
            </item>
            <item identifier="ITEM87" identifierref="RESOURCE10">
               <title>Photoshop Opacity Lesson 18</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:sequencingRules>
                  <imsss:preConditionRule>
                     <imsss:ruleConditions>
                        <imsss:ruleCondition condition="satisfied"/>
                     </imsss:ruleConditions>
                     <imsss:ruleAction action="skip"/>
                  </imsss:preConditionRule>
               </imsss:sequencingRules>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
               <imsss:objectives>
                  <imsss:primaryObjective>
                     <imsss:mapInfo targetObjectiveID="obj_module_4" readSatisfiedStatus="true"/>
                  </imsss:primaryObjective>
               </imsss:objectives>
            </imsss:sequencing>
         </item>
         <item identifier="REMEDIATION_MODULE5">
            <item identifier="ITEM88" identifierref="RESOURCE11">
               <title>Photoshop Color Picker Lesson 19</title>
            </item>
            <item identifier="ITEM89" identifierref="RESOURCE13">
               <title>Photoshop Type Tool Lesson 20</title>
            </item>
            <item identifier="ITEM90" identifierref="RESOURCE14">
               <title>Photoshop Paint Tools Lesson 21</title>
            </item>
            <item identifier="ITEM91" identifierref="RESOURCE15">
               <title>Photoshop Vector Tools Lesson 22</title>
            </item>
            <item identifier="ITEM92" identifierref="RESOURCE16">
               <title>Photoshop Gradients Lesson 23</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:sequencingRules>
                  <imsss:preConditionRule>
                     <imsss:ruleConditions>
                        <imsss:ruleCondition condition="satisfied"/>
                     </imsss:ruleConditions>
                     <imsss:ruleAction action="skip"/>
                  </imsss:preConditionRule>
               </imsss:sequencingRules>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
               <imsss:objectives>
                  <imsss:primaryObjective>
                     <imsss:mapInfo targetObjectiveID="obj_module_5" readSatisfiedStatus="true"/>
                  </imsss:primaryObjective>
               </imsss:objectives>
            </imsss:sequencing>
         </item>
         <item identifier="SECONDEXAM">
            <item identifier="SECONDEXAM_PART1">
               <item identifier="ITEM140" identifierref="QUESTION1"/>
               <item identifier="ITEM141" identifierref="QUESTION2"/>
               <item identifier="ITEM142" identifierref="QUESTION3"/>
               <item identifier="ITEM143" identifierref="QUESTION4"/>
               <item identifier="ITEM144" identifierref="QUESTION5"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:sequencingRules>
                     <imsss:preConditionRule>
                        <imsss:ruleConditions>
                           <imsss:ruleCondition condition="satisfied"/>
                        </imsss:ruleConditions>
                        <imsss:ruleAction action="skip"/>
                     </imsss:preConditionRule>
                  </imsss:sequencingRules>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupConditions>
                           <imsss:rollupCondition condition="attempted"/>
                        </imsss:rollupConditions>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_1" readSatisfiedStatus="true" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <item identifier="SECONDEXAM_PART2">
               <item identifier="ITEM145" identifierref="QUESTION6"/>
               <item identifier="ITEM146" identifierref="QUESTION7"/>
               <item identifier="ITEM147" identifierref="QUESTION8"/>
               <item identifier="ITEM148" identifierref="QUESTION9"/>
               <item identifier="ITEM149" identifierref="QUESTION10"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:sequencingRules>
                     <imsss:preConditionRule>
                        <imsss:ruleConditions>
                           <imsss:ruleCondition condition="satisfied"/>
                        </imsss:ruleConditions>
                        <imsss:ruleAction action="skip"/>
                     </imsss:preConditionRule>
                  </imsss:sequencingRules>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupConditions>
                           <imsss:rollupCondition condition="attempted"/>
                        </imsss:rollupConditions>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_2" readSatisfiedStatus="true" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <item identifier="SECONDEXAM_PART3">
               <item identifier="ITEM150" identifierref="QUESTION11"/>
               <item identifier="ITEM151" identifierref="QUESTION12"/>
               <item identifier="ITEM152" identifierref="QUESTION13"/>
               <item identifier="ITEM153" identifierref="QUESTION14"/>
               <item identifier="ITEM154" identifierref="QUESTION15"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:sequencingRules>
                     <imsss:preConditionRule>
                        <imsss:ruleConditions>
                           <imsss:ruleCondition condition="satisfied"/>
                        </imsss:ruleConditions>
                        <imsss:ruleAction action="skip"/>
                     </imsss:preConditionRule>
                  </imsss:sequencingRules>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupConditions>
                           <imsss:rollupCondition condition="attempted"/>
                        </imsss:rollupConditions>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_3" readSatisfiedStatus="true" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <item identifier="SECONDEXAM_PART4">
               <item identifier="ITEM155" identifierref="QUESTION16"/>
               <item identifier="ITEM156" identifierref="QUESTION17"/>
               <item identifier="ITEM157" identifierref="QUESTION18"/>
               <item identifier="ITEM158" identifierref="QUESTION19"/>
               <item identifier="ITEM159" identifierref="QUESTION20"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:sequencingRules>
                     <imsss:preConditionRule>
                        <imsss:ruleConditions>
                           <imsss:ruleCondition condition="satisfied"/>
                        </imsss:ruleConditions>
                        <imsss:ruleAction action="skip"/>
                     </imsss:preConditionRule>
                  </imsss:sequencingRules>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupConditions>
                           <imsss:rollupCondition condition="attempted"/>
                        </imsss:rollupConditions>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_4" readSatisfiedStatus="true" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <item identifier="SECONDEXAM_PART5">
               <item identifier="ITEM160" identifierref="QUESTION21"/>
               <item identifier="ITEM161" identifierref="QUESTION22"/>
               <item identifier="ITEM162" identifierref="QUESTION23"/>
               <item identifier="ITEM163" identifierref="QUESTION24"/>
               <item identifier="ITEM164" identifierref="QUESTION25"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:sequencingRules>
                     <imsss:preConditionRule>
                        <imsss:ruleConditions>
                           <imsss:ruleCondition condition="satisfied"/>
                        </imsss:ruleConditions>
                        <imsss:ruleAction action="skip"/>
                     </imsss:preConditionRule>
                  </imsss:sequencingRules>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupConditions>
                           <imsss:rollupCondition condition="attempted"/>
                        </imsss:rollupConditions>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_5" readSatisfiedStatus="true" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
            </imsss:sequencing>
         </item>
         <imsss:sequencing>
            <imsss:controlMode choice="false" flow="true"/>
            <imsss:sequencingRules>
               <imsss:exitConditionRule>
                  <imsss:ruleConditions>
                     <imsss:ruleCondition condition="completed"/>
                  </imsss:ruleConditions>
                  <imsss:ruleAction action="exit"/>
               </imsss:exitConditionRule>
            </imsss:sequencingRules>
            <imsss:rollupRules >
               <imsss:rollupRule childActivitySet="all">
                  <imsss:rollupConditions>
                     <imsss:rollupCondition condition="satisfied"/>
                  </imsss:rollupConditions>
                  <imsss:rollupAction action="satisfied"/>
               </imsss:rollupRule>
               <imsss:rollupRule childActivitySet="any">
                  <imsss:rollupConditions>
                     <imsss:rollupCondition operator ="not" condition="satisfied"/>
                  </imsss:rollupConditions>
                  <imsss:rollupAction action="notSatisfied"/>
               </imsss:rollupRule>
            </imsss:rollupRules>
         </imsss:sequencing>
      </organization>
   </organizations>
   <resources>
      <resource identifier="RESOURCE1" adlcp:scormtype="asset" type="webcontent" href="Lesson1.htm">
         <file href="Lesson1.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle1.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/interfacesmall.jpg" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE2" adlcp:scormtype="asset" type="webcontent" href="Lesson10.htm">
         <file href="Lesson10.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/Joule-window5.jpg" />
         <file href="images/LessonTitle10.gif" />
         <file href="images/cropiconbig.gif" />
         <file href="images/cropmarks.jpg" />
         <file href="images/cropped.jpg" />
         <file href="images/croptool.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE3" adlcp:scormtype="asset" type="webcontent" href="Lesson11.htm">
         <file href="Lesson11.htm" />
         <file href="images/11.gif" />
         <file href="images/CloneBrushSelect.gif" />
         <file href="images/CloneCrosshairs.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/Iowa-roadcloned.jpg" />
         <file href="images/Iowa-roadnotcloned.jpg" />
         <file href="images/LessonTitle11.gif" />
         <file href="images/cloneiconbig.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE4" adlcp:scormtype="asset" type="webcontent" href="Lesson12.htm">
         <file href="Lesson12.htm" />
         <file href="images/BSSBrushSelect.gif" />
         <file href="images/BSSTool.gif" />
         <file href="images/BlurIconBig.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle12.gif" />
         <file href="images/Oriental-TreeEnhanced.jpg" />
         <file href="images/Oriental-TreeOriginal.jpg" />
         <file href="images/Pressure.gif" />
         <file href="images/SharpenIconBig.gif" />
         <file href="images/SmudgeIconBig.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE5" adlcp:scormtype="asset" type="webcontent" href="Lesson13.htm">
         <file href="Lesson13.htm" />
         <file href="images/BDSBrushSelect.gif" />
         <file href="images/BDSTool.gif" />
         <file href="images/BurnBar.gif" />
         <file href="images/Circular-Gatenowindow.jpg" />
         <file href="images/Circular-Gatewindow.jpg" />
         <file href="images/DodgeBar.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle13.gif" />
         <file href="images/Mode.gif" />
         <file href="images/Pressure.gif" />
         <file href="images/Range.gif" />
         <file href="images/SpongeBar.gif" />
         <file href="images/burniconbig.gif" />
         <file href="images/dodgeiconbig.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/spongeiconbig.gif" />
      </resource>
      <resource identifier="RESOURCE6" adlcp:scormtype="asset" type="webcontent" href="Lesson14.htm">
         <file href="Lesson14.htm" />
         <file href="images/Addition.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/IntersectionIcon.gif" />
         <file href="images/LessonTitle14.gif" />
         <file href="images/MagicWandBar.gif" />
         <file href="images/MagicWandIcon.gif" />
         <file href="images/Selection.gif" />
         <file href="images/SubtractionIcon.gif" />
         <file href="images/addtosubtractfromselection.gif" />
         <file href="images/dafbackground.jpg" />
         <file href="images/dafmagicselect.jpg" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/lassotools.gif" />
         <file href="images/marqueetools.gif" />
         <file href="images/originaldaf.jpg" />
         <file href="images/pssidebar.gif" />
         <file href="images/selectiontools.gif" />
         <file href="images/singledafselection.jpg" />
      </resource>
      <resource identifier="RESOURCE7" adlcp:scormtype="asset" type="webcontent" href="Lesson15.htm">
         <file href="Lesson15.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle15.gif" />
         <file href="images/TransformFlyout.gif" />
         <file href="images/birdfeeder.jpg" />
         <file href="images/birdfeederdistort.gif" />
         <file href="images/birdfeederflip.gif" />
         <file href="images/birdfeederperspective.gif" />
         <file href="images/birdfeederrotated.jpg" />
         <file href="images/birdfeederscaled.jpg" />
         <file href="images/birdfeederskewed.gif" />
         <file href="images/box-distort.gif" />
         <file href="images/box-flip.gif" />
         <file href="images/box-perspective.gif" />
         <file href="images/box-rotate.gif" />
         <file href="images/box-scale.gif" />
         <file href="images/box-skew.gif" />
         <file href="images/box.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/transformCheck.gif" />
         <file href="images/transformX.gif" />
      </resource>
      <resource identifier="RESOURCE8" adlcp:scormtype="asset" type="webcontent" href="Lesson16.htm">
         <file href="Lesson16.htm" />
         <file href="images/DistortFlyOut.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle16.gif" />
         <file href="images/distortfilters.gif" />
         <file href="images/filters.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/renderfilters.gif" />
      </resource>
      <resource identifier="RESOURCE9" adlcp:scormtype="asset" type="webcontent" href="Lesson17.htm">
         <file href="Lesson17.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LayerStyleDialog.gif" />
         <file href="images/LayerStyleIcon.gif" />
         <file href="images/LessonTitle17.gif" />
         <file href="images/SelectEffect1.gif" />
         <file href="images/SelectEffect2.gif" />
         <file href="images/TypingManColorOverlay.gif" />
         <file href="images/TypingManFlat.gif" />
         <file href="images/TypingManInnerBevel.gif" />
         <file href="images/TypingManInnerBevelDropShad.gif" />
         <file href="images/TypingManInnerGlow.gif" />
         <file href="images/TypingManInnerShad.gif" />
         <file href="images/TypingManOriginal.gif" />
         <file href="images/TypingManOuterGlow.gif" />
         <file href="images/TypingManOuterShadow.gif" />
         <file href="images/TypingManPillowEmboss.gif" />
         <file href="images/TypingManStroke.gif" />
         <file href="images/bevebosslayer.gif" />
         <file href="images/box.gif" />
         <file href="images/dafmultipleeffects.jpg" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/layerstyles.gif" />
         <file href="images/layerstylespalettebox.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE10" adlcp:scormtype="asset" type="webcontent" href="Lesson18.htm">
         <file href="Lesson18.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle18.gif" />
         <file href="images/box.gif" />
         <file href="images/daffbackground.jpg" />
         <file href="images/dafopacity.jpg" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/layerbox.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE11" adlcp:scormtype="asset" type="webcontent" href="Lesson19.htm">
         <file href="Lesson19.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle19.gif" />
         <file href="images/box.gif" />
         <file href="images/colordefault.gif" />
         <file href="images/colorpantone.jpg" />
         <file href="images/colorpickerdialog.gif" />
         <file href="images/colorpickerdialog1.jpg" />
         <file href="images/colorswap.gif" />
         <file href="images/colortoolbox.gif" />
         <file href="images/droppericon.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/toolbox.gif" />
      </resource>
      <resource identifier="RESOURCE12" adlcp:scormtype="asset" type="webcontent" href="Lesson2.htm">
         <file href="Lesson2.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/HandTool.gif" />
         <file href="images/LessonTitle2.gif" />
         <file href="images/ZoomToolIcon.gif" />
         <file href="images/box.gif" />
         <file href="images/colorselect.gif" />
         <file href="images/enhancementtools.gif" />
         <file href="images/eyedroppertool.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/navagationtools.gif" />
         <file href="images/objecttools.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/selectiontools.gif" />
         <file href="images/toolbox.gif" />
      </resource>
      <resource identifier="RESOURCE13" adlcp:scormtype="asset" type="webcontent" href="Lesson20.htm">
         <file href="Lesson20.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle20.gif" />
         <file href="images/TypeOptionsBar.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/parapalette.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/typeCheck.gif" />
         <file href="images/typeX.gif" />
         <file href="images/typelayer.gif" />
         <file href="images/typepalette.gif" />
         <file href="images/typetool.gif" />
         <file href="images/typetoolbig.gif" />
         <file href="images/winterwonderland2.jpg" />
      </resource>
      <resource identifier="RESOURCE14" adlcp:scormtype="asset" type="webcontent" href="Lesson21.htm">
         <file href="Lesson21.htm" />
         <file href="images/AirBrushToolIcon.gif" />
         <file href="images/AirBrushToolIconBig.gif" />
         <file href="images/AirbrushExample.gif" />
         <file href="images/DRNichsbikes.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle21.gif" />
         <file href="images/PaintBrushToolIcon.gif" />
         <file href="images/PaintBrushToolIconBig.gif" />
         <file href="images/PaintBucketExample.gif" />
         <file href="images/PaintBucketToolIcon.gif" />
         <file href="images/PaintBucketToolIconBig.gif" />
         <file href="images/PaintbrushExample.gif" />
         <file href="images/PencilExample.gif" />
         <file href="images/PencilToolIcon.gif" />
         <file href="images/PencilToolIconBig.gif" />
         <file href="images/brushoptions.gif" />
         <file href="images/brushselection2.gif" />
         <file href="images/brushselection3.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE15" adlcp:scormtype="asset" type="webcontent" href="Lesson22.htm">
         <file href="Lesson22.htm" />
         <file href="images/CustomShapeOptions.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle22.gif" />
         <file href="images/LineTool.gif" />
         <file href="images/OvalTool.gif" />
         <file href="images/PolygonTool.gif" />
         <file href="images/RectangleTool.gif" />
         <file href="images/RoundedRectangleTool.gif" />
         <file href="images/VectorToolsSmall.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/shapelayer.gif" />
         <file href="images/shapelayercolor.gif" />
         <file href="images/shapeoptions2.gif" />
         <file href="images/snowbike.jpg" />
         <file href="images/vectoroptionsbar.gif" />
      </resource>
      <resource identifier="RESOURCE16" adlcp:scormtype="asset" type="webcontent" href="Lesson23.htm">
         <file href="Lesson23.htm" />
         <file href="images/AngularGradient.jpg" />
         <file href="images/ColorBar.jpg" />
         <file href="images/DiamondGradient.jpg" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/GradientColorOptions.gif" />
         <file href="images/GradientExample.jpg" />
         <file href="images/GradientOptions.jpg" />
         <file href="images/GradientStyleOptions.gif" />
         <file href="images/GradientTool.gif" />
         <file href="images/GradientToolIcon.gif" />
         <file href="images/GradientToolIconBig.gif" />
         <file href="images/LessonTitle23.gif" />
         <file href="images/LinearGradientDiagonal2.jpg" />
         <file href="images/LinearGradientHorizontal2.jpg" />
         <file href="images/LinearGradientVertical2.jpg" />
         <file href="images/RadialGradient.jpg" />
         <file href="images/ReflectedGradient.jpg" />
         <file href="images/angulartool.gif" />
         <file href="images/diamondtool.gif" />
         <file href="images/gradienteditor.gif" />
         <file href="images/gradientpresets.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/lineartool.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/radialtool.gif" />
         <file href="images/reflectedtool.gif" />
      </resource>
      <resource identifier="RESOURCE17" adlcp:scormtype="asset" type="webcontent" href="Lesson3.htm">
         <file href="Lesson3.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle3.gif" />
         <file href="images/defaultpalettes.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE18" adlcp:scormtype="asset" type="webcontent" href="Lesson4.htm">
         <file href="Lesson4.htm" />
         <file href="images/37.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle4.gif" />
         <file href="images/eyeicon.gif" />
         <file href="images/flatlayers.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/layerarrows.gif" />
         <file href="images/layers.gif" />
         <file href="images/linkicon.gif" />
         <file href="images/newlayericon.gif" />
         <file href="images/paintbrush.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE19" adlcp:scormtype="asset" type="webcontent" href="Lesson5.htm">
         <file href="Lesson5.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle5.gif" />
         <file href="images/allformats.gif" />
         <file href="images/fileopen.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE20" adlcp:scormtype="asset" type="webcontent" href="Lesson6.htm">
         <file href="Lesson6.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle6.gif" />
         <file href="images/box.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/imagesizebox.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE21" adlcp:scormtype="asset" type="webcontent" href="Lesson7.htm">
         <file href="Lesson7.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle7.gif" />
         <file href="images/Tree-and-DragonsGreen.jpg" />
         <file href="images/Tree-and-Dragonsnot-Green.jpg" />
         <file href="images/box.gif" />
         <file href="images/colorbalancebox.gif" />
         <file href="images/colorbalancemenu2.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE22" adlcp:scormtype="asset" type="webcontent" href="Lesson8.htm">
         <file href="Lesson8.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/Jar-GateDark.jpg" />
         <file href="images/Jar-GateLight.jpg" />
         <file href="images/LessonTitle8.gif" />
         <file href="images/box.gif" />
         <file href="images/brightnesscontrastbox.gif" />
         <file href="images/brightnesscontrastmenu.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE23" adlcp:scormtype="asset" type="webcontent" href="Lesson9.htm">
         <file href="Lesson9.htm" />
         <file href="images/Circular-GateDark.jpg" />
         <file href="images/Circular-GateLight.jpg" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle9.gif" />
         <file href="images/box.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/huesaturationbox.gif" />
         <file href="images/huesaturationmenu.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE30" adlcp:scormtype="asset" type="webcontent" href="intro.htm">
         <file href="intro.htm" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="QUESTION1" adlcp:scormtype="sco" type="webcontent" href="Question1.htm">
         <file href="Question1.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION2" adlcp:scormtype="sco" type="webcontent" href="Question2.htm">
         <file href="Question2.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION3" adlcp:scormtype="sco" type="webcontent" href="Question3.htm">
         <file href="Question3.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION4" adlcp:scormtype="sco" type="webcontent" href="Question4.htm">
         <file href="Question4.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION5" adlcp:scormtype="sco" type="webcontent" href="Question5.htm">
         <file href="Question5.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION6" adlcp:scormtype="sco" type="webcontent" href="Question6.htm">
         <file href="Question6.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION7" adlcp:scormtype="sco" type="webcontent" href="Question7.htm">
         <file href="Question7.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION8" adlcp:scormtype="sco" type="webcontent" href="Question8.htm">
         <file href="Question8.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION9" adlcp:scormtype="sco" type="webcontent" href="Question9.htm">
         <file href="Question9.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION10" adlcp:scormtype="sco" type="webcontent" href="Question10.htm">
         <file href="Question10.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION11" adlcp:scormtype="sco" type="webcontent" href="Question11.htm">
         <file href="Question11.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION12" adlcp:scormtype="sco" type="webcontent" href="Question12.htm">
         <file href="Question12.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION13" adlcp:scormtype="sco" type="webcontent" href="Question13.htm">
         <file href="Question13.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION14" adlcp:scormtype="sco" type="webcontent" href="Question14.htm">
         <file href="Question14.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION15" adlcp:scormtype="sco" type="webcontent" href="Question15.htm">
         <file href="Question15.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION16" adlcp:scormtype="sco" type="webcontent" href="Question16.htm">
         <file href="Question16.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION17" adlcp:scormtype="sco" type="webcontent" href="Question17.htm">
         <file href="Question17.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION18" adlcp:scormtype="sco" type="webcontent" href="Question18.htm">
         <file href="Question18.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION19" adlcp:scormtype="sco" type="webcontent" href="Question19.htm">
         <file href="Question19.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION20" adlcp:scormtype="sco" type="webcontent" href="Question20.htm">
         <file href="Question20.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION21" adlcp:scormtype="sco" type="webcontent" href="Question21.htm">
         <file href="Question21.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION22" adlcp:scormtype="sco" type="webcontent" href="Question22.htm">
         <file href="Question22.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION23" adlcp:scormtype="sco" type="webcontent" href="Question23.htm">
         <file href="Question23.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION24" adlcp:scormtype="sco" type="webcontent" href="Question24.htm">
         <file href="Question24.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION25" adlcp:scormtype="sco" type="webcontent" href="Question25.htm">
         <file href="Question25.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
   </resources>
</manifest>

5.2 Photoshop - Data Mapping

Choice is not allowed anywhere in the content aggregation. The learner is directed from the introduction to a pre-test. The pre-test consists of one learning activity that assesses the learner's knowledge of the module's objectives. Upon completion of the pre-test, the results of the assessment are communicated to the sequencing system through a set of objectives, which are associated with the modules. The learner is then directed through any modules, in order, whose associated objective has not been 'satisfied'; 'satisfied' modules are skipped. The learner decides when to progress through the content and in what direction, by signaling continue and previous events. After the required modules are experienced, the learner is presented with a post-test that consists of all twenty-five questions divided into five question exams. The learner is only presented post-test parts that correspond to module objectives that have not been 'satisfied'; 'satisfied' modules are skipped. The learner 'satisfies' one part of the assessment if they get 80% of the questions correct; 'satisfying' a part of the assessment also 'satisfies' the associated module's objective. The content aggregation exits after the leaner has experienced or skipped each piece of content at least once.

Photoshop Course - Datamap

 

Figure 5.2 - Photoshop Course - Datamap.

This example illustrates data mapping. Note especially how the mapInfo element is used to specify learning objectives.

<?xml version="1.0" standalone="no" ?>

<manifest identifier="photo-MANIFEST-datamap" version="1.2"
    xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"
    xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3"
    xmlns:imsss = "http://www.imsglobal.org/xsd/imsss"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1p3.xsd
        http://www.imsglobal.org/xsd/imsmd_v1p2 imsmd_v1p2p2.xsd
        http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_rootv1p3.xsd  
        http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd"  >

   <metadata>
      <schema>IMS Content</schema>
      <schemaversion>1.2</schemaversion>
      <lom xmlns="http://www.imsglobal.org/xsd/imsmd_v1p2" >
         <general>
            <title>
               <langstring xml:lang="en-US">Photoshop Tutorial</langstring>
            </title>
            <description>
               <langstring xml:lang="en-US">This tutorial provides you with an overview of the basic skills of Photoshop.</langstring>
            </description>
            <keyword>
               <langstring xml:lang="en-US">Blending Images, Enhancing Images, Special Effects, Basic Skills.</langstring>
            </keyword>
         </general>
      </lom>
   </metadata>

   <organizations default="TOC1">
      <organization identifier="TOC1">
         <title>Photoshop Tutorial</title>

         <item identifier="INTRO" identifierref="RESOURCE30">
            <title>Photoshop Introduction</title>
            <imsss:sequencing>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
            </imsss:sequencing>
         </item>

         <item identifier="PRETEST" identifierref="RESOURCE31">
            <title>Pre Assessment</title>
            <imsss:sequencing>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
               <imsss:objectives>
                  <imsss:primaryObjective />
                  <imsss:objective objectiveID="obj_module_1">
                     <imsss:mapInfo targetObjectiveID="obj_module_1" readSatisfiedStatus="false" writeSatisfiedStatus="true" />
                  </imsss:objective>
                  <imsss:objective objectiveID="obj_module_2">
                     <imsss:mapInfo targetObjectiveID="obj_module_2" readSatisfiedStatus="false" writeSatisfiedStatus="true" />
                  </imsss:objective>
                  <imsss:objective objectiveID="obj_module_3">
                     <imsss:mapInfo targetObjectiveID="obj_module_3" readSatisfiedStatus="false" writeSatisfiedStatus="true" />
                  </imsss:objective>
                  <imsss:objective objectiveID="obj_module_4">
                     <imsss:mapInfo targetObjectiveID="obj_module_4" readSatisfiedStatus="false" writeSatisfiedStatus="true" />
                  </imsss:objective>
                  <imsss:objective objectiveID="obj_module_5">
                     <imsss:mapInfo targetObjectiveID="obj_module_5" readSatisfiedStatus="false" writeSatisfiedStatus="true" />
                  </imsss:objective>
               </imsss:objectives>
            </imsss:sequencing>
         </item>
         <item identifier="MODULE1">
            <item identifier="ITEM1" identifierref="RESOURCE1">
               <title>Photoshop Lesson 1</title>
            </item>
            <item identifier="ITEM12" identifierref="RESOURCE12">
               <title>Photoshop Toolbox Lesson 2</title>
            </item>
            <item identifier="ITEM17" identifierref="RESOURCE17">
               <title>Photoshop Palettes Lesson 3</title>
            </item>
            <item identifier="ITEM18" identifierref="RESOURCE18">
               <title>Photoshop Layers Lesson 4</title>
            </item>
            <item identifier="ITEM19" identifierref="RESOURCE19">
               <title>Photoshop File Types Lesson 5</title>
            </item>
            <item identifier="ITEM20" identifierref="RESOURCE20">
               <title>Photoshop Resolution Lesson 6</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:sequencingRules>
                  <imsss:preConditionRule>
                     <imsss:ruleConditions>
                        <imsss:ruleCondition condition="satisfied"/>
                     </imsss:ruleConditions>
                     <imsss:ruleAction action="skip"/>
                  </imsss:preConditionRule>
               </imsss:sequencingRules>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
               <imsss:objectives>
                  <imsss:primaryObjective>
                     <imsss:mapInfo targetObjectiveID="obj_module_1"/>
                  </imsss:primaryObjective>
               </imsss:objectives>
            </imsss:sequencing>
         </item>
         <item identifier="MODULE2">
            <item identifier="ITEM21" identifierref="RESOURCE21">
               <title>Photoshop Color Balance Lesson 7</title>
            </item>
            <item identifier="ITEM22" identifierref="RESOURCE22">
               <title>Photoshop Brightness and Contrast Lesson 8</title>
            </item>
            <item identifier="ITEM23" identifierref="RESOURCE23">
               <title>Photoshop Hue and Saturation Lesson 9</title>
            </item>
            <item identifier="ITEM2" identifierref="RESOURCE2">
               <title>Photoshop Cropping Lesson 10</title>
            </item>
            <item identifier="ITEM3" identifierref="RESOURCE3">
               <title>Photoshop Cloning Stamp Lesson 11</title>
            </item>
            <item identifier="ITEM4" identifierref="RESOURCE4">
               <title>Photoshop Blurring, Sharpening and Smudging Lesson 12</title>
            </item>
            <item identifier="ITEM5" identifierref="RESOURCE5">
               <title>Photoshop Burn, Dodge and Sponge Tools Lesson 13</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:sequencingRules>
                  <imsss:preConditionRule>
                     <imsss:ruleConditions>
                        <imsss:ruleCondition condition="satisfied"/>
                     </imsss:ruleConditions>
                     <imsss:ruleAction action="skip"/>
                  </imsss:preConditionRule>
               </imsss:sequencingRules>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
               <imsss:objectives>
                  <imsss:primaryObjective>
                     <imsss:mapInfo targetObjectiveID="obj_module_2"/>
                  </imsss:primaryObjective>
               </imsss:objectives>
            </imsss:sequencing>
         </item>
         <item identifier="MODULE3">
            <item identifier="ITEM6" identifierref="RESOURCE6">
               <title>Photoshop Selection Tools Lesson 14</title>
            </item>
            <item identifier="ITEM7" identifierref="RESOURCE7">
               <title>Photoshop Transforming Lesson 15</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:sequencingRules>
                  <imsss:preConditionRule>
                     <imsss:ruleConditions>
                        <imsss:ruleCondition condition="satisfied"/>
                     </imsss:ruleConditions>
                     <imsss:ruleAction action="skip"/>
                  </imsss:preConditionRule>
               </imsss:sequencingRules>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
               <imsss:objectives>
                  <imsss:primaryObjective>
                     <imsss:mapInfo targetObjectiveID="obj_module_3"/>
                  </imsss:primaryObjective>
               </imsss:objectives>
            </imsss:sequencing>
         </item>
         <item identifier="MODULE4">
            <item identifier="ITEM8" identifierref="RESOURCE8">
               <title>Photoshop Filters Lesson 16</title>
            </item>
            <item identifier="ITEM9" identifierref="RESOURCE9">
               <title>Photoshop Effects Lesson 17</title>
            </item>
            <item identifier="ITEM10" identifierref="RESOURCE10">
               <title>Photoshop Opacity Lesson 18</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:sequencingRules>
                  <imsss:preConditionRule>
                     <imsss:ruleConditions>
                        <imsss:ruleCondition condition="satisfied"/>
                     </imsss:ruleConditions>
                     <imsss:ruleAction action="skip"/>
                  </imsss:preConditionRule>
               </imsss:sequencingRules>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
               <imsss:objectives>
                  <imsss:primaryObjective>
                     <imsss:mapInfo targetObjectiveID="obj_module_4"/>
                  </imsss:primaryObjective>
               </imsss:objectives>
            </imsss:sequencing>
         </item>
         <item identifier="MODULE5">
            <item identifier="ITEM11" identifierref="RESOURCE11">
               <title>Photoshop Color Picker Lesson 19</title>
            </item>
            <item identifier="ITEM13" identifierref="RESOURCE13">
               <title>Photoshop Type Tool Lesson 20</title>
            </item>
            <item identifier="ITEM14" identifierref="RESOURCE14">
               <title>Photoshop Paint Tools Lesson 21</title>
            </item>
            <item identifier="ITEM15" identifierref="RESOURCE15">
               <title>Photoshop Vector Tools Lesson 22</title>
            </item>
            <item identifier="ITEM16" identifierref="RESOURCE16">
               <title>Photoshop Gradients Lesson 23</title>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true"/>
               <imsss:sequencingRules>
                  <imsss:preConditionRule>
                     <imsss:ruleConditions>
                        <imsss:ruleCondition condition="satisfied"/>
                     </imsss:ruleConditions>
                     <imsss:ruleAction action="skip"/>
                  </imsss:preConditionRule>
               </imsss:sequencingRules>
               <imsss:rollupRules rollupObjectiveSatisfied="false"/>
               <imsss:objectives>
                  <imsss:primaryObjective>
                     <imsss:mapInfo targetObjectiveID="obj_module_5"/>
                  </imsss:primaryObjective>
               </imsss:objectives>
            </imsss:sequencing>
         </item>
         <item identifier="POSTTEST">
            <item identifier="PART1">
               <item identifier="ITEM217" identifierref="QUESTION1"/>
               <item identifier="ITEM218" identifierref="QUESTION2"/>
               <item identifier="ITEM219" identifierref="QUESTION3"/>
               <item identifier="ITEM220" identifierref="QUESTION4"/>
               <item identifier="ITEM221" identifierref="QUESTION5"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:sequencingRules>
                     <imsss:preConditionRule>
                        <imsss:ruleConditions>
                           <imsss:ruleCondition condition="satisfied"/>
                        </imsss:ruleConditions>
                        <imsss:ruleAction action="skip"/>
                     </imsss:preConditionRule>
                  </imsss:sequencingRules>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupCondition condition="attempted"/>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_1" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <item identifier="PART2">
               <item identifier="ITEM122" identifierref="QUESTION6"/>
               <item identifier="ITEM123" identifierref="QUESTION7"/>
               <item identifier="ITEM124" identifierref="QUESTION8"/>
               <item identifier="ITEM125" identifierref="QUESTION9"/>
               <item identifier="ITEM126" identifierref="QUESTION10"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:sequencingRules>
                     <imsss:preConditionRule>
                        <imsss:ruleConditions>
                           <imsss:ruleCondition condition="satisfied"/>
                        </imsss:ruleConditions>
                        <imsss:ruleAction action="skip"/>
                     </imsss:preConditionRule>
                  </imsss:sequencingRules>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupCondition condition="attempted"/>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_2" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <item identifier="PART3">
               <item identifier="ITEM127" identifierref="QUESTION11"/>
               <item identifier="ITEM128" identifierref="QUESTION12"/>
               <item identifier="ITEM129" identifierref="QUESTION13"/>
               <item identifier="ITEM130" identifierref="QUESTION14"/>
               <item identifier="ITEM131" identifierref="QUESTION15"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:sequencingRules>
                     <imsss:preConditionRule>
                        <imsss:ruleConditions>
                           <imsss:ruleCondition condition="satisfied"/>
                        </imsss:ruleConditions>
                        <imsss:ruleAction action="skip"/>
                     </imsss:preConditionRule>
                  </imsss:sequencingRules>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupCondition condition="attempted"/>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_3" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <item identifier="PART4">
               <item identifier="ITEM132" identifierref="QUESTION16"/>
               <item identifier="ITEM133" identifierref="QUESTION17"/>
               <item identifier="ITEM134" identifierref="QUESTION18"/>
               <item identifier="ITEM135" identifierref="QUESTION19"/>
               <item identifier="ITEM136" identifierref="QUESTION20"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:sequencingRules>
                     <imsss:preConditionRule>
                        <imsss:ruleConditions>
                           <imsss:ruleCondition condition="satisfied"/>
                        </imsss:ruleConditions>
                        <imsss:ruleAction action="skip"/>
                     </imsss:preConditionRule>
                  </imsss:sequencingRules>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupCondition condition="attempted"/>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_4" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <item identifier="PART5">
               <item identifier="ITEM137" identifierref="QUESTION21"/>
               <item identifier="ITEM138" identifierref="QUESTION22"/>
               <item identifier="ITEM139" identifierref="QUESTION23"/>
               <item identifier="ITEM100" identifierref="QUESTION24"/>
               <item identifier="ITEM101" identifierref="QUESTION25"/>
               <imsss:sequencing>
                  <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
                  <imsss:sequencingRules>
                     <imsss:preConditionRule>
                        <imsss:ruleConditions>
                           <imsss:ruleCondition condition="satisfied"/>
                        </imsss:ruleConditions>
                        <imsss:ruleAction action="skip"/>
                     </imsss:preConditionRule>
                  </imsss:sequencingRules>
                  <imsss:rollupRules >
                     <imsss:rollupRule childActivitySet="all">
                        <imsss:rollupCondition condition="attempted"/>
                        <imsss:rollupAction action="completed"/>
                     </imsss:rollupRule>
                  </imsss:rollupRules>
                  <imsss:objectives>
                     <imsss:primaryObjective satisfiedByMeasure="true">
                        <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
                        <imsss:mapInfo targetObjectiveID="obj_module_5" writeSatisfiedStatus="true" />
                     </imsss:primaryObjective>
                  </imsss:objectives>
               </imsss:sequencing>
            </item>
            <imsss:sequencing>
               <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
            </imsss:sequencing>
         </item>
         <imsss:sequencing>
            <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
            <imsss:sequencingRules>
               <imsss:exitConditionRule>
                  <imsss:ruleConditions>
                     <imsss:ruleCondition condition="completed"/>
                  </imsss:ruleConditions>
                  <imsss:ruleAction action="exit"/>
               </imsss:exitConditionRule>
            </imsss:sequencingRules>
            <imsss:rollupRules >
               <imsss:rollupRule childActivitySet="all">
                  <imsss:rollupCondition condition="satisfied"/>
                  <imsss:rollupAction action="satisfied"/>
               </imsss:rollupRule>
               <imsss:rollupRule childActivitySet="any">
                  <imsss:rollupCondition operator ="not" condition="satisfied"/>
                  <imsss:rollupAction action="notSatisfied"/>
               </imsss:rollupRule>
            </imsss:rollupRules>
         </imsss:sequencing>
      </organization>
   </organizations>

   <resources>
      <resource identifier="RESOURCE1" adlcp:scormtype="asset" type="webcontent" href="Lesson1.htm">
         <file href="Lesson1.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle1.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/interfacesmall.jpg" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE2" adlcp:scormtype="asset" type="webcontent" href="Lesson10.htm">
         <file href="Lesson10.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/Joule-window5.jpg" />
         <file href="images/LessonTitle10.gif" />
         <file href="images/cropiconbig.gif" />
         <file href="images/cropmarks.jpg" />
         <file href="images/cropped.jpg" />
         <file href="images/croptool.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE3" adlcp:scormtype="asset" type="webcontent" href="Lesson11.htm">
         <file href="Lesson11.htm" />
         <file href="images/11.gif" />
         <file href="images/CloneBrushSelect.gif" />
         <file href="images/CloneCrosshairs.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/Iowa-roadcloned.jpg" />
         <file href="images/Iowa-roadnotcloned.jpg" />
         <file href="images/LessonTitle11.gif" />
         <file href="images/cloneiconbig.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE4" adlcp:scormtype="asset" type="webcontent" href="Lesson12.htm">
         <file href="Lesson12.htm" />
         <file href="images/BSSBrushSelect.gif" />
         <file href="images/BSSTool.gif" />
         <file href="images/BlurIconBig.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle12.gif" />
         <file href="images/Oriental-TreeEnhanced.jpg" />
         <file href="images/Oriental-TreeOriginal.jpg" />
         <file href="images/Pressure.gif" />
         <file href="images/SharpenIconBig.gif" />
         <file href="images/SmudgeIconBig.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE5" adlcp:scormtype="asset" type="webcontent" href="Lesson13.htm">
         <file href="Lesson13.htm" />
         <file href="images/BDSBrushSelect.gif" />
         <file href="images/BDSTool.gif" />
         <file href="images/BurnBar.gif" />
         <file href="images/Circular-Gatenowindow.jpg" />
         <file href="images/Circular-Gatewindow.jpg" />
         <file href="images/DodgeBar.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle13.gif" />
         <file href="images/Mode.gif" />
         <file href="images/Pressure.gif" />
         <file href="images/Range.gif" />
         <file href="images/SpongeBar.gif" />
         <file href="images/burniconbig.gif" />
         <file href="images/dodgeiconbig.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/spongeiconbig.gif" />
      </resource>
      <resource identifier="RESOURCE6" adlcp:scormtype="asset" type="webcontent" href="Lesson14.htm">
         <file href="Lesson14.htm" />
         <file href="images/Addition.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/IntersectionIcon.gif" />
         <file href="images/LessonTitle14.gif" />
         <file href="images/MagicWandBar.gif" />
         <file href="images/MagicWandIcon.gif" />
         <file href="images/Selection.gif" />
         <file href="images/SubtractionIcon.gif" />
         <file href="images/addtosubtractfromselection.gif" />
         <file href="images/dafbackground.jpg" />
         <file href="images/dafmagicselect.jpg" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/lassotools.gif" />
         <file href="images/marqueetools.gif" />
         <file href="images/originaldaf.jpg" />
         <file href="images/pssidebar.gif" />
         <file href="images/selectiontools.gif" />
         <file href="images/singledafselection.jpg" />
      </resource>
      <resource identifier="RESOURCE7" adlcp:scormtype="asset" type="webcontent" href="Lesson15.htm">
         <file href="Lesson15.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle15.gif" />
         <file href="images/TransformFlyout.gif" />
         <file href="images/birdfeeder.jpg" />
         <file href="images/birdfeederdistort.gif" />
         <file href="images/birdfeederflip.gif" />
         <file href="images/birdfeederperspective.gif" />
         <file href="images/birdfeederrotated.jpg" />
         <file href="images/birdfeederscaled.jpg" />
         <file href="images/birdfeederskewed.gif" />
         <file href="images/box-distort.gif" />
         <file href="images/box-flip.gif" />
         <file href="images/box-perspective.gif" />
         <file href="images/box-rotate.gif" />
         <file href="images/box-scale.gif" />
         <file href="images/box-skew.gif" />
         <file href="images/box.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/transformCheck.gif" />
         <file href="images/transformX.gif" />
      </resource>
      <resource identifier="RESOURCE8" adlcp:scormtype="asset" type="webcontent" href="Lesson16.htm">
         <file href="Lesson16.htm" />
         <file href="images/DistortFlyOut.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle16.gif" />
         <file href="images/distortfilters.gif" />
         <file href="images/filters.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/renderfilters.gif" />
      </resource>
      <resource identifier="RESOURCE9" adlcp:scormtype="asset" type="webcontent" href="Lesson17.htm">
         <file href="Lesson17.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LayerStyleDialog.gif" />
         <file href="images/LayerStyleIcon.gif" />
         <file href="images/LessonTitle17.gif" />
         <file href="images/SelectEffect1.gif" />
         <file href="images/SelectEffect2.gif" />
         <file href="images/TypingManColorOverlay.gif" />
         <file href="images/TypingManFlat.gif" />
         <file href="images/TypingManInnerBevel.gif" />
         <file href="images/TypingManInnerBevelDropShad.gif" />
         <file href="images/TypingManInnerGlow.gif" />
         <file href="images/TypingManInnerShad.gif" />
         <file href="images/TypingManOriginal.gif" />
         <file href="images/TypingManOuterGlow.gif" />
         <file href="images/TypingManOuterShadow.gif" />
         <file href="images/TypingManPillowEmboss.gif" />
         <file href="images/TypingManStroke.gif" />
         <file href="images/bevebosslayer.gif" />
         <file href="images/box.gif" />
         <file href="images/dafmultipleeffects.jpg" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/layerstyles.gif" />
         <file href="images/layerstylespalettebox.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE10" adlcp:scormtype="asset" type="webcontent" href="Lesson18.htm">
         <file href="Lesson18.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle18.gif" />
         <file href="images/box.gif" />
         <file href="images/daffbackground.jpg" />
         <file href="images/dafopacity.jpg" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/layerbox.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE11" adlcp:scormtype="asset" type="webcontent" href="Lesson19.htm">
         <file href="Lesson19.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle19.gif" />
         <file href="images/box.gif" />
         <file href="images/colordefault.gif" />
         <file href="images/colorpantone.jpg" />
         <file href="images/colorpickerdialog.gif" />
         <file href="images/colorpickerdialog1.jpg" />
         <file href="images/colorswap.gif" />
         <file href="images/colortoolbox.gif" />
         <file href="images/droppericon.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/toolbox.gif" />
      </resource>
      <resource identifier="RESOURCE12" adlcp:scormtype="asset" type="webcontent" href="Lesson2.htm">
         <file href="Lesson2.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/HandTool.gif" />
         <file href="images/LessonTitle2.gif" />
         <file href="images/ZoomToolIcon.gif" />
         <file href="images/box.gif" />
         <file href="images/colorselect.gif" />
         <file href="images/enhancementtools.gif" />
         <file href="images/eyedroppertool.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/navagationtools.gif" />
         <file href="images/objecttools.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/selectiontools.gif" />
         <file href="images/toolbox.gif" />
      </resource>
      <resource identifier="RESOURCE13" adlcp:scormtype="asset" type="webcontent" href="Lesson20.htm">
         <file href="Lesson20.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle20.gif" />
         <file href="images/TypeOptionsBar.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/parapalette.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/typeCheck.gif" />
         <file href="images/typeX.gif" />
         <file href="images/typelayer.gif" />
         <file href="images/typepalette.gif" />
         <file href="images/typetool.gif" />
         <file href="images/typetoolbig.gif" />
         <file href="images/winterwonderland2.jpg" />
      </resource>
      <resource identifier="RESOURCE14" adlcp:scormtype="asset" type="webcontent" href="Lesson21.htm">
         <file href="Lesson21.htm" />
         <file href="images/AirBrushToolIcon.gif" />
         <file href="images/AirBrushToolIconBig.gif" />
         <file href="images/AirbrushExample.gif" />
         <file href="images/DRNichsbikes.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle21.gif" />
         <file href="images/PaintBrushToolIcon.gif" />
         <file href="images/PaintBrushToolIconBig.gif" />
         <file href="images/PaintBucketExample.gif" />
         <file href="images/PaintBucketToolIcon.gif" />
         <file href="images/PaintBucketToolIconBig.gif" />
         <file href="images/PaintbrushExample.gif" />
         <file href="images/PencilExample.gif" />
         <file href="images/PencilToolIcon.gif" />
         <file href="images/PencilToolIconBig.gif" />
         <file href="images/brushoptions.gif" />
         <file href="images/brushselection2.gif" />
         <file href="images/brushselection3.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE15" adlcp:scormtype="asset" type="webcontent" href="Lesson22.htm">
         <file href="Lesson22.htm" />
         <file href="images/CustomShapeOptions.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle22.gif" />
         <file href="images/LineTool.gif" />
         <file href="images/OvalTool.gif" />
         <file href="images/PolygonTool.gif" />
         <file href="images/RectangleTool.gif" />
         <file href="images/RoundedRectangleTool.gif" />
         <file href="images/VectorToolsSmall.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/shapelayer.gif" />
         <file href="images/shapelayercolor.gif" />
         <file href="images/shapeoptions2.gif" />
         <file href="images/snowbike.jpg" />
         <file href="images/vectoroptionsbar.gif" />
      </resource>
      <resource identifier="RESOURCE16" adlcp:scormtype="asset" type="webcontent" href="Lesson23.htm">
         <file href="Lesson23.htm" />
         <file href="images/AngularGradient.jpg" />
         <file href="images/ColorBar.jpg" />
         <file href="images/DiamondGradient.jpg" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/GradientColorOptions.gif" />
         <file href="images/GradientExample.jpg" />
         <file href="images/GradientOptions.jpg" />
         <file href="images/GradientStyleOptions.gif" />
         <file href="images/GradientTool.gif" />
         <file href="images/GradientToolIcon.gif" />
         <file href="images/GradientToolIconBig.gif" />
         <file href="images/LessonTitle23.gif" />
         <file href="images/LinearGradientDiagonal2.jpg" />
         <file href="images/LinearGradientHorizontal2.jpg" />
         <file href="images/LinearGradientVertical2.jpg" />
         <file href="images/RadialGradient.jpg" />
         <file href="images/ReflectedGradient.jpg" />
         <file href="images/angulartool.gif" />
         <file href="images/diamondtool.gif" />
         <file href="images/gradienteditor.gif" />
         <file href="images/gradientpresets.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/lineartool.gif" />
         <file href="images/pssidebar.gif" />
         <file href="images/radialtool.gif" />
         <file href="images/reflectedtool.gif" />
      </resource>
      <resource identifier="RESOURCE17" adlcp:scormtype="asset" type="webcontent" href="Lesson3.htm">
         <file href="Lesson3.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle3.gif" />
         <file href="images/defaultpalettes.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE18" adlcp:scormtype="asset" type="webcontent" href="Lesson4.htm">
         <file href="Lesson4.htm" />
         <file href="images/37.gif" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle4.gif" />
         <file href="images/eyeicon.gif" />
         <file href="images/flatlayers.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/layerarrows.gif" />
         <file href="images/layers.gif" />
         <file href="images/linkicon.gif" />
         <file href="images/newlayericon.gif" />
         <file href="images/paintbrush.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE19" adlcp:scormtype="asset" type="webcontent" href="Lesson5.htm">
         <file href="Lesson5.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle5.gif" />
         <file href="images/allformats.gif" />
         <file href="images/fileopen.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE20" adlcp:scormtype="asset" type="webcontent" href="Lesson6.htm">
         <file href="Lesson6.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle6.gif" />
         <file href="images/box.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/imagesizebox.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE21" adlcp:scormtype="asset" type="webcontent" href="Lesson7.htm">
         <file href="Lesson7.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle7.gif" />
         <file href="images/Tree-and-DragonsGreen.jpg" />
         <file href="images/Tree-and-Dragonsnot-Green.jpg" />
         <file href="images/box.gif" />
         <file href="images/colorbalancebox.gif" />
         <file href="images/colorbalancemenu2.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE22" adlcp:scormtype="asset" type="webcontent" href="Lesson8.htm">
         <file href="Lesson8.htm" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/Jar-GateDark.jpg" />
         <file href="images/Jar-GateLight.jpg" />
         <file href="images/LessonTitle8.gif" />
         <file href="images/box.gif" />
         <file href="images/brightnesscontrastbox.gif" />
         <file href="images/brightnesscontrastmenu.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE23" adlcp:scormtype="asset" type="webcontent" href="Lesson9.htm">
         <file href="Lesson9.htm" />
         <file href="images/Circular-GateDark.jpg" />
         <file href="images/Circular-GateLight.jpg" />
         <file href="images/EndOfLesson.gif" />
         <file href="images/LessonTitle9.gif" />
         <file href="images/box.gif" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/huesaturationbox.gif" />
         <file href="images/huesaturationmenu.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE30" adlcp:scormtype="asset" type="webcontent" href="intro.htm">
         <file href="intro.htm" />
         <file href="images/headerside.gif" />
         <file href="images/headertop.gif" />
         <file href="images/pssidebar.gif" />
      </resource>
      <resource identifier="RESOURCE31" adlcp:scormtype="sco" type="webcontent" href="Exam.htm">
         <file href="Exam.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION1" adlcp:scormtype="sco" type="webcontent" href="Question1.htm">
         <file href="Question1.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION2" adlcp:scormtype="sco" type="webcontent" href="Question2.htm">
         <file href="Question2.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION3" adlcp:scormtype="sco" type="webcontent" href="Question3.htm">
         <file href="Question3.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION4" adlcp:scormtype="sco" type="webcontent" href="Question4.htm">
         <file href="Question4.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION5" adlcp:scormtype="sco" type="webcontent" href="Question5.htm">
         <file href="Question5.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION6" adlcp:scormtype="sco" type="webcontent" href="Question6.htm">
         <file href="Question6.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION7" adlcp:scormtype="sco" type="webcontent" href="Question7.htm">
         <file href="Question7.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION8" adlcp:scormtype="sco" type="webcontent" href="Question8.htm">
         <file href="Question8.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION9" adlcp:scormtype="sco" type="webcontent" href="Question9.htm">
         <file href="Question9.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION10" adlcp:scormtype="sco" type="webcontent" href="Question10.htm">
         <file href="Question10.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION11" adlcp:scormtype="sco" type="webcontent" href="Question11.htm">
         <file href="Question11.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION12" adlcp:scormtype="sco" type="webcontent" href="Question12.htm">
         <file href="Question12.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION13" adlcp:scormtype="sco" type="webcontent" href="Question13.htm">
         <file href="Question13.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION14" adlcp:scormtype="sco" type="webcontent" href="Question14.htm">
         <file href="Question14.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION15" adlcp:scormtype="sco" type="webcontent" href="Question15.htm">
         <file href="Question15.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION16" adlcp:scormtype="sco" type="webcontent" href="Question16.htm">
         <file href="Question16.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION17" adlcp:scormtype="sco" type="webcontent" href="Question17.htm">
         <file href="Question17.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION18" adlcp:scormtype="sco" type="webcontent" href="Question18.htm">
         <file href="Question18.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION19" adlcp:scormtype="sco" type="webcontent" href="Question19.htm">
         <file href="Question19.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION20" adlcp:scormtype="sco" type="webcontent" href="Question20.htm">
         <file href="Question20.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION21" adlcp:scormtype="sco" type="webcontent" href="Question21.htm">
         <file href="Question21.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION22" adlcp:scormtype="sco" type="webcontent" href="Question22.htm">
         <file href="Question22.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION23" adlcp:scormtype="sco" type="webcontent" href="Question23.htm">
         <file href="Question23.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION24" adlcp:scormtype="sco" type="webcontent" href="Question24.htm">
         <file href="Question24.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
      <resource identifier="QUESTION25" adlcp:scormtype="sco" type="webcontent" href="Question25.htm">
         <file href="Question25.htm" />
         <file href="util/APIWrapper.js" />
         <file href="util/SCOFunctions.js" />
      </resource>
   </resources>
</manifest>

6. Interaction with Content Packaging

6.1 Content Aggregation

Each <organization> element in the content package is a content aggregation. It represents the root of an activity tree - it is also an activity. Each <item> element in the <organization> and the <organization> itself, represent an activity. Only leaf activities (<item>s) will have associated learning resources that may be delivered as a result of sequencing

Sequencing information being associated with an IMS Content Package

 

Figure 6.1 - Sequencing information being associated with an IMS Content Package.

6.2 Activity Tree

The hierarchical structure defined in an <organization> element is used to build a sequencing activity tree. Since LMS sequencing behavior is described in terms of traversing the nodes of the tree, it can be used to determine which activity to deliver to the learner at any given point in the learning experience. Each node in this tree is an activity and can be aggregated into larger structures (modules, courses, etc.). There is a default traversal path that can be modified through the association of sequencing rules by a learning designer. Traversal is triggered by a sequencing request, which is triggered by the learner through navigation events or by the delivery system. Sequencing rules are evaluated at runtime and can be conditional based on tracking status. Activities are to be delivered one at a time. Auxiliary resources can be associated with activities.

The diagram in Figure 6.2 shows a simple activity tree illustrating how items can be organized to aggregate learning activities.

A simple activity tree that illustrates how items can be organized to aggregate learning activities

 

Figure 6.2 - A simple activity tree that illustrates how items can be organized to aggregate learning activities.

6.3 Example of Embedded Sequencing Information

This is an example showing how sequencing information is embedded in an item to describe a rollup rule and objectives associated with a pre-test.

<item identifier="PRETEST2">
   <title>Module #2 Pretest</title>
   <item identifier="ITEM45" identifierref="QUESTION6"/>
   <item identifier="ITEM46" identifierref="QUESTION7"/>
   <item identifier="ITEM47" identifierref="QUESTION8"/>
   <item identifier="ITEM48" identifierref="QUESTION9"/>
   <item identifier="ITEM49" identifierref="QUESTION10"/>
   <imsss:sequencing>
         <imsss:controlMode choice="false" flow="true" forwardOnly="true"/>
         <imsss:rollupRules >
      <imsss:rollupRule childActivitySet="all">
         <imsss:rollupCondition condition="attempted"/>
         <imsss:rollupAction action="completed"/>
      </imsss:rollupRule>
      </imsss:rollupRules>
      <imsss:objectives>
         <imsss:primaryObjective satisfiedByMeasure="true">
            <imsss:minNormalizedMeasure>0.8</imsss:minNormalizedMeasure>
            <imsss:mapInfo targetObjectiveID="obj_module_2" readSatisfiedStatus="false" writeSatisfiedStatus="true" />
         </imsss:primaryObjective>
      </imsss:objectives>
   </imsss:sequencing>
</item>

7. Runtime Implementation

All implementations of the IMS Simple Sequencing Specification are likely to share certain kinds of system behavior. As a learner interacts with activities, they are tracked and the sequencing engine will determine what activities are available next. Roughly, this defines a sequencing loop.

7.1 The Sequencing Loop

The sequencing loop describes how the sequencing process is invoked, what happens during the sequencing process and the potential outputs of the process. The sequencing loop only applies to the activity tree. It does not place any requirements or constraints on delivered content or runtime behavior of content. The runtime environment is free to invoke the sequencing loop at any time by issuing a navigation request. Once the sequencing loop is invoked, any running content must be forced to exit. This ensures that state information is accurately used by the sequencing processes. The diagram in Figure 7.1 shows the sequencing loop.

An illustration of the sequencing loop

 

Figure 7.1 - An illustration of the sequencing loop.

The system waits for a navigation event, which is translated into a navigation request and passed to the Overall Sequencing Process. This process acts as the process control by invoking various sequencing processes. Navigation Behavior acts on the Navigation Request and results in Exit and Sequencing Requests. Exit Behavior acts on any pending Exit Request and results in a Sequencing Request. Sequencing Behavior acts on any pending Sequencing Request and may result in a Delivery Request. Delivery Behavior acts on any pending Delivery Request and may result in the delivery of some activity to the learner. More detail follows.

7.1.1 Navigation Behavior

The Navigation Behavior process validates the incoming navigation request. This ensures that only requests that have the potential to succeed are processed. If the Current Activity is 'active', it issues an Exit Request. Sequencing Requests can only be processed if there is no 'Active' leaf activity. This is required to ensure that state of the activity tree reflects the most current available information during processing. With these checks out of the way, the appropriate Sequencing Request is issued.

7.1.2 Exit Behavior

The Exit Behavior process ends the current attempt the Current Activity and possibly some of its ancestors. It then ensures that the state of the activity tree reflects the most current information. It's very important that the state of the activity tree be completely current before processing continues. The Completion Subprocess allows learning resources to communicate learner status (if they are able to), the Rollup Process propagates status information from child activities through parents by evaluating Rollup Rules, and the Exit Action Rule Subprocess determines if an ancestor of the Current Activity exits. Post condition rules are evaluated on the 'exited' activity that may result in a Sequencing Request.

7.1.3 Rollup Rules

The Rollup Rules process causes information to be percolated up the activity tree from lower levels. A parent activity's objective and progress status are determined by its children. Rollup Rules can be applied to a parent activity that determines the conditions for objective and progress status are: Satisfied, Not Satisfied, Completed, or Incomplete.

An illustration of the Rollup Rules process

 

Figure 7.2 - An illustration of the Rollup Rules process.

In Figure 7.2, lessons 5 and 4 have been satisfied, but lesson 6 has not. Module B has a rollup rule that indicates if any lesson in it is satisfied, then the module is satisfied. Similarly, the course has a rule that says all modules must be satisfied and the course is not satisfied until all modules are.

7.1.4 Sequencing Behavior

The Sequencing Behavior process handles the processing of all Sequencing Requests. Sequencing Requests consist of Start, Resume All, Continue, Previous, Choice, Retry, or Exit requests. The process begins at the Current Activity or the root of the activity tree (if the sequencing process has not begun yet). An activity considered for during the processing of a Sequencing Request is called the 'Candidate Activity'. Limit Conditions and Precondition Rules affect which activities can be considered the 'Candidate Activity'. The result of processing a Sequencing Request may identify a leaf activity as a candidate for delivery - this is a Delivery Request.

7.1.5 Delivery Behavior

The Delivery Behavior process validates the candidate leaf activity for delivery. If the candidate is valid, it will begin the attempt on the activity, initialized tracking information for the activity, and ensure the activity tree is in a consistent state. These actions are internal to the sequencing engine. It identifies the activity to be delivered and any of its ancillary resources to the runtime system and hands control back to the runtime system. The runtime system attempts to deliver the learning resource and the sequencing engine waits for the next navigation request.

8. Best Practice Recommendations

8.1 Status Information Model

A Learning Technology System implementation should also implement the status tracking data model as it is defined in the Simple Sequencing Specification because proper interpretation of conditional rules may depend on the values of those specific data elements. Future specifications and application profiles that build on the Simple Sequencing Specification are also likely to assume the existence of these data elements.

Each activity in the activity tree has a status associated with it which indicates that the activity is active or suspended. The activity may also have a list of available child activities.

Two pieces of global status information are defined. The current activity is the activity currently in use by the user. The suspended activity indicates the activity from which a Suspend All navigation request was triggered.

8.2 Behavior Model

The behavior model consists of specific events and the behavior that must result from handling these events. The handling of events can be complex, and therefore the specification documents the handling of events through pseudo code. The pseudo code is not normative; in other words, an implementation does not have to be coded exactly according to the pseudo code. But a runtime service that delivers Simple Sequencing conformant content must behave as if it was coded that way, which means that the visible results of handling the events defined by Simple Sequencing must be the same. The effect of evaluating rules and directives must be the same, and the effect of status tracking information on the evaluation of rules specified in the content must be the same.

8.3 Data Types, Multiplicities, and Obligations

The following data types used in this specification are:

 
Data Type Values Obligations
Boolean True or False
 
Vocabulary Enumerated list of strings or numbers Vocabularies may be open or closed. Open vocabularies may be extended with new members, closed may not.
Collection Elements, strings, numbers, etc. An unordered list.
GUID String The GUID is an opaque reference identifier.
Integer All positive and negative whole numbers, plus zero Further constraints may include non-zero, positive, etc.
Duration A date time string
 
Accuracy A precision in seconds
 
Time Point A date time string
 
Real A floating point number
 
Ordered List Elements, strings, numbers, etc. An ordered list.

8.4 Binding of Simple Sequencing Information

The XML binding is intended to extend the CP binding by defining a namespace that can be referenced in a Content Packaging manifest. Simple Sequencing information can then be woven into the Content Packaging manifest as elements that use the Simple Sequencing namespace.

The only part of a manifest that contains Simple Sequencing information is within the <organizations> element of the manifest.

The sequencingRef element is used to refer to definitions of sequencing behavior that are defined elsewhere (see sequencingCollection below). Note that this reference must be used to refer to a single group of sequencing definition elements as a single whole; there is no facility to override or extend sequencing behaviors referred to in this manner.

The sequencingCollection element is used to hold elements so that they can be referred to from other places in the activity structure. As a best practice, each content aggregation should use only one sequencingCollection element, and should only use the IDref facility to reference sequencing elements that are contained in the sequencingCollection.

Note: All top-level elements of the binding are optional. If your collection does not define behavior that differs from the defaults, feel free to omit the top-level elements in your instances.

8.5 Data Collection and Updating Best Practices

8.5.1 Data Updates

The implementation must ensure that data is updated in the proper sequence. For example, the value of Objective Data Status should not be set to True until there is a value of Objective Satisfied Status. Reversing the order of assignment of these two values could result in a situation where an accessor uses a True value of Objective Data Status to determine if it can access Objective Satisfied Status, and then accesses Objective Satisfied Status before the second value assignment is complete. Implementing proper transactional controls are left to the implementation.

8.6 Rule Evaluation Best Practices

8.6.1 Order of Evaluation

There are no constraints on the order in which the limit conditions or precondition sequencing rules are applied.

There is no requirement that the constraint checking processes identify that multiple limits and preconditions are violated. There is no restriction that the constraint checking processes stop after finding the first constraint that is violated.

Rule processors should use short circuit evaluation techniques when determining if the rule conditions are true. For example, assume an And rule contains a condition on both Objective Progress Status and Activity Progress Status. If the Objective Progress Status evaluates to False, the condition on the value of Activity Progress Status should not be. The rule processor may reorder conditions to enable short circuit evaluation. However, short circuit evaluation is not required, as the default values insure that the same sequencing behaviors will result whether short circuit evaluation is used or not.

8.6.2 Optimizations

An implementation may use a general rule representation and encode the specific sequencing rules as instances of the more general representation.

An implementation may short circuit the validation of a delivery request if both the sequencing and delivery processes are part of a single monolithic process. Such a short circuit elimination of the validation of the delivery request should only be used if the system can insure that none of tracking data used in the rule condition or limit conditions has changed from when the delivery request was generated to when the request for delivery was actually initiated.

8.7 Activity Tree Traversal

The traversal of the activity tree for flow navigation and for rule evaluation is specified as preorder traversal. See Conceptual Model, section 3.1.3 for more information.

8.8 Handling of Tracking Data Best Practices

The implementation must ensure that data values are consistent when being accessed, i.e., the values of the set of activities that participate in a child set must be consistent while the entire set of rules applied during navigation are evaluated. Implementing proper transactional controls are left to the implementation.

Processes use data values from the sequencing definition model. Each attribute of the model has a value or inherits the value of the parent activity as specified in the sequencing definition model. In addition, there is a defined default value for each attribute. Processes that access data must access the proper value, i.e., the value of the attribute for the activity or the value for the parent if the data does not exist and is inherited. The implementation may fully instantiate the activity tree with values or provide an inheritance mechanism, either in the data model itself or as part of the sequencing process. The choice of approach is left to the implementation, which must only provide the proper data for use in the sequencing [or whatever...] process.

8.9 Numeric Tracking Data Best Practices

Normalized data values are described as value space real. A decimal data type should be considered as an alternative to a float data type for the implementation to maintain the required precision.

Values of Completion and Measure are normalized between 0..1. Testing for the exact value of 1.0 is unreliable. Any value > 0.99999 should be considered equal to 1.0 in evaluating rule conditions (based on the required precision of 5 decimal digits).

Appendix A - Glossary of Elements and Attributes

 
action (exitCondition) This is the attribute on the ruleAction element that defines the desired sequencing behavior if the exit condition rule evaluates to 'True'. It has an enumerated vocabulary of: 'exit'.
action (postCondition) This is the attribute on the ruleAction element that defines the desired sequencing behavior if the post condition rule evaluates to 'True'. It has a non-enumerated vocabulary of: 'exitParent', 'exitAll', 'retry', 'retryAll', 'continue', 'previous'.
action (preCondition) This is the attribute on the ruleAction element that defines the desired sequencing behavior if the pre condition rule evaluates to 'True'. It has a non-enumerated vocabulary of: 'skip', 'disabled', 'hiddenFromChoice', 'stopForwardTraversal'.
action (rollupAction) This is the attribute on the rollupAction element that defines the desired rollup behavior if the rule evaluates to 'True'. It has an enumerated vocabulary of: 'satisfied', 'notSatisfied', 'completed', 'incomplete'.
activityAbsoluteDurationLimit This attribute is used on the limitConditions element to define the maximum time duration that a learner is permitted to spend on all attempts at the activity. A zero value indicates the activity may not be accessed. The attribute's data-type is a 'duration' with a default value of '0' and a resolution of '0.1s'.
activityExperiencedDurationLimit This attribute is used on the limitConditions element to define the maximum time duration that a learner is permitted to spend on all attempts of the activity. The limit applies to only the time the learner is actually experiencing the activity and does not apply when the activity is suspended, i.e., when the activity is not being experienced or is inactive. A zero value indicates the activity may not be accessed. The attribute's data-type is a 'duration' with a default value of '0' and a resolution of '0.1s'.
attemptAbsoluteDurationLimit This attribute is used on the limitConditions element to define the maximum time duration that a learner is permitted to spend on any single attempt on the activity. This limit applies to the time the activity is active - from the time the activity begins until the time the activity ends, including any time the activity was suspended. A zero value indicates the activity may not be accessed. The attribute's data-type is a 'duration' with a default value of '0.0' and a resolution of '0.1s'.
attemptExperiencedDurationLimit This attribute is used on the limitConditions element to define the maximum time duration that a learner is permitted to spend experiencing a single attempt on the activity. The limit applies to only the time the learner is actually interacting with the activity and does not apply when the activity is suspended, i.e., when the activity is not being experienced or is inactive. A zero value indicates the activity may not be accessed. The attribute's data-type is a 'duration' with a default value of '0.0' and a resolution of '0.1s'.
attemptLimit This attribute is used on the limitConditions element to define the maximum number of attempts for the activity. A zero value indicates the activity may not be accessed. The attribute's data-type is a non-negative integer with a default value of '0'.
auxiliaryResource This element is the container for the information describing a single auxiliary resource. It has two mandatory attributes: auxiliaryResourceID and purpose.
auxiliaryResourceID This attribute is used on the auxiliaryResource element to define the identifier of the auxiliary resource. This is a GUID string.
auxiliaryResources This element is the container for the set of references to the set of auxiliary resources. When an activity is delivered to the learner the auxiliary resources are also made available. The order in which the auxiliary resources are described is not significant.
beginTimeLimit This attribute is used on the limitConditions element to define the date and time before which the activity is not available. The attribute's data-type is 'dateTime' with a default value of 'October 15, 1582 00:00:00.0' and a resolution of '0.1s'.
childActivitySet This attribute is used on the rollupRule element to define the set of children of the activity whose data values are used to evaluate the rollup condition. It is an enumerated vocabulary string consisting of: 'all', 'any', 'none', 'atLeastCount' and 'atLeastPercent'. The default value is 'all'.
choice The choice attribute is used on the controlMode element to indicate that a 'Choice' sequencing request is permitted to target the children of the activity. The attribute is a Boolean data-type with the default value of 'true'.
choiceExit The choiceExit attribute is used on the controlMode element to indicate that an active child of this activity is permitted to terminate if a 'Choice' sequencing request is processed. The attribute is a Boolean with the default value of 'true'.
completionSetByContent This attribute for the deliveryControls element indicates that the 'Activity Attempt Completion status' information in the Tracking Model will be set by the content object. A 'false' value indicates that the default rules will be used to set progress data. For a 'true' value, how, if or when the completion data is set is not specified. It has a data-type of Boolean with a default value of 'false'.
condition (rollupCondition) The required attribute on the rollupCondition element that defines the actual condition for the rule. It is an enumerated vocabulary of: 'satisfied', 'objectiveStatusKnown', 'objectiveMeasureKnown', 'completed', 'activityProgressKnown', 'attempted', 'attemptLimitExceeded', 'timeLimtExceeded', 'outsideAvailableTimeRange' and 'never'.
condition (ruleCondition) The required attribute on the ruleCondition element that defines the actual condition for the rule. It is an enumerated vocabulary of: 'satisfied', 'objectiveStatusKnown', 'objectiveMeasureKnown', 'objectiveMeasureGreaterThan', 'objectiveMeasureLessThan', 'completed', 'activityProgressKnown', 'attempted', 'attemptLimitExceeded', 'timeLimitExceeded', 'outsideAvailableTimeRange', 'always'.
conditionCombination The attribute for the rollupConditions and ruleConditions elements that defines how rollup conditions are combined in evaluating the rule. It is a non-enumerated vocabulary of: 'all', 'any. The default value is 'any'.
controlMode This element is the container for the sequencing control mode information including descriptions of the types of sequencing behaviors specified for an activity. Simple sequencing processes may reference the sequencing control modes for any activity in the activity tree and the default values are used if the data is not defined for a given activity.
deliveryControls This element contains the description of the actions and controls used when an activity is delivered. Simple sequencing processes may reference the delivery control data for any activity in the activity tree. The delivery controls are optional and if these are absent then the default values must be used. This element has the following attributes available: tracked, completionSetByContent and objectiveSetByContent.
endTimeLimit This attribute is used on the limitConditions element to define the date and time after which the activity is not available. The attribute's data-type is 'dateTime' with a default value of 'October 15, 1582 00:00:00.0' and a resolution of '0.1s'.
exitConditionRule The element that acts as the container for the description of actions that terminate an activity. Rules that include such actions are applied when a descendent of an activity exits.
flow The flow attribute is used on the controlMode element to indicate that 'Continue' and 'Previous' sequencing requests are permitted for the children of the activity. The attribute is a Boolean with the default value of 'false'.
forwardOnly The forwardOnly attribute is used on the controlMode element to indicate that backward targets (in terms of activity tree traversal of 'Choice' and 'Previous' sequencing requests are not permitted for the children of this activity. The attribute is a Boolean with the default value of 'false'.
ID The ID attribute is used on the sequencing element to assign a unique identifier to the particular sequencing instruction. This attribute is based upon the XML ID data-type.
IDRef The IDRef attribute is used on the sequencing element to reference the unique identifier assigned to a sequencing set defined by the sequencing element. This is used to link this reference to the declared sequencing set that must be defined somewhere in the same XML document. This attribute is based upon the XML IDREF data-type.
limitConditions This element is used to define the constraints on the access to an activity based on the time of day, time spent on the activity and number of attempts. Simple sequencing processes may reference the limit conditions description for any activity in the activity tree and when this information is unavailable the default values must be used. It makes use of the attemptLimit, attemptAbsoluteDurationLimit, beginTimeLimit, attemptExperiencedDurationLimit, activityAbsoluteDurationLimit, activityExperiencedDurationLimit and endTimeLimit attributes.
mapInfo This element is the container for the objective map description. This defines the mapping of an activity's local objective information to and from a shared global objective. Each activity may have an unlimited number of objective maps. It uses the targetObjectiveID, readSatisfiedStatus, readNormalizedMeasure, writeSatisfiedStatus and writeNormalizedMeasure attributes.
measureThreshold This attribute is used on the ruleCondition element to provide the value used as a threshold during measure-based condition evaluations.
The data type is a real number in the rage -1.0000 to 1.0000 with a precision of at least four decimal places and a default value of 0.000.
minimumCount The attribute for the rollupRule element that contains the number of children activities associated with a 'Rollup Child Set' attribute value of 'At Least Count'. Its data-type is a non-negative integer with a default value of '0'.
minimumPercent The attribute for the rollupRule element that contains the percentage of children activities associated with a 'Rollup Child Set' attribute value of 'At Least Percent'. Its data-type is a real number in the range 0.0000 to 1.0000 (precision to at least 4 significant decimal places) and with a default value of '0.0000'.
minNormalizedMeasure This element contains the definition of the minimum satisfaction measure for the objective normalized between -1 and 1. If the objective value of 'Objective Normalized Measure' exceeds this value, the objective value of 'Objective Data Status' is set to 'true' and the objective value of 'Objective Satisfied Status' is set to 'true'. It has a real number in the range -1.0000 to 1.000 with a precision of at least four decimal places and has a default value of 1.0000.
objective The element that identifies the other objectives to be associated with the activity. Simple sequencing processes may reference the local objective information for any activity or any globally shared objectives. It uses the satisfiedByMeasure and objectiveID attributes.
objectiveID This is an attribute used by the primaryObjective and objective elements that is used to define the identifier of an objective associated with the activity. The identifier is a link to the corresponding objective information. It is a GUID and is required if the activity has more than one objective.
objectiveMeasureWeight This attribute on the rollupRules element is used to provide the weighting factor applied to the Objective value of 'Objective Normalized Measure' for the objective associated with the activity used during rollup for the parent activity. The data-type is a real number in the range 0.0000 to 1.0000 (precision to at least 4 significant decimal places).
objectives The element that contains the set of objectives that are to be associated with an activity. Each activity must have at least one primary objective and may have an unlimited number of objectives. Each activity must have one, and only one, objective that contributes to rollup.
objectiveSetByContent This attribute for the deliveryControls element indicates that the 'Objective Status Information' for the associated objective that has the attribute value 'Objective Contributes to Rollup' value of 'true' with the Tracking Model will be set by the content object. A 'false' value indicates that default rules will be used to set objective data. For a 'true' value, how, if or when the objective data is set is not specified. It has a data-type of Boolean with a default value of 'false'.
operator The attribute for the rollupCondition and ruleCondition elements that defines the unary operator to be applied to the condition. It is an enumerated vocabulary of: 'not', 'noOp'. The default value is 'noOp'.
postConditionRule The element that acts as the container for the description of actions that control sequencing flow by issuing sequencing requests. Rules that include such actions are applied when an activity exits.
preConditionRule The element that acts as the container for the description of actions that control sequencing decisions and delivery of a specific activity. Rules that include such actions are used to determine if the activity will be delivered.
primaryObjective The element that identifies the primary objective to be associated with the activity. Simple sequencing processes may reference the local objective information for any activity or any globally shared objectives. It uses the satisfiedByMeasure and objectiveID attributes.
purpose This attribute is required by the auxiliaryResource element to indicate the purpose of the auxiliary resource. This is an open vocabulary string.
randomizationControls This element is the container for the descriptions of how children of an activity should be ordered during the sequence process. Simple sequencing processes may reference the randomization control data for any activity in the activity tree and when this is absent the default values should be used. The attributes attemptLimit, selectCount, reorderChildren and selectionTiming are available to this element.
randomizationTiming This attribute is used on the randomizationControls element to indicate when the ordering of the children of the activity should occur. It is an enumerated vocabulary consisting of the strings 'never', 'once' and 'onEachNewAttempt' with a default value of 'never'.
readNormalizedMeasure This attribute for the MapInfo element is used to indicate that the local objective value of 'Objective Normalized Measure' for the identified objective associated with the activity should be retrieved from the identified shared global objective when the progress for the local object is undefined. It is a Boolean data-type with a default value of 'true'.
readSatisifiedStatus This attribute for the MapInfo element is used to indicate that the local objective value of 'Objective Satisfied Status' for the identified objective associated with the activity should be retrieved from the identified shared global objective. It is a Boolean data-type with a default value of 'true'.
referencedObjective This attribute is used on the ruleCondition element to identify the objective associated with the activity used during the evaluation condition. This is a GUID supplied as a string.
reorderChildren This attribute is used on the randomizationControls element to indicate that the order of the child activities is randomized. The attribute's data-type is Boolean with a default value of 'false'.
rollupAction The element that defines the action that is to be undertaken if the rollup rule is declared as 'True'. It uses the attributes operator and condition.
rollupCondition The element that is the container for the identification of a condition to be applied in the rollup rule. It uses the attributes operator and condition.
rollupConditions The element that is a container for the set of conditions that are applied within a single rollup rule. It uses the attribute conditionCombination.
rollupObjectiveSatisfied This attribute on the rollupRules element is used to indicate that the Objective value of the 'Objective Satisfied Status' for the objective associated with the activity is included in the rollup for the parent activity. It is of data-type Boolean with a default value of 'true'.
rollupProgressCompletion This attribute on the rollupRules element is used to indicate that the Attempt Progress information value of 'Activity Attempt Completed Status' for the activity is included in the rollup for the parent activity. It is of data-type Boolean with a default value of 'true'.
rollupRule The element that acts as the container for each rollup rule that is to be applied to an activity. The general format for a rule can be expressed informally as 'If child-activity set, condition set Then action'. Multiple conditions are permitted. The related optional attributes are: childActivitySet, minimumCount and minimumPercent.
rollupRules The element that acts as the container for the set of rollup rules that are to be applied to an activity. Each activity may have an unlimited number of rollup rules and the order in which they are defined is not significant. The related optional attributes are: rollupObjectiveSatisfied, rollupProgressCompletion and objectiveMeasureWeight.
ruleAction This element contains the desired sequencing behavior if the pre/post/exit rule evaluates to 'True'. It uses the action attribute.
ruleCondition The element that identifies a condition to be applied as part of the sequencing pre/post/exit rule. It uses the referencedObjective, measureThreshold, operator and condition attributes.
ruleConditions The element that acts as the container for the set of conditions that are applied to the sequencing pre/post/exit condition rules. It uses the conditonCombination attribute.
satisfiedByMeasure This attribute is used by the primaryObjective and objective elements to indicate that the 'Objective Minimum Satisfied Normalized Measure' is to be used in place of any other method to determine if the objective associated with the activity has been satisfied. It has a Boolean data-type with a default value of 'false'.
selectCount This attribute is used on the randomizationControls element to indicate the number of child activities that must be selected from the set of child activities associated with the activity. If the given value is larger than the number of child activities then all of the activities are selected. The attribute data-type is a non-negative integer with a default value of '0'.
selectionTiming This attribute is used on the randomizationControls element to indicate when selection should occur. It is an enumerated vocabulary consisting of the strings 'never', 'once' and 'onEachNewattempt' with a default value of 'never'.
sequencing Sequencing information is associated with items in a hierarchical structure by associating a single sequencing element with the hierarchical item. In the context of IMS Content Packaging, this is done by including the sequencing element within either an <item> element or an <organization> element. Sequencing information can be reused across multiple items. This is done by using the IDRef attribute and assigning an ID attribute value to the sequencing element. The sequencing elements that are referred to using this mechanism may be stored in a sequencingCollection element placed at the top level of the manifest.
sequencingCollection This element is the container for the collated individual sequencing instructions. It is advised that references to the full sequencing instructions are embedded in the IMS Content Package at the appropriate points. The actual sequencing details are then all collected and placed under the sequencingCollection element that is itself located at an agreed place within the content package e.g. after the resources.
sequencingRules This element is the container for the sequencing rule descriptions. Each rule describes the sequencing behavior for an activity. Each activity may have an unlimited number of sequencing rules and within any grouping the rules are evaluated in the order in which they are listed.
targetObjectiveID This attribute for the mapInfo element contains the identifier of the global shared objective targeted for mapping. This is a GUID string.
tracked This attribute for the deliveryControls element indicates that 'Objective' and 'Attempt Progress' information for the activity attempt should be recorded and the data will contribute to the rollup for the parent activity. It has a data-type of Boolean with a default value of 'true'.
useCurrentAttemptObjectiveInfo The useCurrentAttemptObjectiveInfo attribute is used on the controlMode element to indicate that the objectives progress information for the children of the activity will be used in rule evaluations and rollup if that information was recorded during the current attempt of the activity. The attribute is a Boolean with the default value of 'true'.
useCurrentAttemptProgressInfo The useCurrentAttemptProgressInfo attribute is used on the controlMode element to indicate that the attempt progress information for the children of the activity will be used in rule evaluations and rollup if that information was recorded during the current attempt of the activity. The attribute is a Boolean with the default value of 'true'.
writeNormalizedMeasure This attribute for the MapInfo element is used to indicate that the local objective value of 'Objective Normalized Measure' for the identified objective associated with the activity should be transferred to the identified global shared objective upon exit of the activity. It is a Boolean data-type with a default value of 'false'.
writeSatisfiedStatus This attribute for the MapInfo element is used to indicate that the local objective value of 'Objective Satisfied Status' for the identified objective associated with the activity should be transferred to the identified global shared objective upon exit of the activity. It is a Boolean data-type with a default value of 'false'.

Appendix B - List of Example Files

 
Name Description Type
imsmanifest_none.xml This is a IMS CP compliant manifest without any sequencing information defined. A sequencer that encounters this package will provide the default sequencing behavior. The learner can choose any activity in any order. manifest
imsmanifest_linear.xml Choice is not allowed anywhere in the content aggregation. The learner is directed from the introduction to each lesson of the five modules in order. The learner decides when to progress through the content and in what direction, by signaling continue and previous events. manifest
imsmanifest_linearchoice.xml The introduction is delivered to the learner. After the introduction, the learner can choice any of the five modules. When a module has been selected, the learner is directed through the module's lessons in order. The learner decides when to progress through the content and in what direction, by signaling continue and previous events. manifest
imsmanifest_linearchoice_noexit.xml As above, but while experiencing a module, the learner cannot end their attempt on the experienced module until they have completed it manifest
imsmanifest_knowledgepaced.xml Choice is not allowed anywhere in the content aggregation. The learner is directed from the introduction to each lesson of the five modules in order. Each module is structured identically: the learner is presented a pre-test that consists of the five questions associated with the module. manifest
imsmanifest_remediation.xml Shows how remediation from a post-test can be done. After the required modules are experienced again, the learner is presented a post-test that consists of all twenty-five questions divided into five, five question parts. The learner is only presented post-test parts that correspond to module objectives that where not 'satisfied' in the first assessment; 'satisfied' modules are skipped. manifest
imsmanifest_datamap.xml Choice is not allowed anywhere in the content aggregation. The learner is directed from the introduction to a pre-test. The pre-test consists of one learning activity that assesses the learner's knowledge of the module's objectives. Upon completion of the pre-test, the results of the assessment are communicated to the sequencing system through a set of objectives, which are associated with the modules. Example shows how learning objectives are used. manifest
auxresources.xml Shows how auxiliary resources may be referenced to provide additional capabilities. fragment
imsmanifest_posttest.xml Shows how a post-test is represented. manifest
imsmanifest_pretest.xml Shows how a pre-test is represented. manifest
limitconditions.xml Shows various kinds of limit conditions and how limit condition rules are included in sequencing information. fragment
objectives.xml Shows how learning objectives are represented and how they are used in sequencing information. fragment
rollup.xml Shows how rollup rules can be included in sequencing information. fragment

Appendix C - SCORM Application Profiling of Simple Sequencing

The Advanced Distributed Learning Co-labs (ADL) are developing an application profile for the training needs of their community which includes Simple Sequencing and defines extensions to it to handle navigation requests, user interface interactions, specifications for communication between client and server, and other considerations. This profile is still in development at the time of this writing. Please refer to http://www.adlnet.org for further information.

About this Document

 
Title IMS Simple Sequencing Best Practice and Implementation Guide
Editors Mark Norton (IMS), Claude Ostyn (Click2Learn), Angelo Panar ADL), Brendon Towle (Thomson NETg)
Team Co-Leads Ron Ball (ADL), Brandt Dargue (Boeing)
Version 1.0
Version Date 03 March 2003
Status Final Specification
Summary This document presents the IMS Simple Sequencing Best Practice and Implementation Guide and describes the recommended best practices when adopting the IMS Simple Sequencing Specification.
Purpose Defines the IMS Simple Sequencing best practice and implementation guidelines
Document Location http://www.imsglobal.org/simplesequencing/ssv1p0/imsss_bestv1p0.html

List of Contributors

The following individuals contributed to the development of this document:

 
Name Organization
Thor Anderson IMS Global Learning Consortium, Inc.
Bill Blackmon Carnegie Mellon University
Fabrizio Cardinali Giunti Interactive Labs
Travis Carlton Boeing
Thomas Dinger IBM
Philip Dodds Advanced Distributed Learning (ADL)
Leonard Greenberg Pathlore
Michael Korcuska DigitalThink
Jon McCarty Docent
Boyd Nielsen Thomson NETg
Land Ormiston Saba
Dan Rehak Carnegie Mellon University
GianLuca Rolandelli Giunti Interactive Labs
Brian Taliesin Microsoft
Schawn Thropp Advanced Distributed Learning (ADL)
Robert Todd DigitalThink
Ed Walker IMS Global Learning Consortium, Inc.
Michael Vax WebCT
Jonathan Zempel IBM

Revision History

 
Version No. Release Date Comments
0.7.5 Public Draft 12 April 2002 First Public Draft released to the public.
1.0 Public Draft 17 October 2002 Numerous editoral updates and additional clarifications. Updated pseudo code. Added introduction section and several diagrams.
1.0 Final 03 March 2003 Added section describing relation to Learning Design Specification. Expanded Figure 3.1 (problem space).
Added two advanced examples: Photoshop Remediation and Data Mapping.
Added material to Content Packaging, Runtime Implementation, and Best Practices sections.
Added Example File Appendix.
Made corrections recommended by the SS group.
Updated examples provided by ADL, including the Photoshop Remediation example.

Index

A
Absolute Duration 1
Activity 1, 2, 3, 4, 5
Activity Tree 1, 2, 3
Attempt 1
Auxiliary Resource 1

B
Binding
     Attributes
 

condition 1, 2, 3, 4, 5, 6

ID 1, 2

IDref 1      Elements
 

mapInfo 1

objective 1, 2, 3, 4, 5, 6

objectives 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

sequencing 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22

sequencingCollection 1

C
Content Aggregation 1
Content Package 1, 2, 3, 4, 5

D
Delivery Request 1, 2

E
Exit Request 1, 2
Experienced Duration 1

G
GUID 1

I
IMS Specifications
     Content Packaging 1, 2, 3, 4, 5, 6, 7, 8
     Question and Test Interoperability 1, 2, 3
     Reusable Definition of Competency or Education Objective 1, 2
 

L
Limit Conditions 1, 2

M
Model 1, 2, 3, 4, 5, 6, 7, 8

N
Navigation Request 1

O
Objective 1, 2
Overall Sequencing Process 1

P
Process
     Overall Sequencing 1
 

Q
Question and Test Interoperability 1, 2

R
Resume 1
Reusable Definition of Competency or Education Objective 1, 2
Rollup Rule 1, 2

S
SCORM 1, 2, 3, 4
Sequencing 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
Sequencing Request 1, 2
Sequencing Rule 1
Suspend 1

V
Vocabulary 1

W
W3C 1

X
XML
     XSD 1
 

 

 

 

IMS Global Learning Consortium, Inc. ("IMS") is publishing the information contained in this IMS Simple Sequencing Best Practice and Implementation Guide ("Specification") for purposes of scientific, experimental, and scholarly collaboration only.

IMS makes no warranty or representation regarding the accuracy or completeness of the Specification.
This material is provided on an "As Is" and "As Available" basis.

The Specification is at all times subject to change and revision without notice.

It is your sole responsibility to evaluate the usefulness, accuracy, and completeness of the Specification as it relates to you.

IMS would appreciate receiving your comments and suggestions.

Please contact IMS through our website at http://www.imsglobal.org

Please refer to Document Name:
IMS Simple Sequencing Best Practice and Implementation Guide Revision: 03 March 2003