Building LA ecosystems
Welcome! This blog post has resources and links for the workshop I am giving for LASI19 on Building Learning Analytics Ecosystems. Follow the links alongside to find the relevant activity.
My Slides
Download them if you want to have a look! (Don’t skip ahead though! Grrrr.)
Activity: Build a LRP
NB: Make sure you ask Kirsty to give you login information for the LRS so that you can go and have a look at the data resulting from this exercise! (She is not sharing it here as we are goign to use one of her private LRSs!)
This exercise is going to give you a taster in what it takes to build a LRP (Learning Record Provider). I also expect that it will introduce you all to the issues associated with achieving data interoperability across multiple LRPs… but more on that later ;) We are building off of the great starter resources provided by Anthony Altieri and Bryan Jones, but with a slight twist… you should work out your own statements! Feel free to look at those tutorials if you are having troubles, but you should work to define a statement that best describes the specific action being performed by the learner you are tracking.
Basically, here are the four steps you must take to send an xAPI statement to a LRS:
- Define a variable that holds the URL address of the learning record store (LRS) and the username and password to authenticate
- Tell the browser to use that variable for the LRS
- Create a variable and define the xAPI statement
- Send the statement
Below you will see some more detailed instructions about how to do this… pair up with someone you don’t know and work with them through this activity!
Follow these steps
- Download this file and open up
LRP.html
in your favourite text editor - You will need to fill in a few fields:
- LRS endpoint: https://lasi-workshop.lrs.io/xapi/
- Username: participant
- Password: password
- the learner’s unique id (an email will work here, but feel free to add extra information to this field… look up the stuff you can add here)
- the verb (and maybe an activity… look at the xAPI specification linked to above for info!)
- an object
- You need to go and get some files from ADL to support sending statements!
- Go to https://github.com/adlnet/xAPIWrapper
- Go to
dist
folder, copy thexapiwrapper.min.js
file and paste it into the folder you have yourLRP.html
file in - Go to
lib
folder, copy thecryptojs_v3.1.2.js
file and paste it into the same folder
- Open up the edited file in your web browser. Try clicking the button - does it work?
- Log into the LRS and explore the data in it… are your statements there? Here are some things that might help you troubleshoot if your statements are not showing up:
- are your statements legal? Check the spec, or… see the next step
- check the log entries… you might find some error messages pertaining to your LRP (where are these in this LRS? Can you find them?)
- have you got your
xapiwrapper.min.js
andcryptojs_v3.1.2.js
files in the right place? NB. you need to have a wrapper file for yourLRP.html
file to work! - if you are still having troubles then the
LRP-example.html
file should work… (if you have the wrappers etc. in the same folder)
- Go and have a look at the other statements in the LRS! What analytics and reporting does it provide? Are they any good?
- Can you extend your LRP to provide more information? What about a
context
element? Maybe you can add a second button or other thing to the page… how would you define a statement for that object? - Try sending your statements to a different LRS! Some of the other free ones are Yet, watershed and SCORMCloud… or you could try creating your own Veracity one and sending statements there ;)
Pick a challenge
In the afternoon we will focus upon further exploration of key avenues that you find interesting.
- You need to form into groups of at least 4 who all want to work on one of these challenges (or a combination of them).
- You should work together using the resources associated with each challenge to come up with an artefact.
- Each group will have to present its findings at the end of the day!
Challenge 1: best practice xAPI profiles
Can you build a profile that will provide data the LA community can actually use?
Resources that might help:
- xAPI profile starter template
- xAPI Profile specification
- all published xAPI profiles (Its not many!)
- Caliper pages
- Caliper specification and Metric profiles
Challenge 2: design an extension to the LA-API schema
Can you extend the LA-API schema design to facilitate more LA?
Resources that might help:
- LA-API page
- GraphQL specification and documentation
- Ask me to share some example data via our GraphiQL site!
Challenge 3: extend the LA-API
Can you fork the LA-API/mongo-extract and extend them to add new functionality
Resources that might help:
- LA-API page
- CLA toolkit page
- GraphQL specification and documentation
- Ask me to share some example data via our GraphiQL site!
Challenge 4: design a dashboard
Can you leverage data interop to build dashboards that self populate using all relevant data?
Resources that might help:
- LA-API page
- GraphQL specification and documentation
- a configurable dashboard prototype we built a couple of years ago, which does not currently link to data (sourcecode here)
- Ask me to share some example data via our GraphiQL site!
Challenge 5: explore the ethics of data interoperability
What might go wrong if data flows across institutional boundaries?
- Ask Kirsty to share the paper she just wrote on this issue…
- Have a look at this white paper on the topic (published in 2019)
- Look up anything by Prinsloo and Slade