Dashboard > SCORM 2.0 > ... > SCORM 2.0 White Papers > SCORM 2.0 SCO-based Sequencing
  SCORM 2.0 Log In | Sign Up   View a printable version of the current page.  
  SCORM 2.0 SCO-based Sequencing
Added by Leo Lucas, last edited by Mike Rustici on Aug 21, 2008  (view change)
Labels: 

SCORM 2.0: The Lucas Proposal - SCO-based Sequencing

SCORM 2.0: The Lucas Proposal - SCO-based Sequencing

Author:  Leo Lucas

Summary

The "Lucas Proposal" for SCORM 2.0 calls for the elimination of simple sequencing. This proposal describes its replacement called SCO-based sequencing. SCO-based sequencing allows courses to be modular at the SCO level but eliminates all of the problems with simple sequencing which include confusing user interfaces, increased time to create courses, limitations to sequencing and increased time to integrate courses with a LMS.

SCO-based sequencing allows a SCO to call another SCO by providing a runtime API to the child SCO. The parent SCO receives all of the SCORM data sent by the child SCO and makes sequencing decisions based on the data. The parent SCO passes the child's SCORM data onto the LMS for storage and reporting. All SCOs are separated into folders for ease of identification and reuse.

Requirements/Needs Outlined

A better solution for sequencing and navigation.

Recommendations

SCO-based sequencing allows a SCO to call another SCO by providing a runtime API to the child SCO. The parent SCO receives all of the SCORM data sent by the child SCO and makes sequencing decisions based on the data. The parent SCO passes the child's SCORM data onto the LMS for storage and reporting. All SCOs are separated into folders for ease of identification and reuse.

Interesting.  One of the problems we are dealing with is the inability of a SCO to access the data relating to other SCOs.  In your recommended system, would it be possible for one SCO to get/set data from another SCO without displaying that SCO?

Yes, a parent SCO could ask the LMS to get any SCORM data item stored for a child SCO. For example, a parent SCO could get the completion_status of a child SCO.

Is it limited to parents accessing their children?   Is this a product of the design or something more policy based?  

I can see use cases where siblings would benefit from accessing each others' data.  And I can see cases where at least read access from almost any SCO to any other SCO could be very useful.

This is huge problem.  I'm glad to see this coming up in various papers.  I think it's becoming very clear that more data availability is needed across the board. 

I completely agree that we need to do something about sequencing. For the sake of full disclosure, I wrote my own paper about a potential replacement for sequencing.

I also wrote another paper that questions the need for sequencing. In that paper, I propose that sequencing is only necessary if either:

• Sequencing can be simplified so that it is easier than creating your own alternative.

• Adaptive learning is a reality with an LMS taking inputs from external systems that content does not have knowledge of or access to. Only in the case where the LMS knows more than the content does it make sense for the LMS to
control sequencing and navigation. Or,

• Repositorites of reusable content are available and practical from both a technical and business perspective.

(before taking these for granted, please read and comment on that paper, it is definitely meant to be more of a discussion starter than something which draws definitive conclusions) 

If we consider those as the valid reasons for wanting sequencing, I don't know that this architecture best fulfills those needs.

-Is this easier than sequencing yourself? No, you are pretty much doing it yourself so it's the same.

-Does it facilitate adaptive learning initiated by the LMS? Not really, but nor does it prevent it either?

-Does it facilitate reuse? This certainly allows SCOs to be reused, but only if they don't have an inherent dependencies on other SCOs built in to their hard wired sequencing.

Another point would be to look at what Allyn Radford terms "True Interoperability"...

"In the case of 'true interoperability' it should be possible for content to be both interoperable at the level where courses are consumed 'as is' by LMS-type applications and yet are also adaptable by tools other than those used in the original creation."

The later part of "True interoperabilitiy" (the adaptability) would be hindered by this architecture since all of the navigation mechanisms would be proprietary.

