SCORM 2004 COURSE PLAYER
Technologies: C#, Web Services, XML/XSD, ASP.NET, JavaScript, D/HTML
Architecture: Layers, Object Models, Extensibility, Design Patterns (Singleton, Composite, Bridge, Façade, Abstract Factory, Others)
Open Standards: IMS and SCORM 2004 (1.3)
 
The Client: TaskManager Software Limited, a software company who's Learning Management System is used by such companies as BAE and McDonalds.
"Training Manager Pro V (Learnsmarter) will be a world class software product. Lucid Ocean have played a key role in ensuring that this standard will be met."
Sean Dukes, TaskManager Software
Overview 
TaskManager Software Limited needed to enhance their Learning Management System (LMS) into the arena of open-standards. This meant that a lot of effort was required to learn and adopt the SCORM 2004 specifications and the team could not afford to plunge themselves into this new world. Within their existing structure, budget and time constraints as well as the need to keep their company focused on their existing objectives, they required external help.

Having previously consulted with TaskManager on their software, we were in a unique position to understand their explicit and implicit requirements. The application was to be integrated into their next generation Learning Management System and we were tasked with researching and discovering the exact extent of the requirements and then implement accordingly.

We went about our investigations and developed a SCORM Player prototype within weeks. The prototype was to outline the architecture and set out to prove or disprove some of the requirements that were needed. Aftr which, we then moved into the finer details of the SCORM 2004 and IMS specifications and created the actual implementation.

Detail The SCORM specification and our implementation utilizes the LMS API, CMI Data Model, Content Aggregation Model (CAM), Sequencing and Navigation (S&N) as well as Learning Objects MetaData (LOM).
The full XML schemas are represented in object form, utilizing an Object-Oriented Approach to the data and behaviour.
The application is a pure SCORM implementation and does not contain any Learning Management Features, such as Course uploading or management. Instead, the application has been designed in a reusable and extensible way. You can think of it as a course-in, tracking-out type system, where the application "plays" the course and reports the tracking information back to the caller. This allows the course repository, data store and management to be independant of the LMS. We feel that this has adhered to the spirit of the SCORM.

To ensure extensibility, the "launch" conditions of the player, is extremely flexible allowing off-site and on-site course repository.
Also the LMS API has been implemented in both Javascript for standard behaviour as well as a SOAP Web Service.
We have bridged the Sessions between the web and the web service to supply a single point of data for each course, so that a combination of javscript and web service calls can be made.

Most importantly the code has been written to adhere and absorb future changes, especially in the API communication and CMI areas of the SCORM specifications.

Work also went into the user interface to allow customization and esay skinning. the screenshot below is the same player, with a different User interface layout and styles.
 
Since the overall SCORM and related standards are relatively complex, we wanted to only expose the most vital portions of the application to the LMS. We knew that the complexities needed to be simplified. The key component of this was the Extensibility Library which contains an easy to use Object Model. The Extensibility Library makes it possible for the LMS to call a 'Launch' method to which the player would load and play the appropriate courses, and allow the LMS to subscribe to important events.

SCORM is an open-standard developed and maintained by Advanced Distributed Learning (ADL).

SCORM is a combination of many standards including IMS Sequencing and Navigation. See, SCORM at the ADL website www.adlnet.org.