# Sharable Content Object Reference Model (SCORM®) 2004

# Data Model Elements

## Best Practices for Content Developers

Best Practices for Content Developers

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 Content 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 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:

>      <imsss:sequencing>
>        <imsss:rollupRules rollupProgressCompletion="false" />
>      </imsss:sequencing>

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 <item> in the manifest:

>     <imsss:rollupRules rollupProgressCompletion="false" />

An LMS will ignore any children of a parent <item> 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 <item> children to look for what to ignore.

Overall Development

Pop-Up Windows
In order to track the learner's activity, it is best to aviod 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).