SCORM Developers Blog

The SCORM Developer blog contains information pertaining to SCORM development, including experiences of SCORM developers, tips-and-tricks, and best-practices.

Saturday, July 28, 2007

Content Organizations: Activities and Trees

A SCORM content package can define one or more Organizations that describe how resources are logically organized into a learning experience. An organization is defined as a hierarchical tree of items or activities.

Each item in the hierarchy represents an instructionally relevant unit of learning. Items can be nested to any arbitrary depth and have learning taxonomy labels applied to them. For instance: Course, Module, Lesson, Chapter.

Example organization:

  • Course
    • Module A
      • Lesson A1
      • Lesson A2
    • Module B
      • Lesson B1
      • Lesson B2
        • Chapter B2a
        • Chapter B2b

A content package organization definition should not be confused with the physical structure of the content package files and resources. The two are independent. The structure of content objects are defined by resources and the structure of learning activities are defined by organizations.

Activity Trees

An Activity Tree is the run-time representation of learning activities derived from a organization. Activity Trees determine how the content is experienced by the learner as learning activities.

A learning activity is the context, defined by the organization, in which a learner experiences a learning object.

A learning object is the actual resource to be launched, such as a SCO (Shareable Content Object), as the learning activity.

An Activity that has no children is called a leaf. Only leaf activities are actually delivered to a learner. And because they are delivered to a learner, each will reference a single launchable resource (a web-deliverable learning unit).

An activity that is not a leaf is the parent of a cluster. A cluster is a parent activities and all of its sub-activities. Activities can be nested within other activities, with no limit on depth.

Each activity has a title that is used when displaying the activity, for instance, in a table of contents.
Future topic: Activity trees for sequencing...

Learn more about SCORM Content Organizations and Activity Trees at Redbird DevNet, the SCORM Developer Network, by clicking here...

Saturday, July 21, 2007

SCORM Sequencing and Navigation

A learner experiencing SCORM content does not necessarily exercise complete control over which learning object they experience and when. Content developers determine how much control is given to the learner based on organization and sequencing information defined in the content package's manifest.

When accessing SCORM content, a learner will experience only one learning object at a time. SCORM Sequencing and Navigation define the ability of a learner to navigate from one learning object to another and the sequence in which learning objects may be experienced by a learner.

SCORM Sequencing defines the behaviors and data model used by the SCORM run-time environment to determine how a content package will be delivered as a learning experience. It defines the functionality that a SCORM-conformant LMS must implement to process sequencing information at run-time based on learner interaction with content objects.

SCORM Navigation defines how learning and system initiated navigation events are triggered and processed, resulting in the identification of learning activity for delivery. Navigation is the process by which a learner and an LMS cooperate to identify navigation requests to realize a learning experience.

Learn more about SCORM Sequencing and Navigation at Redbird DevNet, the SCORM Developer Network, by clicking here...

Wednesday, July 11, 2007

SCORM Run-Time API

SCORM's Run-Time API (application programming interface) is the communication mechanism used by a SCO (shareable content object) and an LMS (learning management system). The run-time API communicates state between a content object and the LMS (e.g., inititlized, terminated, and/or in an error condition) and is used for retrieving and storing data (e.g., score, time limits, etc.).

RTE/LMS implementations are responsible for providing an API instance that SCOs can use when launched for a learner. The API instance is exposed as an object in the Document Object Model (DOM), typically as a JavaScript variable.

Only launched SCOs (not Assets) make use of the RTE API. The LMS must launch the SCO in a browser window that is a dependent window (i.e. "popup" window) or child frame of the browser window that exposes the API instance.

There are eight run-time API functions provided by the SCORM run-time environment:

  • Initialize("")
  • Terminate("")
  • GetValue(parameter)
  • SetValue(parameter1, parameter2)
  • Commit("")
  • GetLastError()
  • GetErrorString(parameter)
  • GetDiagnostic(parameter)

Learn more about SCORM's Run-Time API at Redbird DevNet, the SCORM Developer Network, by clicking here...

Friday, July 6, 2007

SCORM Shareable Content Objects (SCOs)

A Shareable Content Object (SCO) is a launchable learning object (resource) that communicates with the run-time environment that launched it. A SCO must be designed so that it can be launched in a standalone web window, or in a frame in a HTML frameset.

A SCO is special because when launched for a learner, in the learner's web-browser, it will communicate information back to the LMS that launched it, often a remote server. This communication allows the LMS to track information pertaining the learner's experience.

Typical SCO Lifecycle:

  1. SCO is launched by a SCORM Run-Time Environment (RTE) (often an LMS)
  2. SCO finds RTE provided API
  3. SCO begins communication with the RTE API (via a call to Initialize())
  4. Learner begins interaction with the SCO
  5. SCO sends and retreives data via the RTE API (via calls to Get/SetValue())
  6. Learner ends interaction with the SCO
  7. SCO ends communication with the RTE API (via a call to Terminate())

Learn more about Shareable Content Objects (SCOs) at Redbird DevNet, the SCORM Developer Network, by clicking here...

Tuesday, July 3, 2007

SCORM Manifest Files

Every SCORM content package contains an XML manifest file that describes the package and its contents. The name of the manifest file is always imsmanifest.xml and it must appear in the root of the content package.

The manifest file is a structured inventory of the content of the package. It defines the physical files within the content package and how they are combined to form learning objects (resources). The manifest may also describe how learning objects are organized into learning experiences (organizations).

Mandatory Manifest File contents:

  • Unique identifier
  • Minimal metadata describing the package and its SCORM version
  • One or more resource definitions listing all files required to launch and deliver each resource

Optional Manifest File contents:

  • One or more organizations of learning activities
  • Sequencing information for organizations
  • More metadata for the content package, resources, and organizations

Example imsmanifest.xml file:

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

<!-- Created with Trident, the SCORM IDE - http://www.scormsoft.com -->
<manifest identifier="MANIFEST_IDENTIFIER" version="1.0"
xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"
xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3"
xmlns:adlnav="http://www.adlnet.org/xsd/adlnav_v1p3"
xmlns:adlseq="http://www.adlnet.org/xsd/adlseq_v1p3"
xmlns:imsss="http://www.imsglobal.org/xsd/imsss"
xmlns:lom="http://ltsc.ieee.org/xsd/LOM"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd
http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_v1p3.xsd
http://www.adlnet.org/xsd/adlnav_v1p3 adlnav_v1p3.xsd
http://www.adlnet.org/xsd/adlseq_v1p3 adlseq_v1p3.xsd
http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd
http://ltsc.ieee.org/xsd/LOM lom.xsd">

<metadata>
<schema>ADL SCORM</schema>
<schemaversion>CAM 1.3</schemaversion>
</metadata>

<organizations default="org1">
<organization identifier="org1">
<item identifier="ACT-001" identifierref="RES-001">
<title>Activity 1</title>
</item>
</organization>
</organizations>

<resources>
<resource id="RES-001" type="webcontent" adlcp:scormType="sco" href="sco1.html">
<file href="sco1.html"/>
<file href="apiWrapper.js"/>
</resource>
</resources>

</manifest>

Learn more about SCORM Manifest files at Redbird DevNet, the SCORM Developer Network, by clicking here...