At a recent ADL Technical Working Group meeting, I participated in a sidebar discussion with a few folks where we were all intrigued by allowing a content author to define sequencing in the manifest simply as a set of ECMAScript that could be executed between SCOs. That feels like a similar solution to what Leo proposes here but with the added benefit of separating the sequencing logic from the content.  (I head a rumor that somebody submitted a similar solution in a white paper, but I haven't made it down the list that far yet so my apologies for lack of attribution).

There is a common request that seems to be surfacing in this proposal, it's comments and in other place that SCOs be less isolated and more able to query each other's data. That seems nice on the surface, but in practice does it hinder reusability? How can we have our cake (give SCOs access to one another) and eat it to (still maintain reusability)?

Hi Mike,

Thanks for commenting on SCO-based seqencing and all of the other papers - I appreciate your hard work! You asked, "How can we have our cake (give SCOs access to one another) and eat it to (still maintain reusability)?". I'll answer this in two ways (the summary of my responses are in blue).

Software example: Consider the way dialog boxes work in Windows. Many dialog boxes have an "OK" button. The "OK" button provides a user interface (the image of a pushable button with the word "OK" shown in the center of the button) and the button tells the dialog box when the user clicks on the button. The "OK" button works like a child-SCO. The parent-SCO (the dialog box) uses the "OK" button to provide part of its interface and waits for the "OK" button to provide completion status. The button reports essential information to its parent and it is reusable.

Now, consider the standard file-open dialog box that appears in most Windows application. The standard file-open box works identically in Word, Excel, PowerPoint, etc. The standard file-open dialog box is like a child-SCO to the application (the parent-SCO). The file open dialog box tells the application when the user has selected a file name to open. The parent  (in this case the application) does not care or even know that its child (the file-open dialog box) uses its own child (the "OK" button) to provide part of the UI and function. The open file dislaog box reports essential information to its parent and it is reusable.

Course example: Lets say I want to build a course "engine". This "engine" will always create courses that have a tutorial, simulation exercise and a test. I have decided that the "engine" will make sure the learner completes the tutorial and the simulation before he/she can take the test. So, my "engine" needs the tutorial and the simulation exercise to tell the "engine" when the learner has completed those parts of the course. If the "engine" is inside a SCO, it will define a JavaScript function that the tutorial and simulation exercise will call to tell the "engine" that they are complete. I am proposing that the "engine" use the SCORM Runtime API to let the tutorial and the simulation exercise tell the "engine" that they are complete. Why invent a unique JavaScript function when the SCORM Runtime API already exist? The tutorial and simulation exercise report essential information to thier parent and they are reusable.

Lets say the test in my "engine" has two parts. The first part is a "knowledge check" with several true-false and multiple choice questions. The second part is a "performace test" that asks the learner to demonstrate performance (example, a road test for a new driver). The test requires the user to pass the "knowledge check" and pass the "performance test". I am proposing that the "test" use the SCORM API to let the "knowledge check" and the "performance test" report completion, success (pass/fail) and a score. The "knowledge check" and the "performance test" report essential information to its parent and they are reusable.

In summary, SCOs almost always include sequencing, navigation and roll-up rules for the part of the SCO. I am proposing that the SCOs use the SCORM Runtime API internally to manage those parts (in my example, the parts were the tutorial, simulation exercise, test which included the "knowledge check" and "performance test"). Using the SCORM Runtime API internally in a SCO allows the parts to be SCOs as well. And, we can eliminate the need for the LMS to play a role in sequencing, navigation and roll-up.

Leo--

I agree that one can accomplish quite a bit within current SCOs. The question about doing so should include: At what cost? Hand scripting takes resources. Typically one would not expect instructional designers or SMEs to know how to do this. Without proper tools these complex uses of SCOs may simply be to expensive or have too great an  effect on work flow.

Hi Tom,

I think SCO-based sequencing can be easily implemented in authoring tools. For example, several popular authoring tools read in PowerPoint presentations and then let authors add one or more quizzes to the presentation. Right now, these authoring tools use a proprietary method to manage the data returned by the quiz. With SCO-based sequencing, the authoring tools could make the quizes SCO and manage the data returned from the quizes with the SCORM runtime API.

Here is an equally interesting idea. Let's say you are using your favoriite authoring tool to create a course on sales training. Your authoring tool is great at creating 90% of the content and interactivity in your course. But, your authoring tool cannot help you create a sales simulation (that last 10% you need in your course). If your favorite authoring tool supported SCO-based sequencing you woudl be free to use another authoring tool to create the simulation or you coudl hire a programmer to create the simulation. With SCO-base sequencing, your favorite authoring tool has an abstracted view of what happens within a child SCO - your favorite authoring tool gets the result sfrom the child in the form of SCORM data (completion status, pass/fail, score, etc.).

I believe I am understanding your idea.  What currently is a cluster with children today could be a parent SCO with children and let that parent SCO handle most, if not all, of the S&N and rollup that the currently is defined in the manifest.  That has some merit for sure and should be looked at.  I'm afraid some of the comments (mine included) may have derailed it a little more in the direction of data access.

So, looking at this a little closer, it seems this is a way to map the monolithic SCO architecture that was common in 1.2 and still used quite a bit today, to a new model.  That monolithic SCO has quite a few advantages.  That's why people still do them.  Off the top of my head some of those advantages are:

  • More control -  It's all programmed, with very little reliance on LMS for sequencing, navigation, launching of children, communication between objects, scoring (rollups), etc.
  • Easier -  This is, of course, debatable.  But I think it's easier for a non-SCORM web developer to wrap a bunch of content in a single SCORM wrapper, than to build a fully chunked out 2004 course with multiple SCOs.
  • More maintainable - Found a bug?  Fix it in the code.  No undefined manifest re-import process.
  • More I'm sure

Ok, so this brings me back to a conversation I had early last week.  Do we even need sequencing at all?  What do we lose by doing the monolithic course?  We don't lose reusability really.  That can be done today with a clean use of resource elements and decent documentation. I think most people are and probably should use the folder structures similar to what you have anyway.  However, if poorly designed, or if not designed for reuse, the monolithic approach can be a total nightmare if you are on the receiving end of content with the desire to reuse parts of it.  If the course is at least broken up into SCOs, with well defined resources, it's somewhat more manageable.

On thing I think we really lose is tracking.  If you only have one SCO, it's harder to see the structure of the "course" and follow it's status, etc.  It was mentioned to me that we could use globals to track the status at whatever level we wanted in the big SCO.  True, but you lose some things like completion, structure, separate interactions, etc. 

We also lose some efficiency in testing with monolithic SCOs.  If broken up, it's easier to test them separately.  In a monolithic SCO, you'd have to test outside of the LMS, or do some creative skeleton structures to test chunks as they were completed.  I know how I would do it, but it's not obvious at first.

What I see in Leo's idea is the idea of trying to get all the benefits of the monolithic SCO and adding back what was missing.  Maybe I'm taking it too far or just trying to see how it would apply to problems I have experienced.  He may have had a different reason for it and hopefully will comment.  Adding the ability to have multiple defined SCOs within a SCO covers some of those issues. 

What I am still missing is structure, though.  It's not as easy as file folder structure as the course structure does not always map to something like that.  We may need a way to define this structure in a simple manifest type file that only was there to show the structure.  Is that what you are talking about under "Specification of the UUID"?  Maybe it's all in there, so there is no issue.  It just wasn't mentioned explicitely.

So, I like a lot of things about the idea.  But it may be because it seems to be geared to the developer. 

Here are a couple of my concerns. 

How well does this integrate with tools?  I hate tools, so I am just trying to think based on what others tell me, and not be selfish, so hang with me.  Does this method and architecture make it easier for a tool vendor to provide a way for an ISD with no programming resources to build a sequenced course?  Being that it's more open ended and programmed and less rule based, at first glance it would be harder.  This is probably my biggest concern.

Does it encourage designing for reuse?  Assuming reuse is important, I'm not sure it does.  I think people might be inclined to cheat the spirit of reuse and make very tightly coupled SCOs.  However, that's going to be a concern with almost any solution where more context is given to the SCO, so it may be something we live with.

In another comment, I asked about data access.  Would you restrict access to only allow for parents to access children?  This would be another concern of mine.  I think I need more access than that.  It may be solved with some of the other approaches to shared data, but I think parent->child may be a little to restrictive.

Thanks for submitting the paper.  It obviously shows your interest in making SCORM 2.0 a success.  I hope to see lots more discussion.  

Hi John,

John said, "What I see in Leo's idea is the idea of trying to get all the benefits of the monolithic SCO and adding back what was missing.  Maybe I'm taking it too far or just trying to see how it would apply to problems I have experienced.  He may have had a different reason for it and hopefully will comment.  Adding the ability to have multiple defined SCOs within a SCO covers some of those issues. ".

[Leo] I am trying to get all of the benefits from SCOs with my proposal. Here is a real life example. You create a course with 10 SCOs. All of those SCOs report databack to the LMS. In this particular course youjust want to know 2 things: 1) How many users have completed the course (the parent of the other 9 SCOs). 2) How did the learners perform on the test questions (interactions) in the SCO containing the final exam. SCO-based sequencing preserves the values of SCOs (in this case analysis of learner performance) without the downside of "simple sequencing" (hard to implement and LMS-provided UI).

 John asked, "How well does this integrate with tools?  I hate tools, so I am just trying to think based on what others tell me, and not be selfish, so hang with me.  Does this method and architecture make it easier for a tool vendor to provide a way for an ISD with no programming resources to build a sequenced course?  Being that it's more open ended and programmed and less rule based, at first glance it would be harder.  This is probably my biggest concern."

