[Edu-sig] Lowering the barriers to programming

Kirby Urner urnerk at qwest.net
Sun Dec 4 23:53:42 CET 2005


> Subject: Re: [Edu-sig] I've just started reading this paper
> 
> > If anyone else wants to grab a copy and chat about it after reading,
> > let me know.
> >
> > --Scott David Daniels
> > Scott.Daniels at Acm.Org
> 
> Downloading now...  I anticipate having some comments.
> 
> Kirby

So I've been through it once.

I derived some value and pleasure from this paper, I should say that up
front, since I'm in a mood to just make a lot of criticisms below.  Chalk it
up to my generally dark disposition.

Seems to me in this age of hypermedia and streaming video that a print
article like this is somewhat of an anachronism.  Show me clips of the
described systems, not just still pix and little write-ups; have the
taxonomies yield memberships more dynamically, in some GUI.  Provide written
summaries as gloss.  Add talking heads.  Make it a whole web site.

Why should the expectation be that all this wealth of non-linear info should
distill to some linear printed journal article instead of hypermedia?  Not
what I'd want my NSF tax dollars to underwrite (DARPA, NASA...) -- just
speaking as a private citizen.

Anyway, a fun trip down memory lane, remembering all those dead languages.
PL/1, Algol, heh.

Other ways to categorize were implied but not explicit:  the targeted age
group for example.  Some were explicitly for 4-7 year olds, or for 5th
graders.  Others seemed more college oriented.  This axis wasn't supplied
which just goes to show how there're always more axes when it comes to
multi-dimensional sorting schemes.  

Another axis:  how were each of these funded, e.g. which were expected to
earn a return in the market place?  Rocky's Boots was a for-sale product as
I recall (and worth buying).

A central purpose of all these systems was never addressed:  they give
computer scientists interesting work, dreaming up playful gizmos for guinea
pigs.  To pretend all these toyz are *just* about making programming
accessible to beginners is inauthentic -- it's also about doing something
challenging and fun (and fundable) with one's CS education.  Let's be up
front about that shall we?  Nothing to be ashamed of.

There seems to be a premise that providing a relevant context (answering the
question:  why program?) needs to be motivated from within the interface or
product itself.  I'd say that's more a job for the wider culture:  to show
role model peers using programming skills on TV, in movies.  Maybe there's
nothing lab coated technicians might do, in isolation, to make CS seem less
geeky.  Nor is it a given that "attracting people to programming" is the
same thing as "attracting people to CS".  There's overlap, sure.

An interesting sub-theme here is that some of these experiments in pedagogy
percolate back into the professional environment.  SmallTalk was for kids
(in this telling anyway), but was vastly influential on general purpose
production languages.  Same with Pascal.  Something intended to make X
easier to learn ends up eclipsing X.

The text didn't make any reference to whether type declarations are needed
or not.  Java is often mentioned as a target (what we're trying to learn),
but I didn't see how notions of types, of casting, got introduced.  Even
when the language is dynamically typed, you still have types.  It's not all
about loops and conditionals.

Nor did I see anything about the importance of an interactive interpreter.
My idea of beginning programming is you enter expressions for immediate
evaluation, get a session going, populate a workspace with names, before
saving anything in a text editor.  I've done two hours of Python and we've
yet to save any .py files (that'll happen this week).

An interactive interpreter doesn't prevent syntax errors, but it gives
immediate feedback.  You learn the syntax for a dictionary by trying to
build a dictionary.  You don't have to get a lot of other, unrelated syntax
right (void public main blah blah) before you debug the dictionary, i.e. you
just need expressions, not saved/compiled programs.  Very important.

Scheme/DrScheme not mentioned.  Definitely aimed at learners, with levels,
i.e. more features of the language get activated as one increases in
mastery.  Also interactive.

I think a useful learning environment might include a large library of
programs like this, so that students could play with a lot of them, get a
feel for the taxonomies, just as these author(s) did.  Don't start with 6
weeks of X, start with a couple hours devoted to X, Y, Z, maybe with a demo
to kick it off each time.  Exposure to this kind of variety helps answer the
question:  what might programmers do?  Script theater!  There's a reason
it's called a Programme at Stratford-upon-Avon.

So anyway, why not something more like:

learning_environments = [ToonTalk, SmallTalk, RockysBoots...]

for session in learning_environments:
   session.demo()
   session.play()

myproject = favorite(learning_environments)

for rest_of_term:
   myproject.workon()

myproject.addtoportfolio()
mygrade = professor.grades(myproject)

Or just give us that NSF-funded web site, where all these toyz are sampled,
demoed, made available for download (if they even still run on the newer
hardware).

What I'd like to give Tara for Xmas:  a furry cat pet that's programmable
somehow (like the Mindstorms Brick).  She wants a cyber cat (she feeds an
electronic fish everyday as it is -- has me transfer it to the laptop when
we go on trips), and as a parent I'd be more inclined to buy it if she could
program it herself.  A palette of sounds and motions, reflex arcs.

What I think more kids would like:  an easier way to program web sites that
function more like mazes, i.e. as browsers get more deeply into them, they
become more likely to be the people you'd like to interact with.  Casual
browsers drift off, frustrated by all the puzzles.

Kirby


-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.13.11/191 - Release Date: 12/2/2005
 



More information about the Edu-sig mailing list