google / codeworld

Educational computer programming environment using Haskell
http://code.world
Apache License 2.0
1.25k stars 194 forks source link

LTI support #761

Open cdsmith opened 5 years ago

cdsmith commented 5 years ago

I now know that if I wanted CodeWorld to work well with a wide range of existing learning management systems, the right way to go would be to implement the LTI specification.

There are undoubtedly a lot of questions that will come up about the user experience and design of the integration. But step 1 is to just understand the LTI specification to begin with.

cdsmith commented 5 years ago

I took some time to understand LTI. The goal of LTI is to embed some learning tool (such as CodeWorld) into a learning management system or other managed learning context. The main parts are:

  1. OAuth to authenticate the LMS to CodeWorld, and establish the user's identity within the LMS. This would be an alternative to Google SSO, so when CodeWorld is loaded through LTI, it would stop offering Google SSO, and instead use the LMS's user identities.

  2. Some parameters that tell CodeWorld some details about the LMS environment, including: how much screen space it has, whether it's embedded into an iframe or a new tab, some style info about the LMS that it could try to match, etc. Perhaps it's possible to be responsive to this, but it's not a big deal.

  3. Via the "deep linking" extension, the ability for an instructor to interact with CodeWorld using a design mode in which they can design or select a specific embedded experience rather than the base CodeWorld UI.

  4. Via the score and result extension, the ability for CodeWorld to report progress and scores in a designed activity.

Off the top of my head, this seems like a less than ideal fit. But I could imagine doing something with the "Requirements" work that is embedded through LTI, and/or having CodeWorld save a student's work automatically based on LTI link id and user, so they can do an single activity in the LMS without navigating the project picker.