Redefining Reusability…

I received a Google Alert this morning from Al Moser’s blog where he basically states it’s time to blast our thoughts of reusability, in terms of reusing content objects into other contexts, and instead focus on reuse of content across learning environments. I urge you to read the original post, but let me riff on Mr. Moser’s thought:

The SCORM philosophy will work best if we go back to its original purpose which was to ensure that you could re-use existing (compiled) content from one LMS to another; not from one COURSE to another, or from one authoring tool to another. Right now they are caught between trying to ensure that a course will work well on any LMS (therefore, it pretty much has to be static) and the Web 2.0 concepts of content aggregation in real time from multiple sources (thereby breaking LMS-independence)

I must admit I’m a little torn on the subject, because I don’t think that reusability of content into different contexts is impossible. I think it’s very difficult to pull off without the use of some aids in the form of applications, tools, search technologies and rigid presentation standards, admittedly none of which are used together today. But I can picture it. Others pictured it. Claude Ostyn and Phillip Dodds even pictured it. If you can see it, I’m tempted to believe you can build it when it comes to digital technology.

However, in stating this which I think is in direct opposition to Mr. Moser’s thought, I definitely agree that getting the E-Learning community over the hump of reusability is important, and this notion of redefining reusability by coupling it with “interoperability” isn’t a fragmentary notion. At the big SCORM Technical Working Group meeting, one of the ideas batted around for what to do next was to consider which “ilities” were really relevant.

I agree that it’s near impossible to reuse content in different contexts where we’re at now. We still can barely get tools we use all the time to work all the time. I mean, jeez… I defined Articulate and Quizmaker as a standard for my organization. And guess what? If you have special characters in your Quizmaker assessment, it can break your suspend data on closing the content, and thus it makes it look to the LMS like you didn’t complete content, even though you might have. So you work though that one issue and maybe you inserted a special character into the title of your content — which ends up as an attribute in your Metadata and in your Manifest — and that breaks your content. You fix that, but decide to put in multiple Quizmaker assessments into an Articulate Presentation, but you don’t want to use any of the assessments as a determining factor towards completion — which after much testing you find out will never leave a student’s enrollments because of some weird issue with how Quizmaker assessments are leveraged in Articulate Presenter.

I don’t mean to go off on a rant on issues Articulate has in Vendor X’s LMS. But I want to highlight the issues I see in just getting content from the same authoring tool, with the same code base, working in one LMS in a consistent manner with other pieces of content authored in the same tools and deployed to the same environment with the exact same code base.

See, my point is that as difficult as my scenario above is — I’m not trying to mix my content in with content possibly produced by somebody else — possibly not even built with Articulate. Even using certified SCORM products isn’t good enough. Articulate IS certified. Vendor X IS certified. But that doesn’t mean they work together out of the box.

So maybe for slightly different reasons, I agree with Al Moser about reusability. Because, from my vantage point, we can’t even talk about reusability — even at a technical level, until we can address interoperability. And frankly, we can’t talk about interoperability until we finally settle on compatibility.

Because at the end of the day, you just want the content you buy or build to work in the system you support. And if you’re building the content, this should be a science, not an art.

Articulate
Interoperability
SCORM
Strategy

Comments (3)

Permalink

Virtual Patients

I’m at the SCORM Technical Working Group meeting and the first exciting thing I’ve heard so far has come from Valerie Smothers with MedBiquitous, talking about Virtual Patients — a model for reusable case studies to be exchanged for medical simulations around the world. Each Virtual Patient has metadata describing their patient data, media resoures, model for data availability, activities and the player that’s needed to play the simulation — that connects to the user interface, the learner profile and tracking.

And they are working with universities in Sweden (I think — maybe Finland) and the US on having working prototypes — and they work in SCORM-based Learning Management Systems.

After about a full day’s worth of talking about cleaning SCORM’s past, we finally get a taste for the future.

Instructional Design
Interoperability
Metadata
SCORM
Standards

Comments (0)

Permalink

LomPad = MetaData Generator

LomPad is a Metadata generator for Windows, Mac and Linux that will simply generate all the metadata you need, either to the IEEE standard LOM (Learning Object Model) profile or, specifically for many of us, the SCORM 2004 profile.

It’s pretty straight up and easy to use so far. I’m looking forward to putting it through its paces. It’s default language is French, but there is support for English that you can turn on pretty easily from its menu options.

Development
E-Learning
Metadata
SCORM
Tools

Comments (0)

Permalink

FFL Podcast Production ramping up!

Sorry for being silent for so long (again… again). There’s a lot going on with work that’s been keeping me busy enough to ignore blogging on all my sites.

I wanted to propose a podcast curriculum where I’ll talk to something having to do with SCORM and Flash in small chunks, and hopefully keep it light, somewhat entertaining but valuable and focused.

