Often students in these courses have minimal programming experience,
and usually no experience with Python. I do my best to teach enough
Python basics for students to get by, but I also recommend that they do
some studying on their own time, using resources other than those
included in the class. When you’re learning something new, after all,
it’s always a good idea to get a second perspective on the concepts
you’re learning, to help you better blaze a trail to understanding.
So I keep a list of (mostly) web-based resources for learning Python,
with a focus on resources that are free and open source. Instead of
copy-pasting this list into a bunch of different e-mails and syllabi, I
made a web page (this one!) as a home for the list. I plan to update
this list from time to time, as these resources become subject to link
rot (or start promoting vibe coding), or as I become aware of other
resources. Please let me
know if you have any suggestions, or if something looks out of date
or questionable.
And now, without further ado, here are some Python tutorials that I
recommend! (If you find these resources useful, please support their
authors by, e.g., buying a hard copy of their book, chipping in on their
Patreon/Ko-Fi/whatever, or just sending a grateful e-mail!)
Think
Python: thoughtful tutorial from the ground up, in Jupyter notebook
format!
futurecoder is a
straightforward introduction with an in-browser interpreter and helpful
assessments
Python cheatsheet:
a good overview of fundamental syntax and important parts of the
standard library
Practical
Python Programming is a “no-nonsense” Python course focusing on
intermediate topics (object-oriented programming, iterators, modules,
packages, etc.), with dozens of hands-on exercises
Beyond the Basic
Stuff with Python (by the same author as Automate the Boring
Stuff with Python) is a good bridge between the notebook-oriented
code I teach in my class and writing standalone Python scripts and
modules
Python for Everybody: an
extensive “informatics-oriented” introduction to Python, available in
many translations
Awesome Python provides an
up-to-date index of Python tools and libraries, organized by topic.
The official Python website has
some great documentation! Unfortunately, most of it is targeted to
experienced Python programmers, not beginners. Just the same, I think
it’s a good idea to familiarize yourself with the official
documentation, since it’s guaranteed to be canonical and up-to-date.
Here are some parts of the official documentation that I recommend:
The official Python tutorial
(primarily targeted at people with previous programming experience)
The Python
Language Reference (quite technical, but useful for answering
specific low-level questions)
Glossary (with
definitions for Python-specific terminology, good to consult if I use
some term in class that you don’t understand)