Tuesday, June 23, 2009

My thoughts on course size

When creating web courses the content should be chunked into the smallest coherent units that still make sense based on the content, rather than on the clock. When users are doing self-paced training, they will be easily distracted. Creating a "6 hour" or a "3 hour" or even a "1 hour" module means that the users will have to chain themselves to the content for that time period and avoid any interruption. I doubt that they will be able to do that. Instead, content should be structured as little "pills" of knowledge that can be swallowed quickly or slowly, as the end-user wishes to do. One good option is to have a summary page with links to various presentations of the same material, and a few test questions on that material. This would constitute one "pill" of information. The user can take this, step away, come back, and proceed to the next "pill".

A level up from this would be the "courselet". A courselet is a small piece of content (perhaps a chapter or small course) that can be taken in a 15-20 minute period (for the typical user). If the user needs just-in-time training, a 15-20 minute period is about the most that can be expected for an uninterrupted experience.

Any videos or sound files should be kept 2 minutes or shorter. Otherwise, because watching a video or listening to audio are such passive experiences, the learner will focus instead on their e-mail or on playing a computer game while the content is being served to them.

Creating mobile content

Beyond the change in experience simply because of the size of the screen, it is important to consider that Flash does not yet run on most mobile devices, that creating a "mobile app" for each platform is a very expensive way to approach training, and that connectivity for mobile devices will change over the next few years.

I believe that mobile devices will soon have the "always-on" connectivity that desktop computers currently have. As soon as enough providers start offering flat-rate plans, you'll see all carriers do so, just as nationwide long-distance is now a standard feature of cell phones. How does this affect the employee? It means that the content does not need to be downloaded ahead of time (like an app). The student will be able to take it just as they would with their desktop browser. Then comes the interesting part of how to create the content. If you stick to web standards, the browsers will be able to provide the optimal display for the specific device. Content built as HTML content (as opposed to text-in-pictures or video movies) can be rearranged by the browser to provide maximum display, and minimum scrolling requirements. Many of the new mobile browsers do a pretty good job of supporting style sheets, so there are a lot of layout options that can be applied.
The ReadyGo Web Course Builder ($499/developer) builds content that is based primarily on HTML and style sheets. The tool includes several templates designed for mobile browsers, and provides a preview of how the course looks in the different display sizes. So, the author can load a mobile template, generate and post the course (see how it looks on mobile devices), and then reload a desktop template, generate and post the course to a different web page (see how it looks on desktop machines), and students can now choose if they want to see the mobile version or the desktop version of the course. The tool can also be used to carry out tests and surveys using the mobile platform. Tracking can be done using the ReadyGo Server Side Testing module ($1499/server). The pricing allows unlimited creation and tracking of courses.

Wednesday, June 17, 2009

Getting the behavior you want, saving the data you need

Question:
Most LMSs are designed with a specific set of behaviors as imagined by the LMS designers. Similarly, the course content may produce behaviors beyond those expected by the LMS. How do I change behaviors in ReadyGo WCB?

Answer:
That is why we have LMS-packs. By using different LMS-packs you can change the course’s behaviors. Hopefully, one or several of the LMS-packs will give the course the desired behavior when it is served from the LMS.

Question:
What if I have a customer who needs specific reporting and my LMS does not save this information. Do I have any options?

Answer:
One solution ReadyGo developed was for the courses to send information to both the LMS and to ReadyGo SST. If the LMS does not provide the detailed information, SST will store it, and SST reports can provide a history of every time the test was taken with every answer provided by the student. This augments the LMS, so that the LMS can concentrate on its portal functions rather than on the tracking functions.

Tuesday, June 16, 2009

How LMS's work?

This is a continuation of a dialog I had with one of our customers. They asked a lot of thought provoking questions. I have not seen this type of dialog any place and thought others would be interested. I am familiar with over 60 LMS's since I have written LMS packs to work with them.

Question:
Do most LMS record only the first or best score but not all sessions of a student

Answer:
This is what I have seen.

Question
Some LMS say they are Scorm compliant but that is only true when their own authoring tool is used

Answer: Generally False. There are just a few that claim SCORM, but really are not.

Question:
Is an authoring tool responsible to provide different SCORM behaviors?

Answer: In theory, this in True; in practice this is false. I have only once seen an LMS that adapted their code when a problem was pointed out to them. Most LMS vendors fault the authoring tool using the reasoning, “no other authoring tool courses have this problem” or “we have hundreds of courses that work – the problem must be in your course”. For example ReadyGo worked with a course creation company that was selling their courses via one of the "big" named LMS's. ReadyGo had not had any success reporting test results to this LMS. The LMS told me that it must be our tool. I contacted the CTO of the course creation company. He told me that their courses did not have tests. This shows how empty the term “compliant” can be

