Today's question comes to us from our website, and it's a good one to answer publicly.
How do you get and set Mastery score in SCORM?
What is the mastery score? Conceptually, it's the score required of a learner to achieve "mastery" or pass a given SCO. In SCORM 1.2, it was actually identified as "mastery_score". In SCORM 2004, it adopts the more descriptive name, "scaled_passing_score". (Scaled implies that it will be found between -1 and 1.)
For simplicity's sake, we'll address retrieving the mastery score in SCORM 2004 only. The steps to retrieving it are consistent in SCORM 1.2, they simply require using a different API finding algorithm and different methods and vocabularies. On to SCORM 2004...
- Find and access the SCORM API. For a good description of how to do that, visit our API Discovery Algorithm article.
- Using best practices such as checking for errors, etc, call API.GetValue("cmi.scaled_passing_score");
- This will retrieve a decimal value (scaled, right? between -1 and 1)
That's it... mastery score is pretty straightforward. But from where does that value come? Well, in most cases, the mastery score is retrieved from the manifest, ultimately. While it may be stored in database tables within the LMS, the original source is the <imsss:minNormalizedMeasure> in the manifest. There are occasions where this value might come from somewhere else, but they would be few and far between. (We've seen LMS's override this value to accommodate scores dictated by union agreements in certain LMS's. Really, the union would require that the passing score for any testing of their members was X%, and the LMS would, therefore, override the passing_score from the manifest.)
In short, how do you get and set the mastery score?
- Set it by putting it in the manifest as the minNormalizedMeasure.
- Get it by calling GetValue("cmi.scaled_passing_score");