I’m happy to announce PlutoTeachingTools.jl, a collection of small functions to make it quick and easy to enhance tutorials, lab/homework assignments, and presentations. The best way to see what it could do for you is to check out the example notebook.
Examples of useful functions included:
- commons alert boxes (
correct()
,almost(md)
,keep_working()
,still_missing()
,hint(md)
) - common error boxes (
var_not_defined(sym)
,func_not_defined(sym)
) -
Foldable(str,md)
,protip(md)
andaside(md)
for extra information or tangents -
latexify_md(var)
andwrap_tex(str)
for including \LaTeX-formatted expressions in markdown -
TwoColumn(l,r)
andThreeColumn(l,c,r)
for comparing figures, equations, code blocks, etc. -
ChooseDisplayMode()
providing checkboxes to enter/leave Full Width Mode and/or Presentation mode - rexporting @ingredients from PlutoLinks.jl for including include code from a local file, module.
Why put these in a package?
By putting these functions into a package
- Students are less likely to be distracted by UI code that’s not intended to be part of the current lesson.
- Instructors don’t have to copy and paste so much.
- Notebooks are smaller and load more quickly (thanks to precompilation)
- Others can contribute to improving code and adding new functionality.
- If a new version of Pluto changes something that breaks one of the HTML/CSS hack, then it’s easier to update old notebooks by updating PlutoTeachingTools, than by manually updating code in notebook.
Future
I found an earlier version of this package useful during a previous semester and hope it’s useful to others. I encourage others to improve and/or contribute new functions that are of value to other educators. PRs are welcome. I’ll aim to merge clean PRs that fix bugs, add/improve documentation and/or add new features on a rolling basis. However, I will try to hold off on any PRs that would result in breaking changes until mid-December (i.e., after my Fall semester ends) and again between mid-January and mid-May. In any case, please be patient, as this is merely a side project.
Acknowledgements
A bit thanks to Fons and the other developers of Pluto.jl.
Many functions are merely code borrowed from modules and/or homework assignments from the excellent MIT course, Introduction to Computational Thinking
Math (Spring 2021). Other functions were adapted from various open-source packages and discussions in various issues pull requests (see code comments for specific credits).