
You'll need a Macintosh to run these programs; all of them were written in HyperCard. HyperCard is generally considered to be a "toy" programming language, but it is far quicker to develop a working program in HyperCard than it is anywhere else that I've seen, and it's a terrific teaching tool. The programs here include the HTML document editor that was used to build the documents at this site, a neural network tutorial with a working neural network, a standalone version of the card trick that runs at this site, and a few other things.
If you're going to download one program, try the neural network (Letter Learner); even if you don't know what a neural network is, it's still fun. And I'd be curious to know what people think of the HTML document editor (QuickHTML). Is this useful for anyone else besides me?
The available programs (listed here from my favorite to my least favorite) include:
Unfortunately, this system doesn't seem to work all that well, and when you think about it, it's not the way people learn. When you were learning to tell Mom from Dad, did you have to say to yourself "Black hair...big nose...short... this must be Dad!", or was there some other mechanism that your brain used?
Neural networks are mechanisms for programming (or building) computers that learn by experience, much like our brains do. I wrote Letter Learner in 1988; it's a neural network that learns letters that you draw by hand. It starts with no knowledge of letters; as you draw new letters for it, it learns their shapes and can tell them apart. It also contains a series of lessons that explain how neural networks work.
If this intrigues you at all, try it out. I'm quite proud of this program.
Most of our time is spent learning HyperCard's programming language, HyperTalk. This class is for art students who have never programmed before and who may never program again after the class is done, so teaching a language like C (with its pointers and header files) would be overkill. With HyperCard, I can teach the students to build good, basic interfaces in a single session, and they can build those interfaces in 15 minutes (HyperCard's reward/work ratio is very high). That leaves us the bulk of the semester and our class time to discuss programming issues.
And HyperTalk is a nice little language. All the basic programming concepts in the languages they might be using in the future are implemented simply and well: variables, conditionals, loops, procedures, functions, and parameters. (My one complaint: it's not object-oriented. Adding support for simple classes, inheritance, and polymorphism would make the language a better teaching tool).
But Logo is also a good teaching language: it lets you program a mock Turtle to draw simple pictures, which is great for art students. And the most basic pictures can be drawn with a combination of just two commands, so Logo has probably the highest reward/work ratio of any language. It also provides good, simple illustrations of the usefulness of procedures and functions.
Rather than try to teach two languages in one semester, I wrote a version of Logo that runs under HyperCard. This is non-standard Logo: I appropriated the Turtle commands from Logo, and let the control structures, procedures, and variables be written in straight HyperTalk. Once the class has progressed far enough, I can use the HyperTalk scripts themselves to illustrate programming points.
HyperLogo includes the HyperLOGO program, a manual, tutorials, and sample programs (including some standard fractals). If you're not a programmer, but want to try playing around with programming, this may or may not be a good place to start; it usually (but not always) helps to have a teacher when learning programming concepts. If you try to use HyperLOGO to learn programming and you get stuck, I'll probably help you if you ask me nicely.
If you're a HyperCard programmer, you might be interested in the handlers that rotate the Turtle's head. It's a neat little hack.
You're welcome to try it. It looks pretty rough, but it works well; the sample files / tutorial that come with it should make this more or less self-explanatory. I don't currently plan to do a lot more with this other then fix some bugs and add some features I need; however, if someone wants to use this and asks for some easily-implemented features, I'll probably put them in. But if you want that, you really should pay me.
If you'd like to read the tutorial that comes with the program before downloading entire file, you can view it from this site.
How is it done? I'm not telling you yet. Treat this like a puzzle; try to figure it out on your own by testing different sets of cards and seeing what card the program guesses. If you need hints, ask me; if you can't figure it out, but you've ask me enough questions, and I'm convinced you've tried to figure it out on your own, I'll send you the secret. Even then, it'll probably take about half an hour or so of practice before you can make it work.
You can also do the card trick over the Web from a document at this site.
HyperComputer was my attempt to make a working model of a CARDIAC-like machine. With HyperComputer, you can type in machine-language programs and watch them run, one instruction at a time. HyperComputer may be a bit too advanced for non-programmers; but if you've done even a little programming, you might want to try this out.
Caveat Emptor (even though the program is free): HyperComputer was never completely finished, and I don't like its appearance at all. It works, for the most part, but the shift command doesn't behave properly, and the tutorials are incomplete. Still, I get email from people once a year or so, telling me that they liked the program, so I'm making it available here.
(Currently, only the Mac version is available, but the Windows version will be available at the end of November).