1

I am developing an LMS from scratch and have been making research about it but still stuck with these unanswered questions that I hope you help me with.

  1. What features of the LMS make it SCORM compliant?
  2. I have chosen to use mongoDB but I'm still confused about how to implement the real time course trackers that will show progress about the particular course. (I think it's connected to auto backup/update features)
  3. What's the best design architecture to use considering that I'll have three users. i.e students, teachers and admins...

Generally I need someone to guide me on how best I can implement this project Using the MERN stack of possible because I'm a newbie but I was given this challenge to implement and I want to give it a try. More so the backend is still mixing me up.

Thanks in advance

D M
  • 5,769
  • 4
  • 12
  • 27

1 Answers1

1

SCORM is certainly a challenge. I cannot help you with implementation specifics since even Rustici Software, the industry leader and publisher of scorm.com, estimates that

[...t]he time it takes to become SCORM conformant is generally measured in “developer years”.

To get you started, then, I'll attempt to answer your first question. There are better resources than StackOverflow for implementation specifics. I've linked some at the bottom of the post.

What features of the LMS make it SCORM compliant?

"SCORM compliance" is a misnomer used colloquially to indicate that an LMS supports creating, playing, or tracking SCORM content. In reality, there are levels of implementation that each LMS may find acceptable for its target demographic.

The official measurement of compliance is SCORM Certification through the ADL Initiative, the government program responsible for the SCORM standard. There are three testable levels of testing typically available (note that testing is not available at the time of posting):

SCORM® Conformance – the only criteria for claiming SCORM® conformance (to a specific version of SCORM®, i.e. SCORM® version 1.2) is to pass the corresponding test within the ADL Conformance Test Suite of the corresponding SCORM® version. The Conformance Test Suite is a free download from ADLnet.gov. This test is done on the honor system and requires no ADL Initiative involvement.

SCORM® Adopter – the next level up from being SCORM® conformance is for a product to be a SCORM® adopter. A product must be SCORM® conformant before it can be considered to be a SCORM® adopter. The logs that result from a passing test in the ADL Conformance Test Suite are submitted to ADL Initiative (see the SCORM® Adopters page for more information) and if found to be correct, the product is labeled as a SCORM® adopter in the SCORM® Adopter Product List (for a particular version of SCORM®).

SCORM® Certification – The final level of SCORM® conformance is SCORM® certification. Certified products are those products that have been tested by independent ADL Certification Testing Centers to meet the requirements as described by the corresponding version of the SCORM® Conformance requirements document and verified by the Conformance Test Suite (see the SCORM® Certification page for more information). Once this process is completed, the product is SCORM® Certified and is added to the SCORM® Certified Product List. The product is also then compliant to SCORM® Certification.

More casually, an LMS claiming to be "SCORM compliant" likely meets the following criteria:

1. Supports the SCORM JavaScript API

A SCORM package will attempt to locate the LMS-provided API at startup by following a well-established discovery algorithm. Essentially, it will look for an object called API (SCORM 1.1, SCORM 1.2) or API_1484_11 (SCORM 2004) starting at its parent window and searching upward until a match is found or the allowed number of navigations is exceeded.

This API object should implement eight standard functions and the data model object. Consult the full runtime reference for more information.

SCORM 1.1, 1.2 SCORM 2004 Parameter(s) Returns Description
LMSInitialize Initialize Empty string boolean Initializes runtime and assumes control from the LMS
LMSCommit Commit Empty string boolean Requests that the LMS persist the current data model
LMSGetValue GetValue CMIElement string Gets the value of the specified element from the current data model
LMSSetValue SetValue CMIElement, any string Sets the value of the specified element in the current data model
LMSGetLastError GetLastError CMIErrorCode Gets the result of the last call to one of these methods
LMSGetErrorString GetErrorString CMIErrorCode string Gets the string equivalent of the specified error code
LMSGetDiagnostic GetDiagnostic CMIErrorCode string Gets additional information about the specific error that caused the specified error code
LMSFinish Terminate Empty string bool Exits runtime and returns control to the LMS

2. Persists runtime data across sessions

SCORM packages are usually stateless, but can be returned to a state if provided with a previously committed data model. There are different ways to implement states in SCORM packages, but common in-runtime approaches include:

  • Storing a token, path, or state in cmi.suspend_data before exiting, then using that information to resume to a specific location upon reentering the package
  • Storing answered questions/user actions in cmi.interactions between sessions

Additionally, some packages may communicate to external resources or may use browser features like cookies or the Web Storage API to persist data. This is less desirable from the perspective of the LMS because it is harder to account for when aggregating and persisting data in the LMS.

Generally, when a package calls LMSCommit, it is sufficient to store the current data model for the current learner/student. This may be accomplished with any common persistence layer (Redis, Web Storage API, SQL, etc) so long as the information can be retrieved and made available when the learner/student wishes to continue interacting with the SCORM package.

3. Provides reports and tracking information about sessions

The goal of an LMS is to facilitate and enhance learning and one of the ways an LMS may accomplish this goal is by allowing for reporting on the actions its users take, the scores they achieve, and the trends they follow.

Reporting goals will vary based on the nature of the content in your SCORM packages and the specific learning objectives your LMS aims to provide for your users.

So where next?

D M
  • 5,769
  • 4
  • 12
  • 27
  • Thank you, @dakota-methvin. I have read the references and I am almost there. Just more inquires. I want to implement my LMS using the MERN stack. What is your advice on using MongoDB to store files? I also wish you could give me a JavaScript client-side `iframe snippet` for loading the SCO from the database. I'll be grateful. But so far I'm so thankful. – Enoch Kaxada Feb 11 '21 at 10:50
  • I have not used MongoDB or the MERN stack; my experience with SCORM comes from a T-SQL/ASP.NET/Angular approach. Respectfully, asking for code is outside the scope of this answer, is too much work for another single question as I mentioned in the beginning of my answer, and there are already plenty of resources [for fetching data using MERN](https://stackoverflow.com/a/58491762/14956277). There is no `snippet` that will magically fetch data from your DB to an iframe. You will need to implement a full stack to access a persistence solution from the browser. – D M Feb 11 '21 at 14:54