I have run two courses using Diderot: the Fall 2019 run of Practical Data Science, and the Spring 2020 edition of Graduate AI, for Carnegie Mellon University.
To help manage large courses using this platform, I developed a suite of automated scripts to automate common building and distribution tasks. This set of scripts would later be superseded by a CI-based solution suitable for large-sized courses, but they remain a great solution for small- and medium-sized courses.
If you need to run a course on Diderot, you can get these scripts on GitHub.
These course management scripts use IPython notebooks as the preferred format for course hand-outs, hand-ins, and notes. The format is flexible, easily parsed, supports image embedding, and allows Latex Math: great features for teaching computer science.
For handouts, you just need to write a single handout including prose, empty function stubs, student-side tests, and reference implementations. From that, we:
- Configure the autograder to only allow package imports for the Python standard library and everything in requirements.txt (on a per-handin basis).
- Test your autograder and reference implementation to make sure they agree.
- Provide students with the testing framework to check their handouts before submission. (This greatly reduces submission attempts.)
- Package and upload the handout and autograder to Diderot Code Labs.
- Submit the reference handin to Diderot under the TA account. (Verify that the Diderot autograder works.)
- Generate a web page with the handout and a zipped download file. (For your course website!)
Notes are similarly automatically converted to Diderot chapters and Markdown output.