nbgrader and LMS / LRS; LTI, xAPI

777 views
Skip to first unread message

Wes Turner

unread,
Nov 28, 2019, 7:19:22 AM11/28/19
to Teaching with Jupyter Notebooks
In reading the "Hypothesis Releases Gradebook Integration for Blackboard, Moodle, D2L & More" [Canvas] [1] announcement, I learned about the LTI spec [2] for LMS interoperability. I had head of xAPI [3].

This thread [4] mentions using the nbgrader export functionality [5] to send activity data to an xAPI LRS.

[7] mentions that jupyter/oauthenticator solves for some of (?) what LTI solves for in certain environments.

Has anyone successfully posted nbgrader data to an LMS using any APIs/data specifications?
Would [5][6] be the place to list those successful integrations (nbgrader.plugins.ExportPlugin subclasses with an .export() method)? Or the README?


[1] https://web.hypothes.is/blog/hypothesis-releases-gradebook-integration-for-blackboard-moodle-d2l-more/
[2] https://en.wikipedia.org/wiki/Learning_Tools_Interoperability
[3] https://xapi.com/overview/
[4] (2017) https://groups.google.com/forum/m/#!topic/jupyter-education/IVD2oxKps3Y
[5] https://nbgrader.readthedocs.io/en/latest/plugins/export-plugin.html
[6] https://github.com/jupyter/nbgrader/blob/master/nbgrader/docs/source/plugins/export-plugin.rst
[7] (2016) "Learning Management System (LMS) and Jupyter"
https://groups.google.com/forum/m/#!topic/jupyter-education/SKjoIexRPa8

Greg Werner

unread,
Nov 28, 2019, 11:41:30 AM11/28/19
to Wes Turner, Teaching with Jupyter Notebooks
Hi Wes, we have had some success with exporting data using [6] to then post those values to the LMS using both LTI 1.1 and LIT 1.3. Actually we found this step to be quite simple, where we spent more time was with creating a custom authentication class to sync student, teacher, course, and group data: https://nbgrader.readthedocs.io/en/stable/configuration/jupyterhub_config.html#custom-authentication.

There may be a better way to do this, but basically these are how we got things to work:

- Focus on LTI 1.3 as it provides better authentication, authorization, and data exchange mechanisms.
- Once the user is authenticated use the JupyterHubAuthPlugin to establish permissions based on groups.
- Enable / disable nbgrader extensions based on the user’s roup membership by configuring user environments.
- Update the instructor’s Notebook to include an option to send grades in batch to the LMS, once the auto/‘manual grading tasks have completed.

Our current implementation is somewhat opinionated due to how manage deployments etc but will do what we can to create a more generic approach to share the docs/code to the upstream nbgrader repo before the end of the calendar year.

--
You received this message because you are subscribed to the Google Groups "Teaching with Jupyter Notebooks" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jupyter-educat...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter-education/CACfEFw_e789bJHQTG8%2BjK9a9qTibDi-9s9xToCa3q%3DATMfRFQQ%40mail.gmail.com.

Wes Turner

unread,
Nov 28, 2019, 12:39:25 PM11/28/19
to Greg Werner, Teaching with Jupyter Notebooks


On Thursday, November 28, 2019, Greg Werner <werne...@gmail.com> wrote:
> Hi Wes, we have had some success with exporting data using [6] to then post those values to the LMS using both LTI 1.1 and LIT 1.3. Actually we found this step to be quite simple, where we spent more time was with creating a custom authentication class to sync student, teacher, course, and group data: https://nbgrader.readthedocs.io/en/stable/configuration/jupyterhub_config.html#custom-authentication.
> There may be a better way to do this, but basically these are how we got things to work:
> - Focus on LTI 1.3 as it provides better authentication, authorization, and data exchange mechanisms.
> - Once the user is authenticated use the JupyterHubAuthPlugin to establish permissions based on groups.
> - Enable / disable nbgrader extensions based on the user’s roup membership by configuring user environments.
> - Update the instructor’s Notebook to include an option to send grades in batch to the LMS, once the auto/‘manual grading tasks have completed.

Is there or could there be a 'sync' button in the formgrader web UI?
'Sync' is likely an asynchronous task that may lag or fail (which CLI users easily handle)


> Our current implementation is somewhat opinionated due to how manage deployments etc but will do what we can to create a more generic approach to share the docs/code to the upstream nbgrader repo before the end of the calendar year.

Outstanding, thanks! Docs on how to configure LTI 1.3 would be cool to have whenever

There are likely at least a handful of undocumented methods for achieving this grading to gradebook workflow optimization?

Philip Austin

unread,
Jan 13, 2020, 11:31:00 AM1/13/20
to Teaching with Jupyter Notebooks


On Thursday, November 28, 2019 at 9:39:25 AM UTC-8, Wes Turner wrote:

Anotther link for those using the canvas LMS -- the R package r-exams which does autogeneration of problems written in Rmd has a working canvas exporter:

http://www.r-exams.org/general/cran_release_234/

we've been using this with jupytext and r2py to put jupyter-composed questions on canvas.
 
> To unsubscribe from this group and stop receiving emails from it, send an email to jupyter-...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages