Library Computer and Bookshelf

This post is a list of my recommended Python teaching resources for instructors in 2020. I received an email from a college instructor who was thinking about moving from MATLAB to Python in one of their courses. I wanted to share my email more broadly in case anyone else is looking for Python resources and doesn't know where to start. If you are teaching Python in a college or high school class, this post is for you. I've also included some resources for instructors that have experience with MATLAB but are transitioning to Python.

Python Instructional Resources

These resources are for instructors teaching college of highschool classes using Python. If you are a student or general learner, they may be helpful as well.

Python Installation on Campus

computer lab

We use Jupyter notebooks in our engineering programming classes to teach Python. At our college, getting Python installed on campus computers was the biggest hurdle to adopting a new programming language.

On-campus, we use the Anaconda Distribution of Python https://www.anaconda.com/distribution/. This distribution of Python can be installed in user-space (no administrator password needed on campus computers). Students can also download the Anaconda Distribution of Python for free or use our JupyterHub server online.

Anaconda is useful because it includes the scientific packages we use in our engineering programming classes such as NumPy, Matplotlib, Pandas, and Jupyter.

Google now has a service called Google CoLab https://colab.research.google.com/ that allows students to run Jupyter notebooks from within Google drive. Microsoft also has a service called Azure Notebooks https://notebooks.azure.com/ that allows you to run Jupyter notebooks in the cloud. Both of these services require vendor-specific logins. Our college uses Gmail and Google calendar with college email addresses, so Google CoLab is an option for us.

Text Books

stack of books

My book Problem Solving with Python 3.7 Edition is available on Amazon. I am teaching a section of our Engineering Programming course this quarter and using the book the textbook for the course. If you would like to use the book, please feel free! I am also looking for any feedback. I'll include you in the list of contributors (with your permission) if you are interested. A free version of the book is available at https://problemsolvingwithpython.com/

For my Intro to Engineering course, I constructed this book: https://professorkazarinoff.github.io/Problem-Solving-101-with-Python/. I welcome any edits. I'll add you to the list of contributors (with your permission) for any edits suggested.

Get Programming by Ana Bell is a great textbook. Dr. Bell nails the explanation part of programming. The only thing is I wish it had more end of chapter questions: https://www.amazon.com/Get-Programming-Learn-code-Python/dp/1617293784

Think Python by Allen Downey can be purchased in hard-copy or used online for free. You can check out Dr. Downey's other books on the greenteapress site as well: https://greenteapress.com/wp/think-python-2e/

Syllabi and Lesson Plans

lesson plan

The syllabus and labs we use in our ENGR114 Engineering Programming class hare linked here: https://github.com/ProfessorKazarinoff/ENGR114. If GitHub's notebook render isn't working, you can also view the syllabus and labs on nbviewer: Link

The class notes I recorded last quarter in Jupyter notebooks from our ENGR114 Engineering Programming class can be found here: https://github.com/ProfessorKazarinoff/ENGR114-2019Q4. Or see the notes on nbviewer: Link

I found this GitHub repo for another Engineering Programming class. This course uses NumPy and Matplotlib like we do: https://github.com/karlvandesman/Python-Course

A set of Engineering Computations Modules by Lorena Barba and Natalia Clementi are posted on GitHub. The authors mention they are happy to have instructors use their resources in full or partial form: https://github.com/engineersCode/EngComp1_offtheground

Learning Resources for Instructors

lesson plan

If you are an instructor and learning Python programming, below are a couple of resources I used to learn Python. I taught MATLAB at the college first, so I had some MATLAB experience before learning Python.

Books

beach book

Python Data Science Handbook by Jake VanderPlas: https://jakevdp.github.io/PythonDataScienceHandbook/ also on [Amazon].(https://www.amazon.com/Python-Data-Science-Handbook-Essential/dp/1491912057)

Effective Computation in Physics by Anthony Scopatz and Kathryn Huff: https://www.amazon.com/Effective-Computation-Physics-Research-Python/dp/1491901535/

A list of free Python books was compiled by GitHub user pamoroso. This is a great list as all the books are free to read: https://github.com/pamoroso/free-python-books#list-of-free-python-books

YouTube

tv pic

Corey Shafer's YouTube Channel: https://www.youtube.com/watch?v=YYXdXT2l-Gg&list=PL-osiE80TeTskrapNbzXhwoFUiLCjGgY7

Sendex YouTube Channel: https://www.youtube.com/watch?v=eXBD2bB9-RA&list=PLQVvvaa0QuDeAams7fkdcwOGBpGdHpXln

Microsoft's Python for Beginners Tutorial Series: https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6

Blogs

blog pic

My blog, the one you are reading right now: https://pythonforundergradengineers.com/

Real Python Blog: https://realpython.com/tutorials/basics/

The PyImageSearch blog by Adrian Rosebrock: https://www.pyimagesearch.com/

Practical Business Python by Chris Moffitt: http://pbpython.com/

A running listing of Python blogs. I usually read PlanetPython a couple of times a week: https://planetpython.org/titles_only.html

Podcasts

I found listening to podcasts helped me get familiar with Python-specific jargon. Virtual Envs, Distribution, Web Framework, API... those sorts of terms.

blog pic

Michael Kennedy's great podcast Talk Python to Me: https://talkpython.fm/

Michael Kennedy and Brian Okken's weekly rundown of Python news on Python Bytes: https://pythonbytes.fm/

Brian Okken's Test and Code, more on testing side, but usually Python related: https://testandcode.com/

Kelly Parades and Shawn Tibor's Teaching Python Podcast. Shawn and Kelly are both primary school teachers and share great insights for instructors: https://www.teachingpython.fm/

MATLAB to Python

blog pic

If you know MATLAB, but what to try Python in your class, below are some resources to look into.

Real Python's long blog post comparing Python and MATLAB: https://realpython.com/matlab-vs-python/

SciPy (the folks that make NumPy and Matplotlib) have a docs page describing how to use NumPy if you are a MATLAB user: https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html

This is an older resource, but I still found this table helpful. Maps MATLAB commands to NumPy commands: http://mathesaurus.sourceforge.net/matlab-numpy.html

This GitHub repo is another place to check out a MATLAB to Python comparison: https://github.com/PythonForMatlabProgrammers

Summary

This post contained a listing of different Python resources for college or highschool instructors that I use and recommend. As an instructor, you can learn about Python in a bunch of different ways such as books, YouTube, Blogs, and Podcasts. I hope you find some of these resources helpful.