Google Course Builder and the Tin Can API

| Comments

Google’s Course Builder is a great resource for the MOOC community. Open source, simple, and easily modified, a programming novice can go from download to a working MOOC ready for thousands of people in a short period of time. Rapidly authored and easily deployed MOOCs are fantastic, but create a new problem: data integration. Many people will participate in multiple MOOCs over time, and bringing that data together will deliver a lot of value for individuals and organizations.

So, I’ve added simple support for the Tin Can API (also known as the Experience API) to Google Course Builder. The Tin Can API is a modern standard for communicating learning data, intended for recording learning anywhere and everywhere it occurs. In a typical Tin Can ecosystem, learning applications and related systems, such as a Google Course Builder MOOC, produce ‘statements’ describing the learning ‘activities’ that ‘agents’ are engaging in, such as completing assessments, answering questions, and completing the course as a whole (I added support for all three of those). Those statements are then sent to a ‘Learning Record Store’ (LRS), where they can be sliced, diced, and generally considered.

The biggest benefit of Tin Can integration is that data can be easily integrated across multiple sources. Even if a MOOC tweaks the data structures (as encouraged in the code) for new uses, Tin Can statements, since they’re constructed with a syntax for expressing learning data, can be combined with data from another MOOC using the original data structures, or any other integration scenario.

Also, in Tin Can statements take place at moments in time, so someone retaking parts of the same MOOC won’t overwrite the information from the first time, unlike in the default data model in Google Course Builder, allowing instructors to look at patterns of retaking and improvement.

We’re interested in finding organizations with Course Builder MOOCs in actual use who’d be interested in experimenting with Tin Can API support. If you’d like to talk, please get in touch. You can check out the code at my clone of the Course Builder source, or if you just want to peek at the changes for Tin Can support, take a look at this commit.

(As an aside, the integration mechanism, a simple taskqueue for statement processing, should be easily portable across other AppEngine apps, not just Course Builder, and makes sending statements a matter of adding them to a queue, gaining all the benefits of that - error logging, exponential backoff, and so forth).

For more Tin Can API connectors and integrations, go to