[Leo] Please see my response to Tom Wason above. I think the authoring tool vendors will quickly embrace SCO-based sequencing because SCO-based sequencing provides a standard way to link together the most valuable parts of their tools. And, it provides an incentive for the vendors to specialize in specific types of tools (right now, vendors have to create authoring tools that are good at creating every type of instructional interaction). I would expect these categories of tools:

  1. General purpose tools that let you create 80-90% of most courses - introductions, multimedia tutorials, knowledge checks, certificates, etc.
  2. Testing tools
  3. Simulation tools
  4. Content-specific tools, for example tools specifically designed for sales training interactions

John asked, "Does it encourage designing for reuse?  Assuming reuse is important, I'm not sure it does.  I think people might be inclined to cheat the spirit of reuse and make very tightly coupled SCOs.  However, that's going to be a concern with almost any solution where more context is given to the SCO, so it may be something we live with."

[Leo] I think the answer is yes based on my experince with SCORM 1.2. It was cheaper and easier to connect the LMS to a course with SCORM 1.2 than proprietary methods. The SCORM 1.2 specification was robust enough (it transfered the completion status, pass/fail. score, bookmark, etc.) and you could test for conformance. Within a few years, it because clear that there was no advantage to invent a proprietary method to connect LMSs and courses and support the proprietary method.

