Designing a New Novice Python Lesson
This post originally appeared on the Software Carpentry website.
Last November, I volunteered to pull together a new full-day lesson on Python suitable for people with no previous programming experience. It has taken longer to come together than I expected, but that’s partly because I saw it as an opportunity to create a full-length example of the “backward” lesson design method we teach in the instructor training class.
What we have so far is in this GitHub repository, which is rendered at this site. We would be very grateful for input: if you think crucial topics have been left out, please say so, while if there’s stuff that could be removed or re-ordered, please say that as well.
The most important part of this lesson right now is the design page, which describes the process used to date, the assumptions, the desired results, and the learning plan (with time estimates); please read this before diving into anything else.
This is an experiment. In the past, the Carpentries have created new lessons by taking something written primarily by one person and polishing it, or by convening a hackathon to thrash out the “what” and “how”. We would like to see whether creating a skeleton with an explicit design rationale, crowdsourcing its refinement, and then putting prose on its bones can be a useful complement to those methods. To keep us all pulling in the same direction while we figure that out, please:
Give feedback via issues or pull requests, not on this mailing list. (See this thread for example of such a discussion.)
Check to see if someone has already started an issue or pull request about a topic before creating a new one. (Feel free to edit the titles of existing issues and PRs to make them more descriptive if need be.)
Stick to one topic per issue or PR; if the discussion wanders onto a new subject, feel free to create a new issue and link to it. Please also feel free to replace one heterogeneous issue with several more focused ones.
Remember that nothing is free: everything takes times to teach, and the total time we have for the lesson and exercises is fixed, so if you want to add something, you must tell us how long you think it will take and what you would remove to make room. (“We’ll just add a bit of X to Y” is cheating…)
Do a better job than I have of relating exercises back to the gapminder data set.
Thanks to everyone who has contributed so far, and thanks in advance to everyone else for their help.