Thursday, March 5, 2009

Interactive Computer Programming Environments--essential yet elusive

In an earlier post on the disadvantages of using calculators in lieu of long division, I wrote about how calculators don't give feedback about wrong answers, and how feedback seems essential to learning.

The more I think about it, the more convinced I am that continuous feedback loops speed learning.

And the more convinced I am that the best and fastest way to learn to program computers, in particular, is by doing so in an interactive environment--one in which you test out a short function or procedure by typing it out on line, hitting 'Enter,' and getting immediate feedback.

Only certain programming languages/platforms allow such interactivity--for example, LISP. And it was only in learning LISP, interactively, that I felt like I was finally getting the hang of programming.

Now I want the same for J, who may well find his calling in computers.

But so far I've come up dry. Even the MIT Open Courseware SCHEME software suggested to me by someone who commented here does not work interactively, at least on my computer.

It somehow seems emblematic of today's technology featuritis and today's anti-analytical education fads that there's a super-abundance of software tools and "interactive learning" schemes, while something as simple as an interactive programming platform is apparently impossible to find.

Any suggestions?

6 comments:

bky said...

The answer is Scilab (http://www.scilab.org/). Scilab is a freeware version of Matlab (from "Matrix Labratory", see http://www.mathworks.com)

These are programming environments that lots of high-level mathematical functions (they can do all sorts of matrix calculations, ie eigenvectors, if you need that), but that is easily ignored if you don't care about that, in which case you have a C-style programming language with easy-to-use graphics if you want to plot simple things. It does not require compilers. You can just type in a loop, for example, hit return, and see it happen. You can also write functions and so on in files that are available to be called inline ("hit enter" mode) or by other programs.

Scilab is free; Matlab costs plenty. Take your pick. Anyway, you should download Scilab and see how it works. I have no stake in this; I don't own Scilab stock, or whatever. I just know that it is the way to go. I'm not teaching my kids to program yet but when I do, I imagine Scilab will be the starting place. In the meantime we use it for the occasional graphing or calculation.

lefty said...

Thanks bky! You had mentioned Scilab before, but I hadn't realized it was interactive. From what you describe, it sounds ideal. I'll check it out and report back.

Eowyn said...

You might also want to try python. It comes with both an interpreted environment and a compiler.

And since it's not a recursive program, but an imperative one, you might find it easier. (Imperative = tell the computer what to do in easy straightforward steps.)

RMD said...

Is this for you or your kids?

Scratch is a terrific way for kids to learn to program. You can assemble programs easily and see what they do immediately.

bky said...

I am also curious whether you have some sort of curriculum in mind for teaching programming to your kid(s). Have you looked into that or do you have some ideas in mind? I forsee getting into this with my kids in a couple of years, but I haven't thought it through.

vlorbik said...

everything got hugely harder with "windows".

in the DOS environment, one had BASIC
right there, ready to go,
on every box on every desk.
you'd open it up, find a program that runs,
and start banging on to see what happens.

also "BAT" files. anything you kept doing
over and over the same way? just write it out
once and run it whenever you need.

right there at the top level directory
where you can't miss it. and self-explanatory.

i can't do the exercises you set a few posts
from now at all now; noplace to start.

..."but you *just* have to..."
download this, install that,
buy the other.

yes. if you happen to *own*
the computer you're working on
and have a fast connection
(and probably some free access
to competent tech support
and god knows what else).
so it looks easy to whoever it is
telling me it's easy.

meanwhile, if i want a list
of pythagorean triples
(beyond the famous 3,4,5
and 5, 12, 13 that everybody knows)
i'll have to (re)-write the code
on my fucking graphing calculator to do it.
thanks a lot, GUIs.