

Ask HN: How would you teach Python? - yourabi

If you had the chance to teach a sequence of Python courses (intro, inter, advanced) to a reasonably savvy audience (PHP/Java devs) in a business setting and one non-technical geared towards business folk what topics would you cover in each category?<p>What modules from the standard library would you cover and what external libraries? Would you cover web frameworks like Django and Pylons?<p>What Python code would you pass out as good examples of idiomatic python?
======
yan
The way I handled a very similar situation is as follows: I went to the
official Python tutorial and took a note of every major feature with a few
examples from my old code and code I found in open source projects. I then
went to a conference room with a lot of people, and hooked up my laptop to the
projector with a Python REPL. I then went through all major topics in the
tutorial interactively with people asking me as I went along to implement some
examples. I tried underlining what made something 'pythonic' and what didn't
as I went along. People who had laptops were going along and bringing up
issues they were having.

People who attended commented on liking it.

I really despise learning and teaching via slides. I think an interactive
coding session is very valuable.

------
physcab
I'm a newbie to Python, but I think the answer will depend on the specific
interests and implementations for the group.

Are they looking to implement mathematical techniques? Then perhaps NumPy and
SciPy deserve a mention. Are they interested in visualization? Check out
Matplotlib.

If I were teaching the course, I would choose a couple different problems that
are common to the people in the group. Then show them the tools they would
need to solve it.

------
stonemetal
the intro class would more or less cover the python tutorial. Inter would
cover how to mix and match language features (classes and generators, C
interop) to build more sophisticated projects. Advanced would be loosely
defined personal projects external libs, alternate implementations etc.

