SCORM 1.2 suspended_data for different SCOs - scorm

I'm new to SCORM itself and I have a problem with tracking progress via Moodle's LMS API
SCORM version is 1.2
I have structure like this:
Lesson1
Module1.1
Module1.2
...
Lesson2
Module 2.1
etc
Each lesson has a set of modules of 2 types:
HTML Modules - modules that are just viewed by users
Game Modules - some games that have a medal (none, bronez, silver, gold) - as a result of module completness
The progress tracking problem is following:
I need to track progress on different Lessons based on a progress of their children Modules (sequencing?).
After all: I need to add a START to a lesson after all Game modules of the lesson are finished. Star indicates some sort of Progress on a lesson level
What I'm trying to do is to store Module's progress data (medals) in cmi.suspended_data variable as a string:
"module1.1,gold|module1.2|silver ..."
After that I want to process that thing each time page is loaded and figure out if I gain a STAR to one of lessons. For example: when I've finished last game in lesson1 with a medal so that all games are now have medals - and after that I move to lesson 2 - I should add star to lesson 1...
The problem is that moving from module to module and from lesson to module etc - RESETS suspended_data variable.
Question1: Does suspended data link to a SCO object? (which means each module/lesson has it's own suspended_data var)
Question2: What is CORRECT approach in this situation to trach sequencing progress (As I've seen, scorm 2004 has some sequencing mechanisms that can be described in Manifest. Which is correct approach in 1.2 version)

Question 1: the cmi.suspend_data is unique to each SCO, and can only be read/set from within the SCO. In your case, SCO2 cannot read SCO1's suspend_data and vice-versa.
Question 2: you'd better stick with a single SCO aproach here. All your modules and lesson will be part of a single SCO, which means you will be able to track the medals and user progress w/o any problem.

Related

How to assign "fixed work" task to multiple resources taking vacations into account

Let's say you have a small project. The team has estimated all the tasks as 300 days of effort.
I have 5 developers in the team, and I want MS Project to tell me when the project will complete considering vacations and working schedule of my team member.
In order to do that:
I'm creating a Task "Development" with fixed work "300d", and task type "Fixed Work".
Then I create 5 resources, and specify a 2 week vacation for one of the developers somewhere in the middle of the schedule.
Then I assign my 5 development resources to this task.
The problem is, the 300d distributed evenly to all 5 development resources. And If one of them have a two weeks vacation in between, due to that particular resource the work will be finished 2 weeks later, where other 4 resources are sitting and doing nothing for 2 weeks. Total duration is 70 days.
what I get
What I want to get is: work is distributed accordingly through all 5 resources unevenly in a way that the whole task finishes as earlier as possible taking most of the usable time from all developers.
That's how I would expect it to work. In that particular case I was distributing hours manually.
what i would expect
Is there a possibility in MS Project to do something like this? Or am I doing something wrong?
There are a couple issues with how you are approaching the problem.
1. Rather than just planning out the manpower hours estimated to be needed for the entire project on a single line item, You should plan out the tasks that will need to be done to accomplish "Small Project"
If you discretely plan out the tasks that need to be accomplished to satisfy the scope of "Small project", you can establish dependency (predecessor/successor) relationships between your tasks and figure out what tasks need to be done before you can move on to others. When you do this it will give you a good idea of how long the total duration of the project will take and likely be more accurate than just relying on an estimate based on the manpower hours estimate your developers give you. Find out what tasks they actually need to do, not just how many hours they think the whole project will take them. This will also allow you to plan out the utilization of your resources better because you'll be able to assign specific resources to specific tasks, and not all of your resources need to be on every task.
2. In general I would avoid using the Task Usage form.
I noticed you are altering resources in the task usage form, but unless you are really experienced with Microsoft Project I would avoid ever touching that, as it's really easy to set the period of performance of resources assigned to a task to be different than the actual period of performance of the task itself. This will cause MS Project to behave unusually, and it can be hard for an unexperienced user to understand why. This usually leads to pain and frustration. This leads me to my next bit of advice:
3. If you really want to specify a resource's vacation time, it's better to adjust the calendar associated the resource to exclude those dates as working dates.
In your situation with only 5 resources on your project, this can be fairly easy to do. You can accomplish this 2 different ways (I'll start with the easiest option):
1. You can add resource specific exclusion dates to the default calendar in your project
You can accomplish this by opening the Resource Sheet table and then clicking the Project tab then Change Working Times. If you have the Resource Sheet open instead of the Gantt chart, you can specify the resource that is going to be effected by the exceptions:
In this example you can see that I would be excluding (removing) 8/23/21 thru 9/3/21 as working days for the SW Engineer resource, without needing to change the calendar used by the resource completely.
2. You can completely change the calendar used by particular resources to be different than the default calendar set for the project.
You can accomplish this by going into the Resource Sheet and opening the Base Calendar column:
From here you can assign any calendar that exists in the project to the resource. Of course this means you would need to create the calendars and assign exclusion dates to them.
To create a calendar, click the Project tab then click Change Working Times. Click Create New Calendar on the form that opens up and give it a name:
From there you can add exclusion dates and all that.
Note: In a larger project with many resources, I would recommend not messing with the calendar for the resources at all. It just gets hard to deal with when there are a lot of resources.

SCORM 2004 - suspend_data not saving in SCORM Cloud

I have a bit of a strange problem and am struggling to find any relevant info about it in the docs or elsewhere.
We have implemented SCORM 1.2 and 2004 in the past and I'm currently trying to fix an issue we have with our 2004 version and have hit a bit of a brick wall. We store data about our learners progress through the course, i.e which pages they have visited in 'cmi.suspend_data' we then retrieve this at the start of their next session to provide visual feedback in the UI.
In 2004 2nd Edition, we are unable to retrieve that data from the LMS.
To take it right back to basics, I have uploaded a blank SCORM course to SCORM Cloud (empty index.html) and am launching the course and finding the API_1484_11 and calling the following functions on it.
API.Initialize('');
API.SetValue('cmi.suspend_data', 'Test');
API.Commit('');
API.Terminate('');
Then exiting the course. At this point I can see the suspend data in the 'Sandbox Registration State'.
I then go back into the course and call:
API.Initialize('');
API.GetValue('cmi.suspend_data');
And am returned a blank string. At that point if you do API.GetLastError() it is a 403.
Am I missing something vital here, or some difference between 1.2 and 2004? Is this expected behaviour?
I think the issue you are running into is that you are not setting cmi.exit to "suspend". I believe that the specification says that the LMS is to retrieve the suspend_data from a previous learning experience only if the exit is suspended...

Scorm Suspend Data issue migrating from scorm cloud

I currently have a client that has a Scorm 1.2 course which is hosted on Scorm cloud. Things are going fine there with the course but the client wants to get off Scorm cloud because the fees are adding up. I know Scorm cloud is a very in depth application but all the client really needs to worry about is allowing the user to continue where they left off, detecting if the user passed the final score and ideally the score they got on the final exam.
I have used a few different scorm player wrappers but I am running into the same issue with them all. The scorm course made from storyboard creates a huge value for suspend_data and when it is really long for some reason the course will ask if the user wants to continue where they left off but will bring them back to the beginning and not continue where they left off.
I know to be Scorm 1.2 compliant the suspend_data should be no longer than 4096 characters but some are upwards of 90,000 characters. I also have read Scorm doesn't really enforce this it is mainly a LMS restriction on field size. I am storing all of the cmi data into a medium_text field so I am not having an issue with storing it.
My main question is has any migrated off scorm cloud and took their users history (suspend_data) with them to have users continue where they left off with your scorm player? Another question is has anyone had this issue and is there a player/wrapper you have used to successfully use a large suspend_data for a Scorm 1.2 course. What I am trying to do is take them off Scorm cloud so I can do an api call to get all of the cmi data for each user and then start launching directly from their site and store new cmi data but we can't move away since many users would have to start the course over.
I did run more tests with my scorm player and when through the entire course and saved my suspend_data at various points and I can get it to launch at that point. The longest my suspend_data was just under 30k characters.
Any tips in the right direction would be appreciated.
Migrating SCORM data from system to system is tough as while the SCORM elements themselves should be named similarly in the systems SCORM implementation, each LMS could store/name them in a different manner.
As far as the large suspend data issue goes, are you moving to a system that allows for a customized maximum suspend data size? In SCORM Cloud and LMSs that run our SCORM Engine, we do have that course property that allows you to store as much suspend data as you want. There are a number of LMSs out there that use Engine so you may be able to modify that behavior.
Shoot us a message at support#scorm.com if you have any other questions!
Thanks,
Joe Donnelly
Rustici Software Support

Is Edit and Continue patented?

Just wondering why there isn't that many ide that can edit native code at runtime.
Visual Studio is the only one that can do it?
gdb can "compile and inject code", but it only executes a single line of code, doesn't seem like it modifies anything.
Found this https://www.google.com/patents/WO2015200235A1?cl=en , but not sure where can I get the whole patent, it's just ocr without any graphic.
I need to know if that technique of starting all functions with 6 nop is patented, that's all I care. It's pretty old by now. I plan on developing a language, if that matters.
To get a full answer you would need to contact a patent attorney, patent search company or engage with an examiner at a particular patent office.
For the patent you found above, you can obtain more complete information, including drawings etc from WIPO PATENTSCOPE here.
The preliminary search report from WIPO indicates that claims 1,2 7, 9 10 and 15 are insufficiently novel, and claims 1-15 do not constitute an inventive step on the basis of obviousness.
The WIPO Application has entered into national phase under application EP15735802 in Europe, and the website shows two citations, one patent and one NPL (non-patent literature). I can't post the link because I am new to stack overflow and can only post two links, but you can use the 'national phase' tab of the link above to go direct to the European Patent Office website.
You can search Esp#cenet using keywords to see if there are other inventions out there which are close to your idea.

SCORM to xAPI sessions and re-answering Activity + changing Score

I'm coming from a SCORM end and trying to figure out two related issues with how to do update and find the most recent data (ie, looking for best practices).
In SCORM I'd have a set of activities that would all store their answers and scores (easily understandable from the docs etc). The "how" I'm after is specifically related to resuming the set of activities multiple times, and hitting "reset" and submitting a different answer to a single activity after a statement has been sent in.
From what I read with xAPI it states that statements are immutable - so how would I go about this.
My first thought was that I'd make the statement id generated from the activity id and void the old answer when it changes - but that sounds wrong (not least because it reads like you can't re-use the id even with voiding).
So it looks like the Statement id needs to be unique, which would mean that multiple identical Objects would be found - so would I have to look through every attempt and check for the latest one?
I'm currently looking at using xAPIWrapper in the middle.
Moving from SCORM to xAPI requires a change of mindset. SCORM deals with statuses which get updated; xAPI logs events like a journal.
You can think of it like Facebook. You post a photo of your new cat; a month later you post a photo of your cat 1 month older. There's no need to go back and delete the old post. If you want the latest photo of your cat you just go and get the most recent photo tagged "Ryochet's cat". You can also look at older photos to see how your cat developed. xAPI is like that activity stream on Facebook.
So, if somebody scores 10 points on their first attempt, then 20 points on their second attempt, you'd simply send a second set of statements about the 2nd attempt. There's no need to get rid of the statements about the old attempt, that happened and is useful data to see how the learner developed.

Resources