"Publishing" to a LMS submission system?



I use R-studio server in my statistics classes (intro and intermediate). For homeworks as well as exams, my students create or edit rmarkdown documents. Currently I collect these directly from their home directories on the server for grading.

Our school uses the Canvas learning management system, that allows students to submit assignments on line, as pdf or word documents. It then allows me to grade the submitted documents on line. I was wondering if there is any way to use the publishing feature of R-studio to allow students submit their assignments directly to Canvas. Did anybody try anything like that, perhaps with a different LMS? Any success?

(My original idea was that I would collect their R-markdown documents, render them to pdf or word, and submit them on their behalf to Canvas. That should be very easy to script, unfortunately, Canvas does not allow professors to submit assignments on behalf of students.)


I'm not sure about Canvas, but there is this package that does exactly what you want - https://cran.r-project.org/web/packages/exams/index.html.


@jhlavace Could the students export and then upload their Rmd files to Canvas?

My workflow when I use an LMS for submission is have students export Rmd and html/pdf, upload to LMS. Then, if I want to actually run their Rmds when grading, I would batch download from the LMS. Otherwise just open the html/pdf output and grade.

A somewhat hacky workaround, if you don't mind their submissions to be public, would be to have them publish to rpubs and then provide a link to the published document as their homework submission in the LMS.


If you're wedded to Canvas this might not be workable, but if you are up for possibly changing your approach... I really like using GitHub for courses that use .Rmd files. I have my students develop their assignments in a single GitHub repo. With the GitHub Education upgrades, these repos are private. They are organized like so:

| DoeAssignments/
| -- Labs/
| ---- Lab-01/
| ---- Lab-02/
| -- ProblemSets/
| ---- PS-01/
| ---- PS-02/

In the YAML of each notebook, I have them include:

  github_document: default
  html_notebook: default 

This preserves the auto-generation of the html notebook on save, and on knit creates a .md I can grade on GitHub.com without (generally) having to pull their individual assignment repos. Makes grading straightforward, and I return feedback as an issue on each individual assignments repo.