I decided to use this for the exercises of this workshop. As I went through the material to prepare for teaching, I also copied the exercises into separate
.py files for this purpose. I set them all up in a separate GitHub repository that also had a data folder. Since GitHub also allows people to download a
.zip of the repository, using GitHub to host it meant that I could keep the workflow that I’m comfortable with, including last minute updates, and still allow the learners to download a file type that they were already familiar with, since we were teaching Git after Python. I gave the learners a download link, had them unzip it, and launch the Jupyter Notebook from that directory. Then we could load an exercise with
load code/keyword. I made a Jupyter notebook on how I used Git branches to give the learners an original download, updates on day two, and post workshop content.
I have now taught three full workshops this way (SWC-python-gapminder at UCSF, DC-python-socialsci at UC Berkeley and CarpentryConnectSZA) and mini workshop based on the Python Ecology Lesson with Kari Jordan where load magic enabled us to cover enough to be interesting in only 90 minutes. Using load magic to the exercises has worked well each time. The helpers and co-instructors, many of whom have more Carpentries experience than me, have found it to be a helpful way of delivering exercises. Getting used to some features of the notebooks tends to be a little hard at the beginning for the learners. A few activities were to enforce concepts more than actually writing code, so those were best formatted as
markdown cells instead of Python cells, and switching cell types also caused some friction at the beginning. By the second half of the lesson though, most learners seem comfortable with these activities. They seem to like the notebooks, in addition to seeing that Python is powerful and I hope that the push to learn a little bit more about manipulating Jupyter notebooks makes using them in their own work more comfortable.
After Kari and I had the session at NSBE, she encouraged me to apply for a travel grant to attend CarpentryCon and I guessed that submitting an abstract would help my case, or at least justify using funds from my professional development budget at work. Also, I wanted to share this tip and consider updating the infrastructure, but I wasn’t yet sure how the community worked in order to get the proposal to the right people. I submitted an abstract to give a lightning talk on load magic as a teaching tip and present a poster on a proposal to update the infrastructure to better support this way of delivering exercises. I felt a bit of imposter syndrome, offering a tip on how to teach curriculum from an organization that was 20 years old when I had taught 1.125 workshops and suggesting to change infrastructure I had contributed to once in checkout, but everyone I had interacted with had told me it was a welcoming environment, so I did anyway.
My submission was accepted and I was awarded a travel grant to be able to attend CarpentryCon. After my lightning talk, I was invited to Johannesburg, South Africa for CarpentryConnect. At my poster, I was busy engaged in discussions and met François [Michonneau] and other members of the lesson infrastructure committee. My input was welcomed and people were excited about how we can use the technology we teach in more flexible ways and smooth the operations of a workshop. I was invited to join the lesson infrastructure committee and encouraged to submit a blog post about using load magic.
Since I’ve joined the lesson infrastructure committee, we’ve discussed my proposal, how the Carpentries could make this trick more accessible, and how it would apply to lessons other than Python. We are considering changes to the infrastructure (styles repository) so that exercises can be rendered and exported in more flexible ways. With GitHub pages and the available automation support, we have a lot of powerful tools available that can make all sorts of things happen without changing the workflow for editing the content of the lessons much, if at all. Before we start adding widgets, however, we want to know more about how the lessons are and will be used. Central to the Carpentries mission is the in-person teaching; we want the lesson infrastructure to support instructors, welcome community content contributions, and be easy on maintainers more than we want to have cool features. We’ve started the discussion with the maintainers, but we still need input from the broader teaching community to refine our plan and determine a plan of action.
Our current plan is to support at least the following:
loadmagic or opened in RStudio as a fill-in-the-blank or pseudo-code-styled exercise;
We look forward to a discussion and learning more about how instructors use the exercises currently and what they wish they could do, so again, I encourage you to join the conversation.
Community CarpentryCon Infrastructure Learners