Question:
Does the scorm model believes that a course has one final test and only one final grade.

Answer: True – but this is more a function of the course authors. The specification does not explicitly say so, but it has become the most common implementation.

Question: In scorm a student views a course once and never returns to reference the material?

Answer: True, although this is more an assumed LMS/author behavior. SCORM 2004 actually is set up so that a student can see a particular SCO multiple times in one “course”.

Monday, June 15, 2009

What is the minimum requierment of SCORM?

A few SCORM Questions:
You describe the other tools as rather weak when it comes to real Scorm support, in the real world they seem to be able to produce Scorm-compliant courses as promised. Is this because the minimum requirement/the minimum of information wanted by most organizations is low?


Answer:
If you only have one interface for SCORM, then that is all the course author has access to. By doing less, you can avoid supporting the customer, and can simply push the course author to ask the other vendor (LMS vendor or authoring tool vendor) to make up for the behavior that you would like. Most authoring tools and LMSs only support the lowest common denominator required to claim SCORM or AICC compliance/conformance. If you do this, you can create your sales/marketing material, and the customers will not look beyond this. As you are seeing, many of the issues become difficult to visualize unless you have experience in the field. For a large number of trainers, producing anything beyond PowerPoint is either too difficult or just not of interest. So imagine trying to ask a course author whether they want to set the lesson status based on number of times a test has been taken. For the vendor support department, the best approach is to simply provide one interface behavior. If the customer wants more, they can take the 6 week course on programming in Flash. This will repel most course authors, and simultaneously will minimize support costs. Unfortunately, it also discourages the learners because their experiences are bland.

Question:
Do authoring tools other then ReadyGo have LMS packs? How do other tools fulfill the different needs of the customer?

Answer: Yes, ReadyGo is the only tool with LMS packs and behaviors. This is because the other tools believe that their customers don’t have needs beyond the single behavior. They think the only reasonable score is a value between 0 and 100? (With SCORM 2004, the score is now required to be between -1.0 and +1.0.) They think the only reasonable behavior is to have a student pass one test at the end of a course? Other common assumptions are: Why should a student ever come back to a course once they have completed it? Shouldn’t there only be one test question per page of content?

Question:
What is the minimum to achieve scorm-compliant certification?

Answer:
Call LMSInitialize() and LMSFinish()
Two fields, one tells the LMS the course has been started, the other tells the LMS the course is complete.

Question:
What is the difference between AICC-compatibility and Scorm-conformance?

Answer:
There is no real AICC-compatibility certification. You go to an “independent” agency of your choice, and pay money for them to write something that says you comply with the specification as you have chosen to interpret it. With SCORM there is an official test suite you can use. The test suite is better, but only checks for the minimum requirements (see above).

Friday, June 12, 2009

Saving data in an AICC course

Question:
From an AICC course can a score be saved for each page that has test questions? If so, can you save one score per course, one score per test, or one score per test question? If a student re-takes a test does the first score get stored or overwritten?

