How does SCORM really work?
Coming from a heavy development background I was used to having either code samples available or a very clear explanation of a technology’s inner workings. When it came to SCORM the only information I could find discussed the protocol at a very high and theoretical level (such as the SCORM specification itself). Uncovering the nuts and bolts of how data bubbled up from the SCO (e.g. the course) to the learning management system (LMS) seemed almost impossible.
That was nearly a decade ago and the availability of information has definitely increased since then. Even still, in the eLearning world the ins and outs of how SCORM actually works continues to be a bit of "black magic" that is hard to break into. I’m hoping we can begin to change that.
It’s tempting in this world of rapid content development editors, with hundreds of different learning management systems to choose from, to argue that unless you are building your own LMS or SCORM wrapper that you needn’t be bothered with this level of technical detail. I would contend that is a mistake. There have been countless times where understanding the interplay between SCO and LMS has helped me troubleshoot issues. There is great value (regardless of how you build your courses) in understanding how the technology you are utilizing works and what its limitations are.
So let’s start at the beginning. With SCORM,
How does information get from a SCO to the LMS?
Once a SCO has found the API it can then request or send data to the LMS. It’s worth noting here that the SCO is always the one initiating the request. It asks the LMS when it needs information or tells the LMS when it wants to send information. The LMS passively waits for the SCO to make these requests. The API has access to the following 8 basic functions (which are defined in the SCORM spec). Please note the name of these functions varies slightly from SCORM 1.2 to SCORM 2004).
Most of these have a relatively descriptive name that gives you an idea of their purpose – As always the devil is in the details, so we will be delving into these specific functions in much more depth in future articles.