I've posted the following article to Comp.Edu. I *do* need the advice of
pr. language experts, though. And what better forum for that than the
Python list? Please bear in mind that we used Python as the first
language with CS1 this year, with no more pain than usual. (Slightly
less pain, I'm tempted to say.) For what I have in mind, crazy as it may
sound, I would like a language like Python, but, heaven forbid, with
GoTo's and alphameric labels:
From: email@example.com (Stoffel Erasmus)
Subject: Intro Progr: Historic/evolutionary approach?
Date: Tue, 16 Nov 1993 17:24:15 GMT
Summary: Is it viable to take a historic approach to intro progr?
Having marked CS1 papers recently, I started wondering about the viability
of an *impure* approach to intro programming to foster a deeper understanding
of the control structures, etc. (especially for the less gifted student).
I reason like this: many of us not-so-young ones learnt _unstructured_
programming first (say FORTRAN-2). We appreciated the elegance of
structured programming when it came along (but understood what was happening
behind the scenes). In other words, we moved from the concrete to the
Now, in enlightened times, we teach structured programming to the beginners,
and some students have a hard time recognizing the while- and for-loops as
iterations. One has to draw an arrow from the tail of the loop to the head
to emphasize that control passes back to the controlling phrase.
(Didactically very unsound, I'm sure ;-)
If one were insensitive enough to teach them the dreaded GoTo (with mnemonic
labels, of course), and then a few days/weeks later were to abstract
the `idioms' that they have seen to for/while loops, they might have a deeper
understanding of the constructs. Same with selection ...
Pushing this point even further:
If the student became comfortable with the difference between variables and
text literals in a (gasp) Pilot-like code, e.g.
T: #count out of every #n people have $colour $hair_or_eyes.
he might be able to `flip' the notation quite comfortably to produce:
print count, `out of every', n, `people have', colour, hair_or_eyes+`.'
I would love some feedback from people who have tried such an
evolutionary approach to intro programming.
Stoffel Erasmus (Erasmus@CS.UFH.Ac.ZA)
CS, Fort Hare, S. Africa