[Edu-sig] Creating worlds -- graphical interfaces
Sun, 06 Feb 2000 10:15:34 -0800
>I may not have been clear in my original post. I am arguing that a
>well-integrated *GUI framework* for Python that allows students to create
>GUI elements in their own programs is both pedagogically desirable and
>essential for Python's success as a general-purpose teaching language in the
I think you were clear. We're just talking about graphical
front ends versus back ends. Command line Python can be used
to create rich "3D worlds" (using VRML, Povray, Alice or
whatever) but people are used to that "control panel look"
which gives their application a GUI. From their point of
view "real programming" includes GUI design and implementation
(and they're right of course -- it does). I've written GUIs
that run real time during open heart surgery, others for a
Food Bank, an Urban League. There's a whole art and a science
to GUI design -- but is it really essential to get into all
that in conjunction with using Python in the curriculum?
I think not. Let me explain....
As a curriculum writer, it's not necessarily my goal, when
using Python, to teach programming or good program design
(Matthius is from a different school entirely on this point
-- and we need his school too). My goal is to elucidate
concepts in other disciplines (such as mathematics) by taking
advantage of the user-friendly access Python provides to the
inner guts of the CPU -- where I can take advantage of "cheap,
in bulk" operations. My focus is the knowledge domain
(e.g. geometry, number theory, the calculus, philosophy),
and not on Python per se.
The reality is classrooms are stuck with calculators, and
it's silly to move to a computer if all you get is a scientific
calculator on the screen (a graphical version of the TI). If
we're going to overcome this incredible bias in favor
calculators (and to the exclusion of computers), we need a
way to give students immediate access to the power of a
command line environment.
Right away, you can start working with character and string
data, long integers (OK, maybe DERIVE can do characters --
I know it handles long integers). Calculators can't do that.
Plus you can start outputting scripts ready to drive a ray
tracer (colorful "3D" polyhedra, just minutes away).
Calculators can't do that. OK, I see why we're using a
computer, and not a calculator. And even though programming
a calculator is possible in some models, using Python to
do is is actually MUCH easier. Case closed: we should have
been using more computers in math class years ago.
But as soon as you move into GUI design or the theory of
tail recursive function calls, you've started to lose this
focus. As a teacher phasing Python into a math context, I
have some interest in presenting Python in a good light, by
showing fairly intelligent examples of working code (so I
appreciate Tim's use of a dictionary to streamline the
Fibbo algorithm). But my students are mostly looking
beyond efficiency issues to the underlying mathematics
(notice my remark about mathematicians having no problem
with n!/k!(n-k)! -- even though that's just a fancy way
to "cancel" many of n!'s digits ("efficiency" is in the
notation, not in clock cycles (part of why my Python
"notation" contained no error checking for illegal
parameters -- do math notations do this?)).
Python is just another way of expressing concepts they're
already learning, and that we've taught for decades without
any programming language at our elbow <shudder>. They are
using a programming language, yes, but not to write full
blown applications or to understand all the fundamentals
of application design -- that'd be another course of study
 Also under the category of "user friendly" I include/
weigh the fact that Python is cross-platform and free.
Sometimes teachers as me "what about Mathematica?". I
say "Mathematica is a great program. You might find
MathCad easier if you don't need all that power. But
you can give your students valuable experience in any
powerful command line environment -- both Python and
DrScheme provide this for free". IE, let's not assume
that schools have any real budget for this kind of thing.
Maybe they will down the road, but right now, Python is
an ideal "foot in the door" kind of language (remember,
BASIC was so successful in a lot of ways simply because
it was ROM-coded in the early PC chips -- you didn't
need to buy anything extra).
 I was at one time a full-time classroom math teacher
at the high school level, plus I've worked in the math and
computer literacy text book section of McGraw-Hill. I've
taught in the talented and gifted program for Portland
Public Schools (in a program that allowed non-union
outsiders like myself to participate -- details on
request) and presented state-of-the-art math content to
public school teachers from all over Oregon at the 1997
Math Summit at Oregon State University. I am currently
doing pioneering work via my Oregon Curriculum Network,
with offices in Portland. I have a BA from Princeton
University and my thesis was entitled 'Some Thoughts on
the Philosophy of Ludwig Wittgenstein' (Dr. Richard Rorty
was my advisor).
However, I am not currently a classroom teacher, so when
I write about "my students" I'm talking about a full age
range of kids and adults who engage with me over the
internet -- more of a distance learning kind of environment.