[Edu-sig] Python for non-programmers

Kirby Urner pdx4d@teleport.com
Wed, 01 Mar 2000 17:13:45 -0800


>I like to think the PyGeo app I wrote
>http://starship.python.net/crew/kernr/PyGeo/ fits well into this category.
>You're writing actual Python code and getting immediate feedback as 3D
>graphics.

Hi Arthur --

I'd say "yes and no" regarding "is actual Python code".

Here's an excerpt from one of your modules, which you shared
as illustrative of what a student is supposed to write:

  A=FreePosition(-24.0,-12.,1.0,name='A',color=RED)
  C=FreePosition(31,-7.0,-12.0,name='C',color=RED)
  AC=Line(A,C,name='AC',color=RED)
  B=LineSlider(AC,(-7.,-14.0,-6.0),name='B',color=ORANGE)
  Cp=FreePosition(11.0,7.0,7.0,name="C'",color=RED)
  Ap=FreePosition(-16.5,-3.5,16.,name="A'",color=RED)
  ApCp=Line(Ap,Cp,name="A'C'",color=RED)
  Bp=LineSlider(ApCp,(30.0,13.0,2.0),name="B'",color=ORANGE)
  pmap=PointMap(AC,ApCp,B,Bp,density=60,color=ORANGE,name='pmap')
  p1=FreePosition(-30.0,-25.,-17,name='p1',color=GREEN)
  p2=FreePosition(31,-17.0,9.0,name='p2',color=GREEN)
  p3=FreePosition(17,-11.0,-14.0,name='p3',color=GREEN)
  ccirc=CircumCircle(p1,p2,p3,style=FILL,precision=100)
  tri=Triangle(A,C,Ap)

Certainly this is executable directly in Python, but there's
a layer between the Python language and getting results on
the screen, which is this vocabulary of geometric functions
and their properties which you've devised.

I'm not saying this is bad and/or avoidable, or that I've 
got a better way, merely that we should not bleep over the 
truth about the learning curve and make it sound like just 
knowing Python is all it would take to operate your program, 
or, conversely, that learning your program is 100% synonymous 
with the process of learning Python.  

I know Python, and yet when I look at the lines above, I 
feel someone overwhelmed, intimidated, because I have
no idea how big this vocabulary is, how much memorization
of new functions and their parameters I'm likely to 
face.  Where can I go to find out?

I think what your program needs most is on-line documentation
(on the web).  Plus a tutorial.  That's a lot of work of 
course.  But "getting something to work" is not the same
as "getting something others find usable".

I'm certainly curious about your project, as I've communicated
by private emails as well.  For example, re the above lines,
I'm wondering if:

  tri=Triangle(A,C,Ap)

refers to a class named Triangle, i.e. is tri an instantiation
of the Triangle class, with A,C and Ap passed to some __init__
constructor "behind the scenes".  It'd be cool to go to some
website and find all these "secrets" discussed -- the deeper
you get into it, the more I feel like your goal is to teach 
my Python (and I look up to you as something of a Python guru,
working at a level beyond the one I've managed to attain).

>So far I am a chorus of one who sees it as on point to what EDU-SIG is
>about.

I think your work is very much relevant to what this EDU-SIG is
about.  However, for the purposes of discussion, I think we need
to draw a distinction between:

   (a) applications written in Python that are useful to 
       students in various subject areas

   (b) applications written in Python that have "teaching
       Python" as a primary goal

   (c) non-applications (e.g. modules that run in IDLE but
       do not provide a custom GUI) that are useful to 
       students in various subject areas

   (d) non-applications that have "teaching Python" as a 
       primary goal

I realize that many projects fall somewhere in between vis-a-vis
the above categories.  Do you think it fair to say yours falls 
between (a) and (b)?  I think my approach falls between (c) 
and (d).

All chatter about your extremely interesting application aside,
I think the difference between "using Python to do X" and "doing
X to teach Python" really needs to remain front and center in
this SIG.  

It's easy to confuse the two approaches, and think that just 
because one has written this dynamite application, useful in 
schools, and done 100% in Python, that it's therefore a good 
tool for advancing the goals of CP4E.  

Maybe yes, maybe no, is what I'd say -- there's no necessary
correlation here.  

Getting back to your application, I'm thinking probably yes -- 
I think students could probably learn a great deal about 
Python by dissecting what you've done -- maybe even more 
than they'd learn about geometry.

>I'll take any feedback at this point - good, bad, or indifferent.
>

My two cents.

Kirby