Beyond the check box, a new e-book.
Categories: Ideas and Thoughts, SCORM, Standards Evolution
14 Oct 2009
SCORM used to be binary, either you had it or you didn’t. But that’s not right. Let’s face it, in reality there are some good SCORM implementations and some, well, really bad SCORM implementations. Our new e-book will help you decide which is which.
No Comments | Post a comment »
The Top 5 Things Every Piece of SCORM Content Should Do At Runtime
Categories: SCORM, Using the Standards
7 Oct 2009
SCORM is a difficult problem, no doubt. As a content creator, there are countless things that you should do well in every piece of content if you want it to work in as many LMSs as possible.
Today, I’m focusing on particular technical choices at runtime, rather than packaging or “process”. (If process were part of this, I think all five things would be “test your content”.) Without further ado:
1. Find the SCORM API well
Once a piece of SCORM content is launched, its first task should be finding the SCORM API. Without this API, it can’t communicate with the LMS at all. (And a piece of SCORM content that can’t communicate with an LMS is just a webpage with annoying popup error messages…)
Finding the API isn’t a trivial task. It can be located in a parent frame or a parent window. This distinction is a crucial one, and isn’t tested well by the SCORM test suite. If your content adheres to the standard, it will perform well either in a frameset or in its own window. Take the time to get this right, or you’ll suffer the pain of fixing it when you send your content to the second LMS you want it to work in. (And for goodness sake, we’ve provided you with the code for an improved API discovery algorithm. Go ahead and use it. All of you.)
Lastly, if you can’t find the API, be sure to tell the user. The user needs to know right away that they won’t be getting credit for any of the work they’re doing.
2. Set your status right away
The first thing a piece of content should do with the API after it finds it is call GetValue(cmi.completion_status). [Note: This article is not about syntax. I'm intentionally avoiding committing to a version of SCORM.] If the current status is “not attempted”, it’s crucial that the content change it to “incomplete” right away. If the content fails to make this change, the LMS is obligated to consider the content complete on exit, even if it isn’t!
3. For the love of your users, use bookmarks
I suppose this is the least crucial of the elements in this missive, but please take care of your users! SCORM offers a simple concept of bookmarking (cmi.location). As your learner progresses through your content, set a bookmark periodically. Then, when the learner returns, be sure to give them the opportunity to return to where they left off. You would expect that level of courtesy in any piece of content you take, so provide it to your learners.
4. Record completion
The vast majority of SCORM content is taken at the encouragement of another. In a corporate environment, training is pushed on learners for compliance reasons. In the education world, professors often want to know that the learning material has been reviewed. In many ways, SCORM is largely about tracking the completion of training.
The only way the LMS knows that the learner has completed the training is if the content tells the LMS that the learner completed the training. Please tell the LMS.
5. Exit gracefully
top.window.close() is not the right way to exit from a piece of SCORM content. Is that clear? Sometimes, content is opened in its own window. If this is the case, then top.window.close() will probably be just fine. Sometimes, content is opened in a frameset. If this is the case, the world will come to an end.
Section 2.1.3 of the SCORM 2004 3rd & 4th Edition Specs puts it like this:
If the window in which the SCO was launched is a top-level window (i.e., the
window has no parent window, but it has an opener) then the SCO may attempt to
close the window after calling Terminate(“”).[...]
If the window is not a top-level window (i.e., the window has a parent window),
the SCO may not act on the parent window or any window in the chain of parents.
For example, a SCO is not allowed to attempt to close the top window, unless it is
its own window.
This is one to get right. As an LMS vendor, content that obliterates the entire LMS (by closing its window) is annoying both from a user experience perspective and from a data perspective (in poorly implemented LMSs). Put simply, don’t trash the room on your way out the door.
________
These five things alone won’t make your content conformant, but they will move you a long way down the path to creating interoperable, well liked content. So, what did I miss? Are these things the top 5?
3 Comments | Post a comment »
Score Rollup in SCORM 1.2: There’s no silver bullet
Categories: SCORM 2004, SCORM Cloud, SCORM Engine, Using the Standards
7 Oct 2009
I got this question today (and yes, we really do mean you can ask us anything…):
We are making configuration settings for our new LMS ([redacted]) and one of the questions is:
1.3.5. How is the overall score for a SCORM course with more than one SCO computed? With the following choices:
- MaximumScore. Highest score of all items (SCOs) in the course.
- AverageScore. Average score of all items (SCOs) in the course.
- FirstScore. The first score achieved by the user across all items (SCOs) in the course. Note: If this option is selected, ScormScoreUpdateOption should be set to “Never” and the user’s score will always remain the first score they achieved.
- MostRecentScore. The most recent score achieved by the user across all items (SCOs) in the course.
What do you recommend?
My first reaction
Well, clearly we’re talking about an LMS that is really SCORM 1.2 centric. This ability to manage scores across attempts and SCOs is one of the things that SCORM 2004 actually does very well. Rollup rules allow the content author to specify these behaviors in great detail, including weighting the various elements and even excluding some. This provides the author with useful tools such as pre-assessment that doesn’t impact overall satisfaction.
My second reaction
There simply is not a good answer to this question. If these settings are global, as they appear to be, I can’t be forced to pick one in particular as it wouldn’t serve other situations adequately. The most common multi-SCO package structure, to my mind, is a course with several SCOs and a single post test (assuming we’re dealing with more than one score). I’m not sure that any of these options serve that package structure well at all.
My ultimate conclusion
An LMS simply can’t afford to make singular decisions about how to deal with content. It absolutely has to provide configurability on a package by package basis. Failing to acknowledge that the world of content is widely varied will lead to content that doesn’t work as desired. This, frankly, is why building an LMS with SCORM conformance is so difficult to get right.
How we handle it in SCORM Engine and SCORM Cloud implementations
Package properties provide our ability to address different pieces of content differently. (Take a look at the possibilities. There are more than 50 options for configuring a course. All are defaulted intelligently, but all are also the answer to a question that has to be answered for certain courses.)
Take a look at how we’ve approached the particular problem of rolling up scores in SCORM 1.2. We have options that aren’t unlike those offered in the question above. The differences are relevant, but only to a degree. Fundamentally important, though, is that you can set these properties for each package.
I hope this provides a bit of illustration as the level of detail required to really nail the SCORM problem. We suffer this minutiae so our customers don’t have to.
Note: Don’t worry, my recommendation for the person who sent the question isn’t as obtuse as, “Use the SCORM Engine”… We’re still chatting via email…
3 Comments | Post a comment »
Here I go, here I go, here I go… again. I’ve been called to defend SCORM’s honor again.
I caught this tweet yesterday.
E-Learning in Drupal – SCORM RTE for Drupal now released! Watch the demo: http://tinyurl.com/l9des6
-@BusinessCarrots
We are big believers in SCORM being implemented everywhere. Obviously, we like the idea of any system in the world being able to deliver SCORM training. (We like it more if we’re the ones doing it, but really, if SCORM becomes progressively more important, I’m pretty sure we’ll benefit from that.)
So, as you would expect, I went to check out the screencast of the Drupal/SCORM integration. I’d be more than happy for you to do the same. (You can see it here.)
<rant>
DO NOT DO SCORM PART WAY. EVER.
When The Partridge Family famously said, “I’ll meet you halfway, that’s better than no way,” they weren’t talking about SCORM. Half of a SCORM implementation is a bizarre form of torture.
</rant>
So what brings me to the point of quoting The Partridge Family today? As you might imagine, the Drupal SCORM implementation mentioned above falls well short of SCORM conformance. How do I know? The screencast indicates that the implementation supports neither completion_status nor location. The first two things I would tell any content vendor to implement in their content would be completion and bookmarking, neither of which will work in this implementation!
Truth be told, I’m not really this angry about it. I appreciate the efforts to include SCORM in more systems, but SCORM really suffers from inconsistent implementations. If you’re going to implement part of SCORM, please do the industry as a whole a favor… finish it.
3 Comments | Post a comment »
It’s time for me to say it, “SCORM doesn’t suck…”
Categories: Ideas and Thoughts, SCORM, SCORM 2004, Using the Standards
22 Jun 2009
I am a patient man. Slow to anger, slow to annoy. Frankly, some mistake my calm demeanor for apathy. But now they’ve done it. The folks on Twitter (and elsewhere in the community) have made enough comments about SCORM that I’m annoyed. That’s right, I’m actually a little irritated.
I’ve been feeling, lately, like SCORM is my little brother. It’s OK if folks choose to pick on my bro, so long as they are constructive, or at least right. The comments I’ve been seeing lately range from misdirected to out and out wrong.
Feel the angst, read on
15 Comments | Post a comment »
Older Posts »