I think SCO-based sequencing provides the same reduction in time and cost. Why invent a proprietary method to connect major parts within a course when you can use SCO-based sequencing.

John asked, "In another comment, I asked about data access.  Would you restrict access to only allow for parents to access children?  This would be another concern of mine.  I think I need more access than that.  It may be solved with some of the other approaches to shared data, but I think parent->child may be a little to restrictive."

[Leo] No, I can't see any reason why data from one SCO cannot be accessed anywhere within a course. For example, one SCO delivers a pretest. a second SCO uses the results from the pretest to provide an adaptive tutorial. A third SCO uses the data from the first SCO to provide an adaptive simulation. A fourth SCO uses the data from the first SCO to provide an adaptive post test.

It's too early this morning to fully comment on everything, but here is my quick take on this phrase:

"How can we have our cake (give SCOs access to one another) and eat it to (still maintain reusability)?"

I guess I have to ask, "What makes a SCO reusable today?".   Off the top of my head, it has to be worth reusing (good design, good presentation, etc).  It also has to function properly when reused outside the scope of the current context. Ok, so if it's nice and works, it's reusable, assuming someone wants it and finds it. 

Does it have to be easy "drag & drop" reuse, so that not one thing has to be altered to reuse?   Not sure about that one.  Let's assume, yes.  If a SCO is dependent on the context, that makes it very hard, if not impossible to reuse outside of that context.  However, I think that may just be a design issue in the SCO.  They type of data access I would like to have would be to enhance the SCO's impact at runtime.  It would give the SCO some history on the learner, provide some customizations/localizations, provide for better remediation/scaffolding inside the SCO itself, and other things.  But, if designed well, the SCO's content could and should function if none of that data was available. 

