[Edu-sig] Re: Switching Gears (likewise long)
Kirby Urner
pdx4d@teleport.com
Thu, 01 Mar 2001 09:00:43 -0800
I enjoyed reading about your experiences Dethe.
My trajectory was through K-2 in Portland, Oregon (where
I live today), 3rd at Junior English School, Rome (had
to wear a tie), 4-8th Overseas School of Rome (loved it),
9 (1st half) at Southeast High, Bradenton Florida (not
much fun), 9 (2nd half)-12 International School, Manila,
Philippines (fun after an adjustment period).
My first job after college was as a high school math
teacher -- 2 years (1981-82) at St. Dominic Academy
(all girlz) in Jersey City, New Jersey (geometry -
calculus + world history and a team teacher of an
honors humanities 2nd yr). This was around the time
I started getting into Bucky Fuller and his influence
over my math content started to show around then.
In college, I really got into computers, and the first
language I learned was APL. APL was my first love (in
the computer languages department). In a lot of ways,
Python takes me back to those APL days. I learned
Fortran and PL/1 later, some Assembler, SNOBOL, other
stuff, and in the 80s/90s did Xbase for pay, mostly
for non-profit social service agencies (including in
Bhutan as a volunteer), later the cardiac operating
theater -- I still have Xbase work on my plate to this
day. I was a philosophy major though, not a computer
science or engineering student. My focus was Ludwig
Wittgenstein's stuff, under the tutelage of Richard Rorty
(a big name in philo) and Vic Preller (not as well known,
but a creative genius -- just died recently).
Python takes me back to my APL days, as Python's primitives
tend to build these powerful little expressions in the
way APL's did (with the concommitant danger that one
maybe gets too cryptic, tries to pack too much in a single
line). My thought at Princeton when playing with APL
was "gee, this would have been a lot of fun in high
school", and that's my same thought with Python: a lot
of kids would really groove on this stuff, if only given
an opportunity.
My daughter is now six and went to a Montesorri pre school,
where one of her teachers is also a family friend, was
present at her birth. Now she's in a public school, but
it's a rather different kind of school, called a family
coop. The parents are expected to participate in the life
of the school to the tune of 100 hours per year, which
may involve spending time in classrooms and even teaching
content.
Coincidentally, today is my first opportunity to teach just
such a "mini-course". I have two 45 minute periods (shorter
than usual because they get some recess before gym), today
and tomorrow, with half my daughter's class, while the other
half goes to the library to learn some research skills.
I'll get the other twelve (including my daughter) down the
road.
We're going to do polyhedra 'n stuff (a little sphere packing).
Like most curricula, this school's features the cone, cylinder,
cube, rectangular and triangular prisms, sphere and three-side
pyramid. They've dropped any emphasis on classical topics
like the Platonic 5, or the Archimedian 13. Plus there's no
exposure to the more modern (1700s) generalization, captured
by Euler in the equation V + F = E + 2 (vertices + faces =
edges + 2).
Based on experience with young kids in other classrooms
(including in Bhutan and Lesotho), I know the above content
will fly, plus I have geometry video and overhead
transparencies, to supplement hands-on models. We'll
also be treating polyhedra as measuring cups and pouring
pumpkin seeds from one to the other. Mine are scaled such
that the tetrahedron will serve as the basic measuring cup
and they'll pour into other shapes to get whole number
results: cube = 3, octahedron = 4, rhombic dodecahedron = 6,
cuboctahedron = 20 -- except I'm not sure I have quite
enough pumpkin sees to fill the cuboctahedron (there's
still time to go to the store, maybe get another dried
good altogether).
Given you've studied 'Synergetics' some, you know where
all this comes from. That Fuller's pedagogical innovations
haven't been phased into K-16 at most levels (even though
this content was popular with kids when he taught it,
and many creative students thrived under his tutelage)
is of course one of my main beefs with academia. This
continued, willful ignorance on the part of academics
about one of the 20th century's createst minds is just
unconscionable.
If this were high school, and I were in charge, we'd
spend time looking at the polyhedra as objects in an OO
framework, using Python to code up the Polyhedron class,
and then subclassing the others from this superclass
(I've gone through this exercise using Xbase, Java, and
Python, with the results chronicled at my website).
The rotation, translation and scaling methods would be
defined at the superclass level, so that all subclasses
could inherit it. That's a great intro to OO, matrices
(or quaternions depending on how we choose to implement
rotation), which builds on geometry they've known since
first grade (given this is my own fantasy-world curriculum).
I'd also be using Python for number theory and other
math-related stuff before the end of high school. I just
think (Guido's?) implementation of Euclid's Algorithm for
finding the greatest common divisor of two numbers is
the bee's knees:
def gcd(n,m):
"""Euclid's Algorithm"""
while m:
n,m = m,n%m
return n
>From this, you can use list comprehension to get a list
of relative primes < n:
def relprimes(n):
"""Coprimes of n < n"""
return [x for x in range(1,n) if gcd(n,x)==1]
And the number of such primes is what's returned by Euler's
totient function:
def totient(n):
"""Number of coprimes < n"""
return len(relprimes(n))
Although, if you know the prime factors of n, there's a
faster way to compute the totient:
def totient(n):
"""Totient if prime factors known"""
factors = unique(primes.getfactors(n))
result = n
for f in factors:
result *= (1 - 1.0/f)
return result
Which leads to another of Euler's famous generalizations,
and Fermat's special case Little Theorem, a special case
of Euler's:
Euler: If gcd(m,n)=1, then m^totient(n) mod n = 1
Fermat: If gcd(a,p)=1, p is prime, then a^(p-1) mod p = 1.
Testing in Python:
>>> totient(561)
320
>>> gcd(561,2)
1
>>> pow(2,320,561) # = (2**230)%561
1
I agree with you that the curriculum has a lot of
antibodies protecting it from major change. But major
changes have and do occur. We had 'new math' and now
'new new math' etc. Kids don't have to learn Latin
or ancient Greek any more (although I'll be teaching
some greek roots -- tetra, hexa, octa, icosa -- this
morning). For better or for worse, reforms do sweep
through the curriculum, always in response to various
pressures.
What gives me a lot of leverage today is the internet,
which is able to reach students independently of the
bureaucracies and text book fiefdoms. I can do more
than just wring my hands over the sorry state of the
curriculum -- I can source curriculum and share it with
a global readership (I get emails from all over, and
that's great).
Another source of hope is television. Math education
on TV is conventionally of really poor quality, but it
doesn't have to be that way. The cultural influences
at work here are much bigger than just what goes on in
in the math ed community. I think we can realistically
expect TV programming that sparks a feedback loop which
helps to galvanize the change process.
Lastly, I'm happy that the math curriculum overlaps the
computer science curriculum to such a large extent, as
this means the incursion of programming into K-12 provides
more opportunities to address some of the failings and
weaknesses in math class, where calculators rule. With
kids down the hall using real computers, and doing far
more interesting math-related projects with a VHLL like
Python, it'll be harder and harder for math teachers to
justify their head-in-the-sand attitude towards "math
through programming", and their luddite fixation on
graphing calculators as the be-all/end-all technology
when it comes to teaching algorithms.
Kirby