Would You Take This Class?
I plan hope to spend February and March revising
the Python version of Software Design by Example.
I’m thinking about creating a slide deck for each of the chapters
to help me do that—boiling things down to point form
helps me see what’s out of order or missing entirely.
The best way to test a slide deck is to teach from it,
so I’d like to know who’d be interested in
an hour-a-week online class that taught participants
how to build a dozen applications from the list below in Python:
- a testing framework
- an interpreter
- a versioned file backup system
- a file cache
- a dataframe
- an object persistence framework
- a binary storage framework
- a build manager
- a static site generator
- a page layout engine
- a text editor
- a web server
- a package manager
- a regular expression matcher
- a regular expression parser
- a style checker
- a virtual machine
- a debugger
The cost would be a donation equivalent to a day’s pay to a mutually-agreed charity. Breaking that down:
-
I’m not trying to make money from this, but I’ve learned the hard way that participation in free classes drops off dramatically (life gets in the way of good intentions).
-
I want to make the lessons accessible to as many people as possible, so “a day of your salary” in exchange for a dozen hours of instruction (plus online chat outside class, feedback on homework, etc.) seems a good way to adjust the cost automatically.
-
The charity has to be one we agree on because you might want to support causes I’m uncomfortable with and vice versa.
If you’re interested, please let me know; if a dozen people are willing to commit, I think it would be a lot of fun.
Who Is This Class For?
These three personas define this class’s intended audience:
-
Aïsha started writing Python in an undergrad geology course. After spending three years creating ever-more-complex Jupyter notebooks she wants to learn how to build packages that other people can use. This material will fill in some gaps in Aïsha’s programming knowledge and teach her some common design patterns.
-
Rupinder is a computer science undergrad. He has learned a lot of theory, and uses Git and unit testing tools in assignments, but doesn’t understand how they work. This material will give Rupinder a better understanding of those tools and of how to design new ones.
-
Yim teaches courses on full-stack web development and software design. They are happy with the former, but frustrated that books about the latter are so abstract and use examples that their students can’t relate to. This material will give Yim starting points for a wide variety of course assignments.
Slicing another way, participants should be able to:
-
Install Python and run Python programs from the command line.
-
Write Python programs using loops, arrays, and functions, and have some experience building or using classes.
-
Create static web pages using HTML.
-
Use Git to save and share files. (It’s OK not to know the 90% of its commands.)
-
Explain what a tree is and process one recursively. (This is the most complicated data structure and algorithm we don’t explain.)