[plt-scheme] Re: More pedagogic stuff

From: Benjamin L.Russell (DekuDekuplex at Yahoo.com)
Date: Tue Aug 12 02:15:59 EDT 2008

On Mon, 11 Aug 2008 14:05:21 -0400, Matthias Felleisen
<matthias at ccs.neu.edu> wrote:

>A while ago, Shriram and I wrote up a short essay on our perspective  
>of why CS hasn't latched on in high school for some 25 years now and  
>what we might wish to do about it:
>   http://www.ccs.neu.edu/home/matthias/essays/not-matter.html
>This is a preliminary draft of an opinion column that will appear in  
>CACM, ACM's "flagship" publication (whatever that's supposed to  
>mean). -- Matthias

The idea of using interactive animation and games to motivate tying
together mathematics and programming reminds me of the book _The
Haskell School of Expression_ (see http://www.haskell.org/soe/), by
Paul Hudak.  There, "the author draws examples from multimedia
applications, including graphics, animation, and computer music, thus
rewarding the reader with working programs for inherently more
interesting applications."

In a course, Introduction to Computer Science, that I had audited
under Hudak in college in 1994, the professor provided a very
interesting project using Scheme, called "Schemetris," where students
worked in pairs to code their graphical versions of Tetris in Scheme
using libraries/modules supplied by the professor.  My partner and I
decided that my partner would decide which functions to write and
provide their specifications, and that I would write the actual
functions.  Over 2-3 days, we got Schemetris working.  It was hard
work (I slept only 3 hours per day during this period), but was a fun
programming experience, and dramatically increased my self-confidence
at programming.

Personally, I think that the key aspect of this exercise is that it
was actually fun to do.  This aspect too often seems to be belittled
in schools, but students tend to learn best when they are having fun
without explicitly realizing what they are learning.  In my project,
because it was fun to do, I was able to enter a so-called "flow state"
while programming, and to become totally immersed in thinking about
the project:  For a while, there was only Scheme, Schemetris, and
Emacs in my head; nothing else.

(As a side note, for more information on a "flow state," see the
following reference:

Flow (psychology) - Wikipedia, the free encyclopedia:

During my entire college days, this was perhaps the only time that I
entered a flow state while learning.

I think that generating this flow state is very important in learning
highly conceptual disciplines such as programming.  It is very
difficult, if not impossible, to enter this state if one does not
enjoy the subject matter.

This main difficulty seems to be that it is much harder to figure out
how to teach the material in this kind of motivational manner than
just to teach it straightforwardly.  Overcoming this hurdle can
require great creativity.

Sometimes it seems that this creativity requires adopting the mind-set
and academic level of the student.  Paradoxically, when I was in
college, one of the mathematics professors whose lectures I enjoyed
most said that he wasn't sure if his style was best for teaching
because he talked relatively slowly and clearly and repeated most of
his main statements at least once (he joked once that he actually did
this because the lecture started at 10 AM, and this was usually just
before bedtime for him, because he usually stayed up all night in
doing his research, and his mind just didn't work fast enough in the
morning for him to lecture any more quickly).  However, that helped
immensely in allowing students to hear everything that he said clearly
and to distinguish between key points and subordinate points.  (He
also often told jokes in class related to mathematics, which helped to
keep the classes fun.)  I earned my highest grades in mathematics in
college under this professor.

-- Benjamin L. Russell

Posted on the users mailing list.