Simple Sequencing Overview
Mark J. Norton
Jan. 31, 2002
The IMS Simple Sequencing Specification is concerned with specifying how learning objects are ordered and presented to a learner. Three kinds of sequencing are possible using this specification: Choice, Flow, and AutoAdvance.
Choice sequencing presents the learner with a set of learning activities from which the next activity may be selected. Sequencing is controlled by determing which activities are enabled or hidden at a given time. This state information is determined each time the user needs to make a choice. State is set by rules associated with the activites present in the sequence.
Choice Sequencing
Lets look at a simple example of Choice Sequencing. A short course consists of two modules each with three activities:

Let us further suppose that there are no restrictions on which module the user does first, but in each of these modules 1 must be done before 2, and 2 before 3, etc. This is a basic prerequisite model. The Simple Sequencing Specification does not describe how a user interface is implemented, but you could choose to present a list of activities for this sequence like this:

This shows a menu of activities that the user may select from at start up time. Notice that only activities 1 and 4 are enabled, the others being greyed out. This reflects the fact that the user may work on either module, but cant start the later activities within them until prerequisites are satisfied. If the learner chooses and completes activity-1, then the menu would be updated to look like this:

Activity-1 is now checked to indicate that it has been successfully completed. Activity-2 changed from greyed out to enabled (black). Activity-4 may still be selected by the user. Activity-1 is also still enabled to allow the user to return to it for review. If the user chooses to return to activity-1, it stays completed.
So how does the system know that activity-2 should be enabled at this point? Activity-1 is a self-contained learning object which has some way to know when it is complete. The activity then signals the Learning Management System (LMS) that it has been completed by this learner. In the SCORM, this signalling is done by LMSFinish( ) call. On receiving this signal, the LMS marks this activity as completed by this learner, perhaps saving a score as well. Score and completion information is rolled-up to update the status of this module and the whole sequence.
It is now time to determine what activities the user may select from next. To do this, the LMS walks the organization tree looking for onDetermine rules associated with an activity or aggregation. Activity-2 has an onDetermine rule, which is evaluated by the LMS. In this case, activity-2 recognizes that activity-1 is a prerequisite which has been completed by the learner. The action which results is to change its enabled status to TRUE. All other nodes are checked for onDetermine rules and evaluated as needed. Once complete, a new menu may be created reflected in the new enable status of each activity.
Organization Sequencing
Sequencing may also be accomplished using an order established by the organization tree in the content package. Sequencing is depth-first, ordered traversal of the organization tree. Transitions from one activity to the next may be signaled by the user (Flow) or done automatically by the LMS (AutoAdvance).
Here is an example of the sequence presented above as an IMS Content Packaging Organization structure:

Naturally, this is very simplified, but it does show the basic XML structure of the organization has it applies to this example. The identifierref properties have been left out for clarity, but are needed to tie an activity to the resources used to deliver it. Elements are shaded to correspond to the previous sequencing diagrams.
This organization defines a sequencing tree based on nested item elements within an organization. This tree can be shown graphically as:

Sequencing starts at the root of the organization. The first node in this sequence happens to be an aggregation (Module-1), so the first activity will be the first one in Module-1, which is Activity-1. An arbitrary number of aggregation layers can be included in a sequence.
When the learner has completed Activity-1, the LMS is signaled as before. In Flow Sequencing, some kind of Next button is provided to the user to signal the LMS that sequencing should proceed to the next activity. But what is the next one? Again, this depends on the rules associated with each of the sequencing nodes. A rule may be set up to indicate skip me for example. Activity-2 could have a rule that if activity-1 is not mastered, then set the isSkipped flag to TRUE. If that were the case, the next activity would be activity-3 (unless some rule prevented it from being accessed).
AutoAdvance sequencing works pretty much like flow, except that no user interaction is required to advance to the next activity. When an activity is determined to be done and the LMS is signaled, the next activity is automatically loaded and started for the learner.