So from the feedback I’m gathering in comments on the SCORM 1.2 ExternalInterface demo, here’s what I think you need to start with:

  • Content Package and the Manifest in SCORM 1.2
    1. Get to know the tools we’ll use.
    2. The Parts of the Manifest
    3. Organizing your Manifest in SCORM 1.2
    4. The Manifest and Metadata in SCORM 1.2
    5. How Aaron Rolls (practices and conventions)
  • Communicating with the SCORM API
    1. The Parts of your SCO
    2. Using the APIWrapper.js
    3. Accessing the Run-Time Data Model
    4. The Top 10 Data Model Elements in SCORM 1.2
    5. How Aaron Rolls (practices and conventions)

Now… what else am I missing? And are you willing to help, either in the production of the content, QA and testing or simply in supporting the effort with a couple of bucks for some caffeine goodness?

Flash
Podcasts
SCORM
Tools
Training

Comments (1)

Permalink

SCORM 2004 Best Practices

I was doing some housecleaning on my computer this morning and ran across something I wrote up a long while back and never put out. I wonder what other gems I might have lying around.

Hope this helps.

Interactions

Interaction Identifiers
Organizations should define naming conventions for cmi.interactions.n.id so that each interaction has a unique identifier, at least within the scope of the Sharable Content Object (SCO).

Score

Development of Algorithms Instructional designers and developers should collaborate in the development of the algorithms used to calculate scaled scores. 

Methods for calculating score

  1. Keep a running tally after each questions is answered.
  2. Use the interactions data model element to record the learner’s score and loop through all questions tallying up how many results were correct and incorrect.
  3. Other - there are many individual methods for how and when to calculate the score.

Calculating Scaled Score
There are many ways to calculate scaled score, one of the more common ones is:
(Sum of each question's Value * Weight ) / Total weight possible.

Completion Status Setting Completion Status 
To make the course, or package, “completed,” use a combination of completion status on the SCO(s) and sequencing rules (as mentioned in the SCORM Content Aggregation Model (CAM) Version 1.3). This may involve a series of sequencing rules that appear as the following: This indicates that the item associated with this sequencing rule doesn’t count towards your course completion.

When this sequencing rule is on a parent in the manifest: 
An LMS will ignore any children of a parent in the manifest with regards to any requirements for course completion — whether you use “completion_status” on any of those SCOs or not. You can still designate these SCOs as completed. Assuming you’re developing with “completion status” to achieve some result, more work either with your code or with sequencing in the manifest will be required to take advantage of “completion status”

In any other instance, however, the LMS will pay attention, going all the way down into the children to look for what to ignore.

Launch Data

Availability of data

Launch Data is dependent on the existence of information provided by the manifest. For example, the next application scenario will use Launch Data to display text in Spanish, instead of English. The information in the manifest that pertains to Launch Data is detailed in the highlighted text below: 
� � � 
� � � � � � 
� � � � � � SPANISH
� � � 
 The element provides initialization data expected by the resource (i.e., SCO) referred to by the after launch. To send data to the SCO for use after the SCO is launched, the combination of including and using Launch Data in the SCO is a good solution.

The availability of Launch Data, however, occurs after the SCO has initialized. Depending on your implementation, your content may load before the SCO initializes. If your content is dependent on information supplied by the manifest, and you can’t control the timing of the SCO initializing communication with the LMS, you may wish to use a Query Object and pass information to the SCO (or asset) using parameters.

Using the parameters attribute enables the developer and ID to specify the best graphic for each community without the development of multiple sets of content.

Such an in your manifest may look like the following:

This name/value pair is sent as a parameter to the SCO. It can be accessed the same way that any GET data would be accessed, appended to the URL. Continuing this example, it is possible to include JavaScript on the SCO to parse this name/value parameter, sent to the SCO from the manifest.

/********************** * Function: get_params() * Description: This function is used to get the parameters from the * query string ***********************/ function getparams() { var strSearch = window.location.search; var idx = strSearch.indexOf( ‘?’ ); if ( idx != -1 ) { var pairs = strSearch.substring( idx + 1, strSearch.length ).split( ‘&’ ); for ( var i=0; I < pairs.length; i++ ) { nameVal = pairs[i].split( ‘=’ ); gparams[ nameVal[ 0 ] ] = nameVal[ 1 ]; } } } Once get_params() is called in the SCO, it is possible to make use of the data sent via the query object.

Please note: there exist limitations of the query object, such as string length, that should be considered before depending on the query object as a viable development solution.

Comments From Learner

All SCORM-conformant LMSs are required to support character maximums of 4000 characters per comment. Likewise, LMSs are required to support comment maximums of 250 comments.

Each LMS vendor is free to support more than the respective required maximums.

If no value is specified for the location of a comment, then the comment is assumed to be applicable to the entire SCO. It is up to the SCO to define the location of any given comment from the learner.

The timestamp for a comment from learner is in the format of (second, 10, 0). Per the RTE:

The time (second,10,0) data type represents a point in time. This data type shall have a required precision of 1 second and an optional precision of 0.01 seconds [1]. Implementations should be aware of this required precision versus the optional precision for it may impact implementation decisions. For example if an application is expecting the optional precision, it may not be supported. The SCORM dot-notation binding defines a particular format for a characterstring to represent a point in time. The format of the characterstring shall be as follows: YYYY[-MM[-DD[Thh[:mm[:ss[.s[TZD]]]]]]] where

  • YYYY: A four-digit year (1970 >= YYYY >=2038)
  • MM: A two-digit month (01 through 12 where 01=January)
  • DD: A two-digit day of month (01 through 31, depending on the value of month and year)
  • hh: Two-digits of hour (00 through 23)
  • mm: Two-digits of minute (00 through 59)
  • ss: Two-digits of second (00 through 59)
  • s: One or more digits representing a decimal fraction of a second). If fractions of a second are used, SCORM further restricts the string to a maximum of 2 digits (e.g., 34.45 – valid, 34.45454545 – not valid).
  • TZD: Time zone designator (“Z” for UTC or +hh:mm or –hh:mm). The hh and mm shall adhere to the requirements defined above for hh and mm. The time zone designator uses the extended format as defined by ISO 8601-2000. The extended format requires the use of the colon “:” as a separator between the hours and minutes. If the difference between local time and UTC is required then the time can be expressed in hours and minutes (i.e., 03:10) or if the time difference is exactly an integral number of hours, then hours only (03). The leading zero is required for hours less than 10. At least the four-digit year must be present. If additional parts of the time are included, the character literals “-“,”T”,”:” and “.” are part of the character lexical representation [1].

    