I'm always pushing for more and more access to data, because it's less limiting.  I hate when we put rules or obstacles in place to "maintain" things like reusability.  I'm pretty sure that no matter how many rules are put in place, you can't stop non-reusable content.  It may be content whose text/graphics/media refers to other SCOs in the context.  It may be really ugly content.  Or it just may be horrible design that no one would want.  Or it may be, as the question has been posed, that reuse is overrated anyway.  But if those rules are put in place, we are absolutely blocking anyone who might have creative ideas for using that data in a very positive way.  That's where we are today for sure. 

Ok, I hope I didn't go off on too much a tangent.

I frequently work with global companies that have a 100,000+ employees operating in many different parts of the world. It is not surprixing that these huge companies have many different training organizations serving audiences that are internal and external to the organization. Each training group will typically use different methods to create courses so they have problems sharing reusable parts of courses. SCO-based sequencing would make it much easier for this type of company to reuse a SCO that provides a introductory overview to a new product. This SCO could be used for a course serving these audiences: all emplyees, sales, marketing, channel sales, R&D, resellers, customers, etc.

Now, someone within the company may be very impressed with the technical or instructional method used to create the product demonstration SCO. This person may be interested in reusing not just the specific SCO in a single course but method used in the SCO in many different courses.

I like the idea of sco-based sequencing AND the option of using monolithic scos which "do it all", which essentially what we do now.

In our corporate environment, it's rare that we can reuse the entire sco without some kind of customization. We tend to build scos that do their own internal branching and rule-based presentation of content, but that does require some knowledge to use.

The ability to combine SCO's that were created with different tools, track them, let them share data, and control rollup rules and branching between them without involving the LMS is an interesting one.

 In our system, reusability is almost never drag and drop, and I doubt anyone would miss it if it were gone. The structure is usually the thing we want to re-use.


Posted by Ellen Meiselman at Aug 23, 2008 20:14Updated by Ellen Meiselman

I like the idea of SCO-based sequencing. It is entirely compatible with my Content Aggregation Model with Recursive Manifest. As you can see in my paper, the Recursive Manifest requires each SCO to be referenced to its direct parent SCO(s) as well as to define specific contribution of this SCO completion in achieving its parent SCO's objective(s).

Because the Recursive Manifest allows also establishing enabling relations among Objectives of parent SCO, RTI can use these relations to generate Intelligent Sequencing of SCOs and its siblings of the same parent SCO.

 

The Recursive Manifest allows also mapping all pre-requisite sibling SCO(s) into the SCO under the same parent. By this way it supports traditional branching and simple sequencing of all SCOs of the same parent.

 

Both are examples of SCO-based sequencing.

 

In my paper you can find some graphical illustrations of such SCO as well as interface of the authoring tool for designing such nesting SCOs.

I think this is an interesting idea that underscores the need for a better data model that is more accessible, as pointed out by John above.  I think that there should be more allowance for SCO's to preform their own Sequencing/ navigation as you pointed out in the discussion about "engines."

 I think that there are definately points when what you want to display is simple and straight forward, at these times I would think that allowing the LMS to provide the navigation is much simpler, than having to create your own.  An example would be just a simple set of documents on policy changes that you just need to provide evidence that they have been read by users.  A simple SCO of multiple documents could just be presented, and allow the standard reporting just report if each page as been viewed or not.

