[Chicago] Python for Teachers (Pycon promo from Portland, long)

kirby urner kirby.urner at gmail.com
Wed Feb 4 20:36:06 CET 2009

So the horses are out of the gate [0] and I'm running dead last (did I
hear someone say "running"?).

Sorry Steve (he's the jockey).  Maybe there's still time to rent that blimp?[1]

Here's a link to me blog (yar!) bristling with follow-up links, re our
agenda in Portland (open source capital), getting some good results,
including from our (reputedly strong) public school system:

(meeting with Lew Frederick, our own Vernon Jordon Jr. i.e. a
respected Portland power broker)

(we have a new superintendent, sympathetic to our OS Bridge efforts to
connect K-12 to our burgeoning open source culture, attracting new
immigrants from your state etc., lots of good skills [2]).

(explaining about "yar!" for people who don't know Portland that well)

(Portland as open source capital)

So how do we motivate rank and file math teachers in the midwest to
drop those hamster-brained calculators and pick up the real deal:  a
machine executable math notation (MN per Iverson, cite

Philosophers from Leibniz through Ada and Bush (Vannevar --
anticipated Google in 1945) have dreamed of math languages wherein you
describe reality in some way, then have them automate human affairs in
some way, not to "replace" human intelligence (AI scifi, kinda dumb)
but rather to supplement and augment it (what's really the case, right
now today -- a dream come true).

"So that's where OO comes in, boyz and grrlz: the new toyz (long
anticipated logics) have arrived" -- might be our message, not
slighting the lambda calculus folk, who tend to snobberize vs. OO
(there was a time when Schemers considered OO a threat, but now they
love Ruby they tell me).

As I was posting to math.teaching.technology at the Math Forum recently:

Any school serious about grooming kids for Silicon
Forest jobs (this'd be that -- Greater Portland,
spreading to Bend and Ashland to the south, Redmond to
the north (Space Needle an icon) [1]) is going to be
phasing in some executable math languages to supplement
the typeset ones (e.g. Ruby, Python... J, MathCad).

(i.e. yet more about how we teach mathematics to wannabe silicon
foresters, via Saturday Academy, Oregon Curriculum Network, LEP High,
Winterhaven etc. etc.).

Anyway, if any of you have connections in the Chicago school system,
maybe send 'em a heads up, like maybe a link to this open letter to
our new school superintendent, saved at our Wanderers Wiki?:


(plus here's some recent OS Bridge marketing, using simple Google
appengine:  osgarden.appspot.com )

What if you're not a math teacher?

Probably none of you are (although I would argue if you use Python,
you teach it, and given Python is an executable MN ("math notation" --
Iverson), you're thereby a math teacher (certifiably).

Understanding "math" in its modern 'Godel Escher Bach' sense of being
alphanumeric, not just arithmetical e.g. "regular expression" are a
valid math topic just as surely as any language game logic -- don't
let anyone tell ya different. :)

So let me assure you more private sector corporate types that our
'Python for Teachers' is *not* just for rank and file high school math
teachers who need to polish their skills (or be left behind big time).

I'm from the private sector myself, work through Saturday Academy and
PPS to spread "Pythonic math", but am effective in so doing in large
degree because of my ongoing connections to "the real world" (i.e. the
actual job market).

Anyone interested in leading a corporate training might get value from this.

My angle is anyone who *uses* Python is also *a teacher* of Python (if
only to herself), and I'm aiming to pass along a lot of heuristics
I've found to be effective (as is Steve).

For example:

We say "everything as in object in Python" which is smart, good to
show dir(1) i.e. int type "has guts", and "".join(['c','a','t'])
invokes a method on the empty string object i.e. even lowly 1 and ""
are objects in the sense of "containing smarts" (lots of blueprints go
into 'em).[3]

However, those special names (which are everywhere, especially at the
primitive level) look pretty weird, yet you need 'em for the most
basic of basics:  birth.  Talking about the __init__ constructor.

So here's my "hello world" in Pythonic Math (we're starting here, not
"getting to it in CS2" like the dinos do):

class Biotum:

    def __init__(self):
        self.stomach = []

    def __repr__(self):
        return "Biotum @ ", id(self)

    def eat(self, food):

    def poop(self):
        if len(self.stomach) > 1:
            return stomach.pop(0)

That's really early, at the "hello world" level.

It's not like we spend a year teaching procedural programming first.

It's more like we look at some YouTubes of biota (!) and then say "if
you're a biologist looking for some kind of executable math notation
to describe biota, wouldn't this make a lot of sense?"

In other words, it's not about "getting beyond procedural programming"
(who cares about that?) it's about communicating about the real world
in various walks of life, using the OO paradigm and philosophy
(remember to say "am a", not just "is a", and "have a", not just "has

Because OO, in the first instance, is about communicating to other
humans, not to computers.

It's a way of thinking about a knowledge domain, getting it formalized
in "a language that works".

Portland:  a city that works.
(dissenting view from PHP site)

Anyway, you know the rap.  It's new to parents though.  Junior comes
home saying "we programmed a Dog and Monkey in math class today, had
them eat each other" [4], and maybe mom or dad phones my office,
wondering what this is about.

"Rest assured," I say "from Dogs and Monkeys 'tis but a short step to
Vectors, Polyhedra and Numbers Modulo N -- this is a well-designed
on-ramp to a well-paying job in the Silicon Forest."

They ring off with a smile, glad Junior is getting such a relevant
education, loves doing homework (lots of YouTubes and Showmedo, in
addition to snake charming). [5]

So then I point out how special names look a lot like __ribs__, and
snakes have *lots* of __ribs__.  Kids get that.

Like here's a "template snake" (a canonical Python class):

class Snake:

   def __init__(self):  # born!
      self.stomach = []

   def __rib__(self):

   def __rib__(self):

   def __rib__(self):

(note that this is legal Python even if __rib__ isn't a special name
(it gets mangled/munged) and even if you use a lot of 'em)

You see where I'm going with this don't you:

In building reading knowledge of Python (to start, even before writing
much), we're having kids get comfortable with __ribs__ *and* the idea
that "everything is an object in Python" -- except now we can say
"everything is a Snake" (esp. w/ type/class unification), or even
(drum roll)...

...everything is a python in Python.

Pass it on....

OK, back to reading 'Web Semantics in the Clouds' by Peter Mika and
Giovanni Tummarello, just uploaded a copy to Wanderers eGroup (lots of
engineers, Cal Tech connections...).

More later then!

Kirby Urner
"A Pioneer in Open Source"

[0]  Horses out of the gate, off and running... um...

Here are the numbers as of 2/4/2008.

Hands on Python I (Harrington)    8
Faster Python Programs through Optimization (Muller)    9
Iron Python (Foord/Hartley)    4
Using Twisted Deferreds (Zadika)    2
Beginning TurboGears (Ramm)    3
Introduction to the Google App Engine (Gregoio)    5
Easy Concurrency with Kamaelia (Jacobs/McFerron)    0
Working with Excel Files in Python (Withers)    5
Hands on Python II (Harrington)    6
Django in the Real World (Kaplan-Moss)    15
Eggs and Buildout Development (Rush)    5
Geographic Information Systems  in Python (Han)    3
Intermediate TurboGears (Ramm)    3
A Curious Course on Coroutines and Concurrency (Beazley)    11
Building Real-time Network applications for the web with Twisted and
Orbited (Carter)    0
Introduction to Functional Web Testing With Twill & Selenium
(Zabinos/Peppers/Boers)    2
Python 401: Some Advanced Topics (Holden)    16
py.test - rapid testing with minimal effort (Dorsey/Krekel)    4
ToscaWidgets: Test Driven Modular Ajax (Perkins)    1
Introduction to SQLAlchemy (Ellis)    10
Hands on with Trac Plugins (Kantrowitz)    2
Data Storage in Python - An Overview of Options (Muller)    5
Python 101 (Williams)    6
Scrape the Web: Strategies for  programming websites that don't expect
it (Laroia)    7
Introduction to Object-Oriented Programming (Goldwater)    6
py.Test cross-platform and distributed testing (Krekel/Dorsey)   3
Python for Teachers (Urner/Holden)    0
Advanced SQLAlchemy (Kirtland/Bayer)    13
Using the repoze.bfg Web Framework (McDonough/Perkins)    2
A Tour of the Python Standard Library (Kumaran)    7
Python 102 (Williams)    7
Internet Programming with Python (Chun)    8

In other news, Pycon is suggesting Steve Holden and I rent a blimp to
flash ads about a Flying Circus event:  him and me doing an
experimental prototype curriculum of tomorrow as a twosome, me the
futurist Portlander, hot off the jet, and he the focused interlocutor,
keeping me on task and on target, in terms of preaching relevantly to
the actually present choir.

[2] http://mybizmo.blogspot.com/2009/01/ppug-2009113.html
(PPUG meeting, ending with beers and discussions of Illinois politics
with new immigrants from Illinois and Wisconsin).

[3] http://mybizmo.blogspot.com/2009/01/transitions-of-power.html
(cartoon about OO paradigm)

[4] ShowMeDo | Python for Math Teachers:

[5] groundbreaking Salon article, sparked little reaction because math
teachers only know how to argue about whether to use calculators or
not.  That's it:  TI or no TI, that is the question.  Something smells
rotten in Denmark, no?


(yes, it's promoting BASIC over Python -- that was just to stir up
some healthy debates I think, mostly didn't happen, just more snoring
at the switch as the trains keep vectoring down that rickety old
pre-calc track towards Calculus Mountain (insider mathspeak)).

More information about the Chicago mailing list