My wife has been wanting to relearn French for a while, and she has wanted to try Rosetta Stone. After seeing and playing around with the Flash demo, all I can say is, WOW. This is probably the best-designed software I have ever used.
The interface is so simple, a four-year old could easily use it. The content used to teach the lessons is spectacular. And, best of all, the software places no barriers in front of the user. The lessons have a flow, but you are not required to follow it – you can move forward or back, change the difficulty, time yourself, score yourself, but only at your own request.
I can’t stress that last point enough: You are in complete control of the software.
This is the way learning should be. Structured by the learner, for the learner. The goals you set for yourself while using the software are personal, based on your comfort level and motivation. The consequences are profound: you are motivated to set goals higher, because there is no fear of failure, no consequences. Being motivated means you actually learn. Teaching a language by rote memorization doesn’t even compare!
Ok, time for some wild speculation: the technique used to present the language is conversational, repetitive, immediately applicable, and predictable. The language constructs follow each other logically, weaving in and out, building on what came before.
So the question is: could we apply the Rosetta techniques to learning computer languages? :)
Some of the bases are already covered: we learn “hello world”, and move on from there, picking up the patterns along the way: here’s a procedure, this is a data structure, this is binding and scope. But this is picked up slowly, by reading about it, often a chapter (or an example) at a time. Could we speed things up, improve retention, quickly getting a feel for the flavour of the language?
I’ll post more on this later. Stay tuned!