I would be concerned about content organization as well, if you put all of your SCOs in separate folders, wouldn't you then have to duplicate css/ images/ logos... for each sco.  I realize that this isn't necessarily a big deal for space, but it becomes a bigger problem in keeping them all in sync.

I would also be concerned about SCOs awareness about other SCOs.  You need to either go into each SCO and create an "index" of the other scos, as well as where they are in the heirarchy, or you need something else to define it (parent SCO?)  This would effect both data sharing between SCOs and navigation interfaces.

 I think that SCORM 2 should allow for both an LMS based sequencing and display control, but also allow for SCOS to control navigation display and self sequence as well, which would require an update to the data model, which may not be too significant of an update.

Thanks

Chris

Hi Chris,

You said, "I think that there are definately points when what you want to display is simple and straight forward, at these times I would think that allowing the LMS to provide the navigation is much simpler, than having to create your own.  An example would be just a simple set of documents on policy changes that you just need to provide evidence that they have been read by users.  A simple SCO of multiple documents could just be presented, and allow the standard reporting just report if each page as been viewed or not."

[Leo] I agree, this is a simple and common course requirement. I would like to see authoring tool vendors implement this requirement. I would like to keep this functionality out of the LMS. Here is my reasoning. Let's say that you need to create a course that lets the user launch and read 10 documents. The course needs to automatically know when the user has "read" each document. The course could use several different methods:

  1. The document is "read" as soon as it is launched by the user
  2. The document is "read" when the user clicks on the "I have read the document" button
  3. The document is "read" when the user correctly answers a knowledge-check question about the document

A typical authoring is very good at providing these types of choices to consider a document as "read". The typical authoring tool is also good at creating the visual wrapper around these documents. For example, the authoring tool could be used to add the title of the course, a common logo/design used in all courses, and a common navigation style used in other courses. Obviously the LMS vendor could provide these features too but I think we are better off if this functionality is provided by the authoring tools. Getting the functionality in the authoring tools lets us pick the best LMS and best tools for the job.

You said, "I would be concerned about content organization as well, if you put all of your SCOs in separate folders, wouldn't you then have to duplicate css/ images/ logos... for each sco.  I realize that this isn't necessarily a big deal for space, but it becomes a bigger problem in keeping them all in sync."

[Leo] I agree. There needs to be a way for SCOs to access media, styles and code from a common folder.

You said, "I would also be concerned about SCOs awareness about other SCOs.  You need to either go into each SCO and create an "index" of the other scos, as well as where they are in the heirarchy, or you need something else to define it (parent SCO?)  This would effect both data sharing between SCOs and navigation interfaces."

[Leo] The parent SCO always has awareness of its children since it has direct access to all SCORM data being set and read by the child SCOs. We could say that each SCO needs a manfest that lists the unique ID of each child. The parent's manifest could be read by the children to learn about their sibling SCOs.

This propsoal is very similar to Mark Ewer's "How to make SCORM Simple Sequencing Model Simple Again".

REPEATED FROM A COMMENT ON ONE OF MIKE RUSTICI'S PAPER:

To me sequencing is portable instructional strategy (thanks Avron!) and the purpose of a "sequencing" specification or standard is to separate content from instructional strategy in the same way that other standards separate content from presentation. By specifying instructional strategy separately and independently of the underlying content, each can be changed independently and each can be successfully interpreted and delivered in multiple contexts.

I don't believe this is accomplished by "SCO-based sequencing." In fact, it appears to embed sequencing even further into the content.

The problem may not so much with a SCO launching another SCO but with the fact that the proposed change is to allow a SCO to launch aspecificSCO rather than make request for content that is potentially dependendent on the status of learning objectives and the context of the learner (e.g. where and with what device the learner is interacting). 