Answer:
In theory, a score can be stored for each question. To do this we will need to make each page of questions a unit/SCO. That way you can store a score for each page of questions. Alternatively, within the course, we could define an objective that is a composite score for several questions. Once again, I haven’t seen an AICC-based LMS that would store/report the objectives and interactions, so this is a moot point. Generally, I only see one score per unit. So, if you want more granularity, you have to break your content up into one question=one unit. When you throw in the delays for launching units, this becomes instructionally painful for the student. (Most LMS's take 8 to 20 seconds to store a unit and launch the next unit) If a student retakes a test, it is up to the LMS to decide what to do. My preference, as you see with ReadyGo SST, is to append the result to the report. However, most LMSs only report a single score, so they will tend to overwrite results from previous sessions. I have never seen an LMS that will store more than one score for a single student session. So, the student could take the test 15 times until they pass, and only the final score is reported (without recording that the student took the test 15 times.) Of course, the course itself could also track how many times the student took the test, but there is no way to report this except in the “suspend_data”, which the LMS does not view since there is no standard for it. SCORM 2004 addresses this, but for it to work, the LMS has to relaunch the unit each time the student wants to retake the test.

Wednesday, June 10, 2009

LMS/SCORM Complete status

Question:
If the LMS manager and the LMS provider are clear that the status “complete” shall appear when for example the student took a test and passed. Why is this still so complicated to implement that? Is this a problem of the SCORM definition, or a mismatch of field names?

Answer:
It is all about WHEN the completion status is sent. Some LMSs assume that a SCO contains only one page. Therefore, if the SCO has been completed, the student session is finished, and there is no more to do. However, if the SCO has multiple pages, and after the student completes, they visit other pages, the LMS could decide to stop tracking any further results (I have seen this). Sending a status to the LMS is not hard, but it can be hard to calculate it, especially if it depends on scores or behaviors from previous sessions. Also, there can be timing issues. Typically, one wants to report status type information as the user leaves a page or loads a page. With some LMSs, if the messages arrive too quickly, the LMS drops messages. In the case we were seeing with the AICC Basic IE6+, FF+ for frameless, the reporting problem existed because as each page of content is unloaded, the course reports the time on the page and the current lesson status. When the course gets to the Exit page, it has more to do. When the page loads, it sends the course completion status (putParam/ LMSSetValue). Then, separately, it has to send the ExitAU (equivalent to LMSFinish() and LMSCommit() in SCORM) message. With AICC, these are messages sent directly to the server. You can’t send more than one at a time, so we had to split them into onunload for one page, onload for the exit page, and onclick for the exit page. We were possibly seeing a timing issue that the onunload from the previous page and the onload for the exit page were arriving too soon (or in the wrong order) at the server. The onclick for the exit button wouldn’t be such a problem since the user will take at least 0.5seconds before they click it.

Another big issue is what to do when the user “exits” the course. This can either occur with an explicit “exit” button or if the user closes their browser. Many authors don’t want the exit button, and many users simply won’t use it. Therefore, if the user clicks “X” to close their browser window/tab, the course must send the exit messages. This can get difficult. So there needs to be an overall onunload for the course/frameset. Some newer browsers are preventing sending of messages directly to servers when pages unload because of security. Also, how does one send two or 3 messages simultaneously as the browser is shutting down?

Aside from the theoretical issues, there are some simple practical ones. When the course is built, it needs to be tested in the delivery environment. We often find problems in sequences we didn’t expect the student to follow – they start the course, jump to the end, jump to a test, exit, come back… With the AICC course we were working with there was an additional issue that it seems that the browser behavior changed over time. We saw that the onunload message from the prior page was arriving at the LMS after the onload from the final page. So, the onload message set the status to complete, but this was overwritten when the previous page’s onunload message arrived. We did expect the messages from the previous page to arrive after the message from the current page.

Friday, June 5, 2009

Here is another great question I got. This is a continuation of my last blog.

If someone, like the E-Learning Manager at a company, would make up his mind that for a group of courses the "completion" of a test is given when All tests are taken and for another group of course when 1 test is taken-- then two different behaviors need to be programmed into the course. The LMS would need to work differently. Can the e-Learning manager define all sorts of behaviors? How do you know if the LMS can do this? Can the course deliver the data the way I need to?

Answer:
This is a difficult issue. Keep in mind that we have to program for any LMS. This would mean even the most minimal LMS. Therefore, the course itself has to handle all the logic. With SCORM 2004, the navigation between SCOs and the calculation of course completion can be assigned to the LMS. In SCORM 1.2, the concept of course completion did not exist – only lesson completion did. So, from this point of view, it is best to think of the LMS as a data storage device only.

When approaching people who have this question, it is best to have a series of examples of what behaviors are available. Then, based on the customer preferences, it is necessary to choose or create the LMS-pack based on what they want. Some examples:
Course completion: Take final test; pass final test; visit certain pages in course; total score across tests above 70%; pass every test with 70%; pass certain tests with 70%; be on course for a certain amount of time; or a combination of these.
Lesson status on restart: If course was previously completed, don’t change status; restart with incomplete every time; send pass/fail instead of complete/incomplete; if course has tests, send pass/fail. If it has no tests, send complete/incomplete; Hide some tests if the student is not taking the course for credit.

Currently ReadyGo provides multiple packs. The course creator then chooses the pack that meets their needs. This way we can trick an LMS to provide more behaviors then they were designed for.

Thursday, June 4, 2009

More about ReadyGo LMS packs

ReadyGo provides different LMS interface packs based on the behaviors of the different LMSs. For example some LMSs will prevent the student from returning to the content once they have "Completed" it. If you are using that LMS and you want to reuse your courses then you need to set up the interface so that the student's status is reported as "Passed" letting them reuse the course. I am unaware of any tool other then ReadyGo WCB that lets you choose your behavior by changing one option in a pull down menu.

Question:
Don't I need a description of what is behind each LMS pack? If I want the student to be able to return after he has completed a course does that mean I need to have you write a new LMS-pack?

Answer:
The “descriptions.txt” file found with each LMS pack contains a brief description of each LMS’s behavior. ReadyGo will write a new LMS-packs if the LMS does not behave like one that we have already dealt with. Typically it is just easier to write a new LMS-pack and test it with the specific LMS. This way we don’t run into timing or lockout problems.

ReadyGo's philosophy on course progress

Question:
What is ReadyGo's philosophy on course progress?

Answer:
Our philosophy is that the course is reporting both a score and a completion status. These should be handled independently of each other. However, a large number of customers want score>90% = completion. So, you’re throwing away one of the very few reported data available. Each LMS-pack has a different philosophy. Some tie the completion to the score; some do completion when the student reaches the exit page; some do completion based on visiting a certain number of pages. This way course creators can choose a pack that meets their needs.

Wednesday, June 3, 2009

Can my authoring tool support more then one behavior?

Question:
How can I verify that my authoring tool supports more than one behavior?

Answer:
Most authoring tools simply have 1 SCORM behaviour and 1 AICC behaviour. If the author wants a different behaviour, they have to break the courses down to page=SCO. Then, they can pay for the programming effort. In ReadyGo WCB, all the behavior is programmed through JavaScript. Each LMS interface has a file that lists the component pieces used for it during course generation. There are components for the "index.htm" page, for the main/first page, for the bullet pages, for the test pages, for the sidebar, for the services/menu bar, and for the exit page. These different pages play their own role in the lifecycle of a course. The listing is in a .des file. The contents of the .des file are described in a file called “desfile.txt” in the LMS folder. The .des file contains the names of the files that are used in the different places throughout a course (e.g. when a test loads, within the index page, etc.) There is a file called "descriptions.txt" in the "lms" folder that contains a summary of every LMS pack.

What does a SCORM LMS actually do?

I was just asked some great questions on how LMS's actually work with a course. I thought others may be interested in this conversation:

Question:
I have worked with a number of LMS's. Why is it that all the work is done on the course side? The LMS must do something so that the course can send data. What does the course do, what does the LMS do? Is the LMS the data receiver and then processes the data in a given way (how flexible?. Does the LMS create the reports?
The course sends the data. I need an example here for example the status complete:
Does an LMS has a datafield that is set to “completed – not completed” depending on what the course sends? How many datafields are there for a course to be “SCORM”-compatible? Which fields? What does an LMS need to do to be SCORM-compatible?
Start a course, notice the exit, write a status, store the test results ----?

Answer:
For most LMSs, what the LMS has to provide is a User ID when they launch the course, the “suspend_data” (2048 characters that the course set the previous time it was taken), the user name, the previous time on course, and a few other “core” fields. That is what is provided with a good SCORM course. There is no logic that the LMS is supposed to perform (with SCORM 1.2 and earlier): An LMS only provides data storage and retrieval. With AICC, since the course couldn’t really get to the content sent by the LMS, the requirement for data retrieval was minimal.

For SCORM 1.2, conformance, all that a course needs to do is send LMSInitialize and LMSFinish. This would make a course SCORM “conformant”. That is why you will see tools out there that can turn a Word document into a SCORM conformant “course”. Of course, instructionally this has no value except to track that someone has taken the course. A simple web statistics tracker could tell you that (you can see what users based on their IP address have seen what pages of content.)

For an LMS, to be SCORM 1.2 conformant, they must handle LMSInitialize(), LMSCommit(), LMSSetValue(), LMSGetValue(), and LMSFinish(). The important work is set by LMSSetValue, which specifies the variable name and the value. To be 1.2 conformant, there are 10 “core” values that must me supported. Most 1.2 LMSs have traditionally only supported about 5 of these (student_id, student_name, lesson_location, credit, lesson_status, entry, score, total_time, exit, session_time). There are some other groups of values called “objectives” and “interactions” where a course author could put in the score for individual questions. In SCORM 2004, support for these is required. The ReadyGo courses have used these in SCORM 1.2, but there are only a handful of LMSs that have tracked them and even fewer that have been able to report on them.

For continuity of behavior from one session to another, therefore, the course generally has to put the data it might need into the “suspend_data” field, and then it can parse it when it loads. With the better LMSs, the course could ask for a listing of the objectives and interactions that were previously provided along with previous lesson status and score. The difficulty is if you have 20 questions in 4 tests within one SCO (unit). It is hard to retrieve this type of detail from most LMSs since they only support the “core” set. So, with WCB, we use the suspend_data field to store/retrieve previous scores that have been set by the course. Then, in terms of logic for certificate generation, the course has to take care of it.

Because of the difficulties in retrieving data, there is a perception that a SCO should be designed to only have one question in it. That is why you will see many authoring tools that set up every test question, and usually every page of content to be a separate SCO. The golden rule with SCORM is that one SCO cannot send the user to another SCO, so this means that after each SCO (or “page” in most cases), the course has to exit from the LMS, and the LMS has to launch the next SCO. In some cases, this can take a noticeable time since the LMS has to retrieve the user’s previous data and package it so that it can be obtained by the SCO. In a good LMS, this may be a lot of data. So the end user suffers a delay between each SCO. If the SCO is designed as a chapter or an entire course, the delay will not be noticeable. However, if each page is a SCO, the course-taking experience could be painful.