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.