Problem with recursion? (was [plt-scheme] Re: Novice, needs help writing function )

From: jerzy.karczmarczuk at (jerzy.karczmarczuk at
Date: Sun Jan 6 15:24:32 EST 2008

Prabhakar Ragde writes: 

> Richard Cobbe wrote: 
>> One of the major strengths of the HtDP model, IMO, is the emphasis it
>> places on examples ... this forces students (and professors, for that 
>> matter) to approach generalizations from the concrete.  Most of us, 
>> myself included, aren't so different from the child in the story above in 
>> that respect.

> I would suggest the opposite -- that HtDP encourages one to develop in 
> generality, as opposed to just about every other approach, which presents 
> a bunch of examples and then leaves students to form their own (possibly 
> imperfect) generalizations. As the book proceeds, fewer examples are used.

Gentlemen, I see in this discussion two scholastic currents. 

1. What is The True and Good Way to teach recursion. Shrug.
2. What is The True Interpretation and Assessment of HowToDesignWhatever. 

Perhaps you should take into account that since the awakening of the human
spirit, BOTH concept flows: generalisation from examples, AND instantiation
are equally important and unavoidable? 

You will find these antithetic flows everywhere. In the building of our
knowledge, when we have to get rid of the building from examples, survive
a Spark, and descend back from axioms. All attempts to get rid of one side
of this process failed. Quite spectacular is the failure of positivists,
who wanted to reduce everything to concrete sensations, and to build
theories therefrom... 

You will find it in the Piagetian theory of learning, where the assimilation
and accomodation must cooperate. A child who after some attempts stands up
and begins to walk is NOT emulating examples around it. 

The categorical reconstruction of math, definitions of a product (or co-...)
is not an "upward generalization" of the traditional, banal examples, but
a downward reconstruction of known entities. 


The same problems concern the teaching of programming, and concepts as this
damned recursion. Eventually, *all* must be conveyed. The structural
recursion on data, reducing recursion such as [n! = n*(n-1)!], and also
the co-recursion and its generative aspects. And the notion of
self-reference, and the notion of fixed point. 

The order to do all that will never be resolved unambiguously, all this
depends on the teacher, on the level/attitude of the students group, etc.
No doctrine can really help, and no statistics on the superiority of one
method wrt. another helps either. What I read here, reminds me when I was
married to a language teacher. My goodness, she passed through at least 15
different "pedagogical methods", all based on some *doctrines*. All these
teachers/methodologists met sometimes together and quarreled, and they
still do so. And nothing really changes, often they revert to the "old"
style, abandoned some years before because of some rational consensus... 

I learned one thing, though.
Do your best, speak about concepts *you* understand, individualize your
teaching, and *NEVER* say to anybody that something is difficult. 

But of course, all this, and especially the last point is difficult... 

Jerzy Karczmarczuk 

Posted on the users mailing list.