[Edu-sig] RE: articles of possible interest

Jtsswim@aol.com Jtsswim@aol.com
Sun, 30 Apr 2000 13:00:02 EDT


In a message dated 4/30/2000 2:59:45 AM Eastern Daylight Time, 
dscherer@cmu.edu writes:

> > Hmmm. I think we're diverging on the issue of the end goal. You seem to be
>  > assuming we're aiming to teach people to be programmers. I'm not sure
>  > that's the goal in and of itself... my personal take is programming as a
>  > means to greater control and understanding in an IT-dominant world --
>  > 'literacy', if I can use that word.
>  
>  I think the goal is to put tools in people's hands.  Not to make them
>  professional programmers or expert software engineers.  Just to give them
>  skills that they can use and build on.  Someone who has only programmed in 
a
>  MOO just isn't going to apply the skills they've learned to a problem that
>  pops up in their life.  Someone who takes a course that does (for example)
>  some Python MOO programming, some Python graphics programming, and some
>  Python Internet programming can!
>  
>  It's an incredibly ambitious goal to try to get "Everybody" to learn a
>  programming language.  Getting everyone to learn two is probably just
>  impossible - so I'd like to push the Right Thing.  Everything related to
>  CP4E has to be looked at in that light: choose your battles.
>  
>  > And if that's the goal, then a language that is very wide in domain scope
>  > may not be ideal... one with a certain degree of domain-specificity may
>  > be preferable. I think we've seen on this list many arguments for why
>  > Python is a better choice than C++ on those very grounds. The nice thing
>  > about Python is that it is very well suited to the kinds of Internet-y
>  > things that are hot these days -- parsers and GUIs and CGIs and stuff 
like
>  > that. The very things that we wouldn't use C++ for because it's too 
darned
>  > general.
>  
>  Python is a better choice than C++ because it is easy to learn, and because
>  it is a more useful tool for casual programmers.  There is nothing
>  "domain-specific" about Python.  Anything a nonexpert can do in any
>  programming language, they can probably do with Python given some
>  appropriate modules.
>  
>  C++ may be at the opposite end of the "power" spectrum from MOO, but 
someone
>  with a year of C++ instruction is probably in the same position as someone
>  who has played LambdaMOO for a year.  They've learned a lot - but until 
they
>  learn more, they can't *do* anything.  In practice, C++ is useless in the
>  hands of anyone but an expert.
>  
>  > MOO is a further narrowing of domain, and I'm going to invoke
>  > Bruckman's work again to point out the efficacy of a very tightly-coupled
>  > language/application pair. She's got 9-year-olds programming not because
>  > you can create this or that data structure in MOOcode, but because you 
can
>  > do something that's immediately meaningful within that *cultural* context
>  > -- a pet dog 'bot or whatever -- in not too many lines of abstraction.
>  
>  Bruckman's work is an incredible step.  My hope is that, since Python is so
>  remarkably easy for a general-purpose language, her basic approach could be
>  used to teach Python, which is a much more directly useful skill.
>  
>  > Somebody the other day wrote here very eloquently about the line between
>  > interface and implementation.
>  
>  Thank you; that was me :)
>  
>  > And I'll agree -- if we had an entirely Python-based MOO, that would be
>  > wonderful, but I'm not sure it's the most important thing on the agenda.
>  > But Pavel Curtis' MOO succeeds by keeping the implementation layer very
>  > thin, and letting most of it happen up above, in MOO code, so the line
>  > between implementation and interface remains, in practice, fairly fuzzy
>  > there too.
>  
>  MOO code is still only good for making more MOO.  Having invested expensive
>  time learning that language, you can't use it to script a graphics engine,
>  because there isn't one in MOO.  There are several for Python.  You can't
>  script a web page, you can't draw a graph, you can't control your mail
>  client.  Theoretically all of these things could be integrated with the MOO
>  language, and perhaps a few of them have, but Python is a far better tool
>  for that sort of thing.  You wouldn't choose MOO to write a symbolic
>  differentiator in calculus class or an orbit simulator in physics, but both
>  of those would be accessible projects for Python-literate students.
>  
>  Of course, there's a great danger that even people who learn Python won't 
go
>  on to do these things.  One of the big goals of CP4E needs to be connecting
>  its "graduates" to the resources and community they will need when they ask
>  "can I use Python to do *this*?"  That's another place where I think a
>  "Python MOO" could serve - if there were a centralized server like Moose
>  Crossing for Python, Python experts would surely gather there.  I think 
that
>  a world implemented and immediately extensible in Python would be a great
>  place to learn, teach, and talk about Python.


I agree, but why use some integration of Python with something else when 
Python itself is easy enough to learn without dumbing it down.  The idea of 
CP4E is to allow someone after a class or two to be able to write a program 
which solves a problem such as a mathematical expression or a game which will 
allow his/her friends to play and maybe even wow at his/her ability.  The 
game would not even need to be graphical.  I know of dozens of Computer 
Science I and II students at Yorktown who use a non-graphical Linux prompt 
(vim) for programming python over something like GNOME's gedit, or windows 
notepad.  

When they need to see if something will work they test in the interactive 
interpreter and then see their mistake.  They then easily fix it because they 
saw an error, or if they don't understand they check their book online 
(Downey, Elkner and Zadka; How To Think Like a Computer Scientist -- Python 
Edition available at http://yhslug.tux.org/obp/thinkCS/thinkCSpy/index.htm).

This book is a translation from a C++ version for the US Advanced Placement 
class.  First, it is very easy to understand because the writer is a teacher 
NOT a programmer.  It also allows an easy transition to the higher class 
because the styles are similar.  In addition there are students who just sit 
down and learn Python on their own because they had taken Computer Science I 
and II when the Language in use was C++.  I actually happen to be one of 
those.  Right now I am learning, Python, Zope/DTML, and Networking all in 1 
class at Yorktown.  This a choice a finished "CP4E" Student could go to, but 
this class is flexible because the student creates their curriculum by 
keeping a webpage such as http://yhslug.tux.org/bus_cs/csc/home/jason_straw 
which gives a set of goals and a set of accomplishments.  

For More Information on any Computer Science Classes at Yorktown see:
     http://yhslug.tux.org/bus_cs/csc/
For More Information on Yorktown High School's Open Book Project; Including: 
      How to Think Like a Computer Scientist.
      HTML Programming and
      Python Resources see:
     http://yhslig.tux.org/obp

To Learn about Yorktown High School's Linux User Group see:
     http://yhslug.tux.org

To contact the Computer Sciences Department at Yorktown send mail to:
jelkner@yorktown.arlington.k12.va.us or
jstraw@yorktown.arlington.k12.va.us

|----------------------------------------------|
|Yorktown Webmaster                 Jason Straw|
|jstraw@yhspatriot.yorktown.arlington.k12.va.us|
|Please quote me in your reply                 | 
|#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-|