[Edu-sig] How do we tell truths that might hurt

Anna Ravenscroft anna at aleax.it
Thu Apr 22 08:25:29 EDT 2004


On Wednesday 21 April 2004 19:36, ajsiegel at optonline.net wrote:
> To me the most significant aphorism from Dijkstra's essay:
>
> "How do we tell truths that might hurt?"
> at:
> http://www.cs.virginia.edu/~evans/cs655/readings/ewd498.html
>
> is the second:
>
> """
> The easiest machine applications are the technical/scientific computations.
> """
>
> In advocating math/science explorations as the focus in introductory level
> programming education it might well sound like one in advocating some kind
> of ideologoical sense of rigour over a more gentle and humane approach to
> the subject of programming.  But if one accepts that:
>
> The easiest machine applications are the technical/scientific computations.
>
> one is simple advocating starting at the beginning.  And demonstrating and
> elucidating and empowering folks to handle the easy before one attempts to
> ask them or expect them to approach the more difficult.
>
> And for those that go no further, they will have learned to do some
> actually useful things, in a programming language..

I disagree. It's not a matter of "rigour", it's a matter of practicality and 
interest.

The technical/scientific computations are the *LEAST* useful for my life. 
Until I found out that it was reasonably easy in Python to do stuph *I* 
needed done, I had no use for programming. That's after learning pascal and 
basic 20+ years ago. The last programming I did before coming to Python was 
on my Commodore 64, and then I gave it up because it had no use to me - 
because programming was all about math - unless you're really advanced.

There are very few times in my life that I need to do scientific or technical 
computation. And the emphasis on that in programming made it hard to see past 
it to the things that I *did* want to do, or that it might be possible for me 
to do those things.

I'm not disagreeing out of a dislike for math - geometry and calculus and 
algebra are fun. (I'm even one of those crazy people who enjoys doing my own 
taxes!) But irrelevant, in most cases, to my life, outside of bookkeeping 
(which is another area I use Python - have *you* ever tried to calculate 
Italian taxes? Writing a program was easier than figuring out which invoice 
got which taxes each month...) FWIW - in a year and a half of Python, that's 
the single use I've had that I would consider at all mathematical...

> In other realms, the path to be able to do something actually useful is
> much longer.

The path isn't that long and is far likelier to keep their interest.

Teaching folks that almost any repetitive task involving text, dates, or 
numbers can be automated by writing a simple program is more likely to get 
them excited about programming than teaching them that you can add 2+ 2 or 
solve quadratic equations...

IME, most people, outside of schoolteachers and mathematicians, really don't 
*care* about math enough for it to be an incentive to learn to program. OTOH 
- things that they can apply to their lives, to make what they already do 
easier, *That* is an incentive for them to learn programming.

It's kinda like the difference between riding a stationary bike and taking a 
bicycle ride outside. Yeah, they both get you exercise, but one has a lot 
better scenery and is more likely to keep you interested than the other.

> Yes, a Literature student might be enticed to know that programming could
> be made useful in finding semantic patterns in the works of Joyce. The
> problem is that its hard.  

Yep - it's hard. And continuing to present programming that way is going to 
*keep* people away.  

So you start with something easier. 

Do a simple word count program - find out the number of occurrences of "word" 
in a particular file -a fairly simple program that shows the prospective 
learner that they can use it for things *they're* interested in, without 
having to be a wizard! Once they can do that, show them how they can turn it 
into a concordance program. 

> Much harder than using numeric and geometric 
> concepts as a jumping off point.

But more relevant to their lives and more likely to keep them interested long 
enough to be able to program something more extensive. My point is that if 
they don't care about numeric and geometric concepts - they won't jump. They 
won't *start*. They'll think, just like they always did, that programming 
isn't something that's relevant to them or that any of it that might be 
relevant is way too hard for them to do.

> I, for one, never expect to understand how to compile a pattern using the
> re module. (if I even stated that lack of understanding correctly).

The first time I did text parsing, I had never heard of regular expressions! 
In fact, I didn't know that what I was doing was called text parsing. I was 
able to just start doing it, because I knew how to describe what I wanted, 
and the steps to get there - and the rest was just a matter of plugging in 
the pieces. Teaching algorithmic thinking is crucial, imho. And teaching them 
that there *are* ways to apply this in their own lives is the other key.

Just my $.03 worth.

Anna




More information about the Edu-sig mailing list