We also use and recommend to read The Carpentries Curriculum Development Handbook.
Previously, we’ve talked about the general concept of how to design lessons to match learners. Here, we will go through a practical process.
The basic idea is called backwards lesson design.
Why is it good to have a process?:
The whole process (copied from lesson-design) is:
When designing exercises, consider that some participants will get stuck and may want to re-join at a later exercise. In other words it is nice if exercises build up on each other but not at the cost that if participants get stuck at exercise 2, they will not be able to do exercises 3 to N.
In this episode, we first go over a process of reviewing existing lessons (that’s easier and is done more often). Then, the process of creating new lessons.
Our lessons are collaboratively developed. They are made by many people, and there is no single fixed master plan (but there should be, in the instructors or maintainer’s guide). We encourage everyone to contribute to the lessons.
We’ve made the lesson-review checklist to guide the review process.
Lessons are reviewed very often - essentially, before each workshop by the instructor of that workshop. This can be a quick review, looking at issues and fixing easy things, or more thorough.
Every so often (such as at this training), there is an extensive hackathon period of fully revising a lesson and making major improvements.
We now go to the lesson-review checklist (link above) and discuss it, instead of duplicating things here.
There is not much special to say about contributing to existing lessons: they are public and open repositories on GitHub. Make issues and pull requests (PR) about ideas and improvements.
You can most likely figure out how the different pages work. In short:
_episodes/contains the markdown files of each episode, which get automatically assembled. There is YAML metadata at the top of each.
index.mdis the main page,
guide.mdis the instructor’s guide, and
reference.mdis the learner’s reference guide.
For substantial changes we recommend to first open an issue and describe your idea and collect feedback before you start with an extensive rewrite.
Creating new teaching material is a longer process, because you should go through the whole backwards lesson design process and get extensive comments. Still, don’t feel afraid: nothing is perfect (or even good) the first time. In fact, it may be an advantage to share an imperfect lesson with others early to collect feedback and suggestions before the lesson “solidifies” too much. Draft it and collect feedback. The result will probably be better than working in isolation towards a “perfect” lesson.
We should use the backwards lesson design process, mentioned above. This is extensively discussed in the chapter “A lesson design process” of the book “Teaching Tech Together”, but we have a shorter summary for quicker reference and discussion in the CodeRefinery lesson-design manual.
Instead of duplicating information here, we will directly discuss the design process with the CodeRefinery manual.
Again, lessons are developed on GitHub.
After creating the new lesson repository, adapt
Note that the lesson template contains the repository jekyll-common as Git submodule. We do this to have one repository with common layout and styling and to make it relatively easy to update lesson repositories after layout or styling changes.
Practice backwards design
Choose a simple lesson topic and apply backwards lesson design. You won’t get all the way through, but come up with a logical progression of exercises.
- Regular expressions
- Making papers in LaTeX
- Making figures in your favorite programming language
- Linux shell basics
- Something non-technical, such as painting a room
- An instructor training for CodeRefinery
How does this compare to other lessons you have designed?
Backwards lesson design in practice (advanced)
Was this instructor training material backwards-designed? How can you tell?
The backwards lesson design process saves time and increases quality
We have checklists for reviewing existing lessons and creating new lessons