[Edu-sig] Creating worlds -- graphical interfaces

Kirby Urner pdx4d@teleport.com
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
>long term.

Jim --

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.[1]

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 



[1] 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).

[2] 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.