[Edu-sig] CTL: Computer Thinking Language

Laura Creighton lac at openend.se
Mon Mar 2 07:59:01 CET 2009


I think the whole idea of 'not a programming language' is flawed.  If
you want to teach concepts in this fashion --- and I think this is a
great idea -- you want to teach 'how to use an interpreter' (you
are using an interpreted language) and some sort of Test Driven
Design (which you do not have to teach explicitly) if you have something
like py.test or nose available.

Otherwise what you have given yourself is a lot of marking to do, and
you are stuck with the same problem that troubles math teachers --
(unless they are teaching from Kirby's Pythonic Math exercises, or
something.)  You give your kids an assignment, and they don't
understand it, and get it wrong.  You reteach the principles, and
try again.  The nice thing about proramming is that it doesn't have
to be taught this way.

"Here is an acceptance suite.  Bash on your program until it passes."
is a perfectly acceptable way to go.  And this changes your class from
math class (where there are correct answers and wrong answers, and
hated by those who seem always to get the wrong answers) to programming --
where all running programs are in some sense 'correct' -- they just need
to be completed, or to have some bugs removed before they correctly
solve the assignment. :)  This notion is incredibly liberating to some
people.

I get the distinct idea that the authors of this paper are functional
language fans, and what they are looking for is a way to get to
Haskell or ML or something like that.  This is 'programming as
mathematical proof'.  But I don't think that programming is actually
like that.  I think that the idea that a person needs to invest 10,000
hours in an activity to become very good at it (which seems to work
for learning a sport, or learning how to play a musical instrument)
seems to work for programming as well.  I won't argue for the
10,000 -- but just that if you want to get better at programming,
then what you need to do is practice doing it more.  Filling yourself
with more advanced concepts will not, unfortunately for those of us
who are good at filling ourselves up with concepts, change the fact
that you need to practice writing programs to improve at writing
programs.

I think this analysis misses this point, and then tries to get around
it by saying -- well, we don't actually care if the students learn to
program, only that they learn the concepts behind programming.  But
I think this is exactly backwards -- the way you should be teaching
the concepts behind programming is with an interpreter.  Thus you
need to teach them a tiny bit of programming _first_ and not second.

And more and more I think that Kirby is correct.  You should teach
math with an interpreter, too.

On a related note -- a friend of mine has given his 6 year old son
a linux system on a laptop to play with.  It is a hit.  But now the son
wants a book that explains how the linux operating system works. :)
Anybody have a reference that is suitable for children?

Laura


More information about the Edu-sig mailing list