If I understood the Lucas (and some other) proposals correctly, there is the fundamental dichotomy in approaches.Either you hardwire sequencing into the content or you divorce it from content.Of course, once you divorce sequencing from content, the question becomes "who computes the value of the target SCO (or content object, even if it is not a "SCO")?" The current answer is that the RTE does that computation based on a set of rules prescribed by the content designer. It the future, sequencing might be considered as an isolatable service that is currently part of an RTE. Regardless, the fundamental approach of having an external rule- and context-based sequencing service makes sense to me, and hard wiring sequencing into content does not. That's my two cents. 

Hi Robby,

 Thanks for commenting. I think SCO-based sequencing can allow an authoring tool or a JavaScript programmer to separate the sequencing rules from the content. I have implemented this separation for years when creating single-SCO courses. There is a specific set of code used by the SCO to implement the sequencing, roll-up and navigation.

The SCORM 2004 RTE is just a piece of software that implements sequencing, roll-up and navigation. I am proposing that we detach the sequencing function of the RTE from the LMS and return it to the course where it belongs. Here is how I see the parts of a interoperable learning system:

  • The LMS provides the administrative control. It manages users and the user's access to courses. The LMS stores the data received from SCOs in a database and provides reports.
  • The course (as one SCO or many SCOs) is 100 percent responsible for delivering the learning experience to the user.

The SCORM 2004 "simple sequencing" method does not allow a course developer to control the specific details over the sequencing, roll-up and navigation in his/her course across all LMSs. I think that is a significant mistake that we need to correct with SCORM 2004. I think my SCO-based sequencing returns the control over the function and visual design of a course to the course developer while maintaining interoperability and reusability.

We have tackled the problem of SCO driven navigation by doing two level of navigation.  At the SCO level we define a lesson resource (a Flash SWF).  This lesson entry point acts as a controller for the different sections within the lesson.  The different sections of the lesson (different SWFs) communicate with entry/controller SWF that launched them.  The controller SWF saves state back to the LMS via normal cmi data variables.  The LMS launches the lesson and the lesson reports back to the LMS.  What else happens withn the lesson is known only to the lesson.   The SCO has full control over the UI and navigation within the lesson. All well and good.

We tried to go to the next step and add a custom table on contents to the course so that we could give the user a consistent UI that was LMS independent.  We built a simple SCO that parses a copy of the manifest to display the table of contents for the course.  When the student makes a selection, the SCO does a "adl.nav.request" to have the selected lesson launched.  This works well on most LMS platforms.  Again, the LMS is launching all SCOs.  The SCOs all communicate back to the LMS only.

The problem we ran into was having our custom table of contents SCO reflect the status of a lesson.  Did the student start a particular lesson?  Did the student pass a lesson? Etc.  The only way we thought that we could accomplish what we needed was to add a lot of global objectives to the course.  Messy, messy.  It would be simpler if one SCO could access (read only) the cmi data vales set by another SCO in the same course.  If that simple change were made to the standard, then implementing SCO based navigation would be very easyt.

I actually experimented with something very similar to this a few years ago.  One of the early releases of the SCORM 2004 documentation had a diagram in it that shows one SCO launching another.  I attempted to build a "parent sco" that would implement my own sequencing and launch the "child scos" in the order I wanted.  I ran into two problems:

1.  I ran out of data storage space.  SCORM limits you to 250 interactions and 1000 characters of suspend data. I hit that limit pretty quick when I made all the content into "child scos".

2.  The LMS didn't understand my content structure and could not display any kind of completion menu to the learner.  The LMS was essentially not able to produce adequate learner progress reports because I had hidden all the "child scos" from the system.

Richard suggested that we let one SCO see the runtime data of another.  This will get really messy because we break the encapsualtion of each SCO and make them less portable.  The paper I submitted and this one are both trying to solve the same problem.  Perhaps we should get together in Pensacola and try to marry up our ideas into a single solution?

Site running on a free Atlassian Confluence Community License granted to MedBiquitous Consortium. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.6.0 Build:#913 Sep 27, 2007) - Bug/feature request - Contact Administrators
Atlassian Confluence