See p5.js Course Materials and Physical Computing.
Callgraph runs in a Jupyter notebook. It adds call graphs to functions.
http://selection-wheel.osteele.com (source) spins a wheel to select a student (or team) name from a list of names. Repeat until all the names have been chosen. I use it to select presentation order.
https://github.com/osteele/NameShuffler performs the same function, but with an animated list instead of a wheel. It is written as a Processing sketch.
https://github.com/osteele/multiclone clones all the forks of a repository, or all the copies of a GitHub Classroom assignment. It's very fast. It renames the files to incorporate the students' GitHub handles into the local project directory names. It creates a mr configuration file, so that you can pull (or push) all the repositories with as single command.
https://github.com/osteele/nbcollate combines Jupyter notebooks (one per student) into a single notebook that is collects all the cells that follow a header cell into a section. I use it for reviewing and sometimes presenting student work.
https://github.com/osteele/assignment-dashboard is for situations where students submit their assignments as Jupyter notebooks on GitHub. It shows a table of which students have submitted which notebooks on which dates. You can drill in to see a table of which students have answered which questions.