How to Teach Programming (and Other Things)

Please comment on the plan for the next edition.

How to Contribute

We welcome contributions of all kinds, from errata to suggestions for improvements to new material. The source for this book is stored in a GitHub repository at, so if you know how to use Git, and would like to add or fix something, please send us a pull request.

If you don’t know how to use Git, you can file an issue in that repository or email the editor at Please note that by doing so, you are agreeing that we may incorporate your changes in either original or edited form and release them under the same license as the rest of this material. Please also note that we require everyone involved in this project to abide by our Code of Conduct.

Finally, we are always grateful to hear how you have used this material and how we could make it better: please email us if you have a story you would like to share.