Date: Apr 19, 2013 3:24 PM
Author: kirby urner
Subject: more about "generators" (math learning tool)

I've been a voice here for using the free and open source tool kit a
lot more in math class, not because I want vocational IT topics to
swarm over a defeated math corpse, but because math is alive and well
in silicon and the civilization our students inherit needs fluency /
literacy in this area i.e. "maths" has become this new thing as well.
Or call it STEM.

Many of the new math languages come with a "chat window" where
interaction with the interpreter means a kind of dialog, with one side
played by "the machine" (i.e. the logic) and the other by the human,
perhaps the designer of the language (e.g. Iverson of APL), or a
contributor (e.g. Tim Peters to Python), or more likely as an average
user of tools (like me). We have hardware tools, and we have software
tools.

At the Python chat window prompt, you may define a generator, which is
like a function except instead of returning and forgetting everything,
it "yields", meaning you start with an object that you nudge. I like
to call it the can you kick down the road, calling up pictures of
Ernest Hemingway.

>>> thegen = Bernoulli( ) # start with an object...
>>> next(thegen) # that you nudge...

Fraction(1, 2)
>>> next(thegen) # and nudge again...
Fraction(1, 6)
>>> next(thegen)
Fraction(0, 1)
>>> next(thegen) # ... like kicking a can down the road
Fraction(-1, 30)

Yes, there's lots more to say about Bernoulli numbers, and we wouldn't
get to that just as the generator was being introduced. In a well
designed learning program, you would have a long on ramp through
functions first, in parallel with like-a-Dolciani treatment (of sets,
functions, relations, composition of functions, inverse functions, in-
/ sur- / bijective), then get to generators. The first ones would be
simple "gnomon like" figurate and polyhedron growth sequences, like
square and triangular numbers, like cubic numbers, like cuboctahedral
numbers 1, 12, 42, 92, 162...


I've been recently reminded to promote generators by my colleague
Raymond Hettinger, likewise with the Python community and presenter of
one of our keynotes at this year's US Pycon in Santa Clara. In the
endnotes, I give a link to a blog through a faculty page that links to
Raymond's talk. I also give a pointer into the Chipy mail list where
generators of Bernoulli, Gregory numbers, and digits of pi are given.

The last is of murky (to me) origin and I've only personally verified it
against published sources to 1000 digits.

Kirby

Endnotes:

Python Generators (Wikieducator):
http://wikieducator.org/PYTHON_TUTORIALS#Generators

Recap of Pycon 2013:
http://blog.oreillyschool.com/2013/04/the-kirbster-reports-back-from-pycon-2013-not-all-scripting-languages-are-equal.html

Chipy Archives:
http://mail.python.org/pipermail/chicago/2013-April/011003.html

re Hemingway:
http://worldgame.blogspot.com/2009/11/kicking-can-down-road.html
(shows cuboctahedral numbers, graphic by me using free open source tools)