[Edu-sig] Re: Losing the Plot

ahimsa ahimsa@onetel.net.uk
24 Jan 2003 22:07:42 +0000


On Thu, 2003-01-23 at 13:40, Kirby Urner wrote:

> People have taken the broad mission of CP4E (computer programming for
> everyone) and run with it in various directions.
> 
> One of the most obvious directions is into the schools.
> 
> And there you get a fork in the road, with most heading towards the computer
> science curriculum, but others of us exploring the role of programming
> (and other modes of computer use) in other parts of the curriculum as well
> e.g. in math class (there's a tradition here too of course, which precedes
> Python -- Seymour Papert's Logo initiative for example).
> 
> Also, under the broad heading of "school", there's this question of levels
> or target audience -- are we talking college, high school, earlier? or
> maybe adult education?  All of the above no doubt.  But each individual
> will have their bias/strength.
> 
> What I learned about from Jeff Elkner's posts and web pages over the years
> (he introduced Python to high schoolers at his school -- also Linux based),
> is the importance of a text, at least something on-line that's printable,
> if not a bound text book.  He uses 'How to Think Like a Computer
> Scientist', which he adapted from the original to work with Python.
> This work is on-line.
> 
I understand Tim Wilson (also on this list) does so too with his work at
Henry Sibley (sorry Tim - don't mean to speak for you). 

> I had recent discussions with a teacher casting about for a language
> to use in a computer intro course (high school level).  He was drawn
> to Scheme, largely on the strength of this resource: http://www.htdp.org/
> (How to Design Programs), which is indeed the kind of thing a teacher
> looks for when designing a course.  He had every right to be excited
> about it.

I am presently printing off the HTDP book in installments and have read
snippets of it and it does seem pretty good. I believe that the exemplar
language is Dr.Scheme isn't it - a variation of Scheme. I was thinking
of downloading the language and its associated files and playing around
with it. I probably will, once I've finished printing off the text. I
must be cautious however and not rush madly from one thing to the next,
and I think that is one of the values of a more formalised instruction
process. On the Feb 4th I start with an eight week course in C
programming, which I'm looking forward to as that will be the first time
I have ever attended any formal instruction in computing.

> I told this teacher that I thought highly of Scheme (which I do -- it's
> always on my list as a candidate intro language) and its educational
> materials, but that it's also my view that an intro course (especially
> an intro course) should look at (at least) two languages, in part
> because it's in comparing and contrasting them that some of the
> commonalities leap to the fore -- helping to bring home some of the
> more abstract concepts (flow of control, named functions, parameters,
> data structures ...).

I understand what you mean here: this has become more apparent to me as
I read more, and especially more widely (e.g. Sturcture & Interpretation
of Computer Programs, and Foundations of Programming) because although
SICP is written using Lisp as the example and FoP cuts across languages
but focuses on Basic, Pascal, and a bit of C. Certainly flow of control,
declarations, data abstractions seem to be themes that surface again and
again. Much of it leaves me in the dark, but since I don't need to swot
the material that deeply it gives me the opportunity to get more of an
overview of generalities which is quite useful.

> Beginners will better appreciate the world they're entering if they get
> exposure to some of the variety that's out there (nothing like a couple
> hours with J to blow one's mind re the stuff people find useful).
> 
> I recommended Python as a good candidate for a second language, in part
> because, unlike Scheme, it really makes the class/object model accessible
> right at the outset (with the everything-is-an-object paradigm -- with
> users rolling new types of their own).
> 
> Although maybe not precisely CP4E's official intent, I look at "computer
> programming for everyone" as meaning more than everyone learning Python.
> Python is a good way to get *access* to programming, but then you find
> yourself learning all kinds of little languages, from Lego Mindstorms
> to some JavaScript to your calculator, to programming your VCR.  And
> this is actually in harmony with Python's goals as a language -- it's
> a "glue language" (i.e. "works well with others") and also an "API
> language" (often used to bind an application's functionality to some
> syntax scriptable "from the outside").
> 
> I emphasize the above because I think it's possible for CP4Eers (people
> who've taken on this mission) to be pro Python without being tiresomely
> negatory towards all other languages, thereby falling into one of those
> deep "language war" wells which dot the internet landscape like so many
> vortices from hell (loud sucking sounds).  It's not about Python OR
> Scheme or Python OR C# or Python OR Java.  It's about Python AND _____
> (fill in the blank, with as many languages as you wish).

Good point - I appreciate the inclusivity.

> That being said, it makes sense to play up Python's strengths.  No need
> to be shy.
> 
> Lots of CS teachers are indeed moving to Python.

> There's a question here as to whether programming mirrors our thought
> process or whether, after we program for awhile, our thought process
> starts to take on some features of programming.  Certainly it's a
> great source of metaphors.

Indeed it is.

> The books usually say "objects" (in the programmed sense) are metaphors
> for objects in the real world i.e. the problem space is modeled by the
> solution space in terms of objects.  But it works the other way too:
> getting used to thinking of composition and inheritance affects the
> way you see the real world (suddenly, that cell phone "really is" a
> subclass of the more generic telephone class, and so on).

I come from a psych and philosophy background, and this taps into a
whole bunch of issues from those fields - the notions of 'reality' and
the constructions of reality, the idea/image or simulcra and the whole
question of representation, ... . The lens of language (non-computing)
inform the way that we perceive and interact with our worlds
(introducing the ideas of discourse and interpretive frames, for
example), so it makes good sense that when one learns computing language
as a means of representing 'reality' (putting to one side the important
questions about that particular concept!), the 'world' begins to
'resemble' (or perhaps more germanely - becomes 're-assembled'!)
according to the codes of reference of that language. In philosophy, one
of the issues has been the extent of interleaving between concepts and
that which they are said to represent: when we have a concept for
microscopic particles (e.g. virii or bacteria) it is easier to 'see'
them with a microscope. The beauty of a well-written program does not
become apparent unless one knows what one is looking at. Before Object
Oriented Programming, the notion of using objects was foreign to
programmers; once upon a time, it was unheard of not to use 'goto' in a
program; now it is almost bad manners to use 'goto'. 

> Good thing my dog here overrides some of those wolf methods, with more
> domesticated versions.

LOL - some inheritance features *should* be surpressed!!

> Shouldn't programming be taught hand-in-hand with mathematics, which is
> already so vested in "algorithms"?

Indeed - math has made a science of the algorithm. Yet I can't help but
wonder whether or not it is the emphasis on math and such technicality
that tends to leave many feeling excluded from (or reluctant to attempt)
programming. Consequently, this emphasis might have a tendency to elide
the creativity and the *art* that is also a seemingly key aspect of
programming. Perhaps then, both and ... altho' the relative time of
introduction might be an important consideration.

> PyCrust is cool.  I've used it with pleasure.  I should find the latest
> version and play with it some more.
> 
> Kirby

Now that Patrick has given me a virtual road map to get it, I too will
make a note to play around with it.

Thank you Kirby for answering my request for info with such a generous
response.
All the best
Andrew
-- 

________________________%%%%%%%%%%%%%%%%%____________________________

Proudly sent using Ximian Evolution 1.2.1 on a Linux Red Hat 8.0 box.