Director and SCORM

I don’t know how I missed this, but back in May my ol’ pal and programming buddy back in PA — Kraig Mentor published this article on Director And SCORM.

If you’ve downloaded the Plug-in Technology Example, which demonstrates the code and the activity you can employ to create both Flash and Director-based content objects — that’s the handiwork that Kraig and I worked on in our first months of working together. Kraig, who worked on the Director team for Macromedia, is a pretty nifty dude and he took his experience working with SCORM to a whole other level by creating a full-fledged library for use with Lingo (or any other language) to easily access whatever he wanted through SCORM.

Then… Kraig got really crafty and started on a path of hardcore Sequencing and Navigation strategies back when it was even more obtuse than it is now (before 2nd Edition of SCORM 2004). He also built this content engine in Director that uses XML to populate it… much like a lot of Flash developers do to create E-Learning. Except Kraig’s doing with with Director.

So for those of you still down with Director (which Adobe is still developing), check this article out. It’s also a good read for those of you looking to construct your own template engine with Flash, at least from an architectural perspective.

Development
E-Learning

Comments (2)

Permalink

Sequencing giving you the blues? Me, too!

I recognize for many of you, SCORM 2004 Sequencing and Navigation is impossible. My guess is that for most of you, it’s a jumbled problem that combines the complexities in understanding how to create a manifest that correctly interprets the intent of your instructional flow — and the problem of how an LMS actually interprets your sequencing instructions.

I’m pretty lucky to be able to narrow down the problem, because I spent many long days and nights side-by-side with Angelo at ADL, who’s the Godfather of Sequencing and Navigation (though I’m sure he’s loathe to go down in Wikipedia history for that effort in lieu of his Level 70 Shaman in WoW). In other words, my problem isn’t generally writing an effective manifest with Sequencing in it. All I want to do for my company right now is create a three-item tree for Pretest, Content and Posttest.

My problem is our LMS. I won’t name it, but it rhymes with “BaBa.” It’s a certified product that we’re upgrading to. It’s certified to SCORM 2004, 2nd Edition. I import content from ADL to run in its content administration. I can see from the debugging window that its handling the data model well (enough). But in between it redrawing the Table of Contents every time I navigate from one SCO to another and (what I think is happening with) the interpretation of what the rule is on the active node in the activity tree — I’m not being presented with any content as a result of passing or failing an objective. It’s recording the SCO itself as being passed or failed in the resulting transcript. But it’s not flowing on.

And that sucks. Bad. It makes me miserable. I have felt and feel for people dealing with these issues in our armed services and in all branches of government, where the decision is made to go with Vendor X for an LMS but the person who has to make the content work in the LMS has no say in the selection.

We talked at great length about this at the SCORM Technical Working Group meeting last month. It will be discussed even more. There was talk at the time about the various vendors actually getting together with each other and figuring out how to share the interpretation of what a manifest is instructing a system to do. If you care about this… which is key to “interoperability” that many people are looking for… make it known to whoever your LMS Vendor is via their customer service or sales contacts with you and yours… and let them know that the next time you renew or upgrade, a factor in the decision to spend money with them is going to be how well they’re playing with others.

They won’t come to the same table by themselves, but they will if it means holding onto and growing the investment in YOU as a paying customer.

That’s my rant for the day.

EDIT: That’s not really fair of me to say at all. There were a handful of representatives from LMS Vendors large and small at the TWG. Several of them were very willing to “come together” and commit to working with a shared set of content packages as test cases to tweak their implementations to behave the same way. I won’t out them either at this point (I don’t want to be counter-productive). My main point is that if they’re going to do this, as customers we can hold a great amount of sway by encouraging this activity — either with the carrot or with the stick.

E-Learning
LMS
SCORM
Standards
Strategy
Tools

Comments (1)

Permalink

SCORM Technical Working Group - Day 1

ADL, IMS signed an agreement

  • SCORM 2004 is free of IP encumbrances
  • Â ADL will cooperate with IMS on Simple Sequencing 1.1

SCORM 2004 4th Edition

  • Minor release scheduled for mid-2008
  • Fix Simple Sequencing 1.1 and a few critical bug fixes - stable for 2-3 years
  • Merge SCORM 3rd Edition Sequencing and make it IMS Simple Sequencing 1.1
    • Anything that needs to be fixed, we are allowed to fix (including changing the schema, which we could not change before)
      • Interoperability issues
      • Navigation and User Interface issues that are documented and wrong.
      • When a learner completes a SCORM content package, there may be a need to get a score or progress information on a content package - possibly require LMSs to provide some kind of system-level access to ensure that progress is being reported accurately across all LMSs (not an IMS issue — firmly a TWG decision to fix).

Scope must be defined TODAY (in the bucket or out of the bucket)

  • Anything we decide to fix must be fixed by the community, resulting in a robust set of recommendations that can be asserted by ADL technical team…Â due December 10, 2007 (another TWG Status meeting that week).
  • The options for Sequencing Scope of work for the TWG:
    • IMS SS 1.1 is simply the merger of IMS SS 1.0 and SCORM 2004 3rd Edition.
    • IMS SS 1.1 is the merger of IMS SS 1.0 and SCORM 2004 3rd Edition plus fixes to known interoperability issues.
    • IMS SS 1.1 is the merger of IMS SS 1.0 and SCORM 2004 3rd Edition plus fixes to known interoperability issues and minor enhancements/editions

Points of discussion

  • Navigation interoperability issues
  • Interoperable way to access course status and other information AFTER course completion

Three hours later (and much spirited debate over the magnitude and scope of the possible courses of actions), we’ve decided to further investigate the Sequencing AND the Navigation issues.

Angelo Panar is heading up the sub-committee on Sequencing. John Campbell and I are heading up the sub-committee on Navigation.

SCORM
Standards

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