Example:
  • “2003”
  • ”2003-07-25T03:00:00”

Credit

A SCO should not base reporting decisions based on whether it is being experienced for credit or not. Much of the implied meaning of this data model element is handled on back end systems (LMS).

If a course is being taken for no-credit and the SCO still sets status and scores, then let the LMS will determine what to do with these scores and status as SCORM does not state whether or not a Run-Time Environment (such as an LMS) must support a mechanism for initializing this value.

From a SCO’s standpoint, the cmi.credit element is read-only. Because of this, the value has to be initialized some where outside of the SCO (since the SCO cannot set the value). Many implementations demonstrate that there is a way to signal that a learner is taking a course for credit or no credit. If an LMS supports this mechanism then the cmi.credit is initialized to whatever value the learner (or an administrator/instructor requires) chooses.

If an LMS does not support a mechanism then the default value (“credit”) must be returned by the LMS when the SCO makes a get request.

However, this assumes that when content is experienced for “credit” that the SCO will report a score, success status etc. This is not necessarily true. What it means to give credit for performance is not defined.

This could have many meaning depending on many different implementations, organizations, communities of practice, etc. For example, in an organization taking a course for credit might signal the LMS (or some piece of the LMS) to record information into a Training Record, which is outside the scope of SCORM.

Objectives

Objectives, like Interactions, require a unique identifier. Organizations should define naming conventions for cmi.objectives.n.id so that each objective has a unique identifier.

The Objectives Data Model Element is considered a “Local Objective” in terms of Sequencing & Navigation. Objectives, in this sense, have their own set of progress information within the SCO they reference and are considered separate from other learner activities. This means that Objective information referenced in one SCO by the Objectives Data Model Element cannot be directly referenced by another SCO.

Multiple SCOs may, however, reference a shared “Global” Objective. Global objectives can be used to make sequencing decisions. More information on how global objectives may be implemented can be found in the SCORM 2004 Sequencing & Navigation Version 1.3.1 document. (Section 3.10.1).

Overall Development

Pop-Up Windows
 In order to track the learner’s activity, it is best to avoid using any additional pop-up windows, especially if you are unsure what LMS will be displaying your content. SCOs and Assets
 Do not arbitrarily decide what content will be a Sharable Content Object (SCO), collaborate with the project team and decide before you begin any development.

508 & Assessment Feedback
 A screen reader only sees content that is available on the initial page load. If any text is dynamically generated with JavaScript, or a dynamic text field in flash, the screen reader will not recognize it. In order to make feedback accessible, it is best to display it on a new page.

Meta-data
 Keep a running record of key information about text and file attributes. Update your meta-data on a regular basis. Bookmarking
 If you have a multipage SCO, it is best to set a bookmark when each page unloads. This will account for any unexpected exits, and upon returning, the learner will be brought to the last page they were at before leaving. We recommend creating a function that uses cmi.location and cmi.exit. This function should be called when the page unloads.

Manifest

Group all dependent resources together and then reference them with a common name.

Make sure all ids within the scope of the same manifest are unique. They may be developed to be globally unique.

Open the manifest in Internet Explorer since it is an xml file. This is one quick and easy way to test to see if the xml file is well formed. Once you have ensured that it is well formed, then test your manifest with an XML validating parser (this can be done by testing the manifest in the SCORM Conformance Test Suite).

Development
SCORM
Strategy

Comments (1)

Permalink