What is CodeMotion?
CodeMotion is a computer program designed to teach computer programming. It does this in a way that makes abstract programming ideas directly visible to the student, so that they can learn by observation and experiment. It also provides enough structure to allow a student to learn independently and at their own pace.
When I taught APCS, I found that many students had trouble picking up key programming ideas that I was presenting merely as a description in words. I wanted to provide some way for them to interact with a concrete representation of a computer program, but was stymied by the fact that the inside of a computer is an alien world that doesn't work by the same rules students are used to. I found that it was easy to get students to connect the "nouns" and "verbs" of programming to their existing understanding, but that it was very hard for them to form a clear idea of programming ideas with no analog in human language.
The solution, which I have been working on for the last year, is software that gives students a visual representation of how an expert programmer would imagine their program running. Instead of needing to know the abstract ideas first in order to imagine what a program does, they can directly observe how a program behaves and gradually come to understand the rules that dictate that behavior.
This is all wrapped up into a program that scaffolds the whole learning experience, providing a student with a short reading, then some demos, then some exercises to do. The computer assesses the student's work, gives constructive feedback to help them perfect each exercise, and then provides access to the next section once enough exercises have been completed.
CodeMotion is currently being used by a programming class at the O'Bryant school in Boston. I'm going in one day a week to help out in that class, and I'm working hard to develop new modules as they move forward through the course. I've also tested CodeMotion with a group of teachers at a week-long workshop over the summer, and got very positive feedback from them. To see if it works with younger students, I also tested it with my eighth-grade cousin, who found that after working through a few lessons with my help he was able to continue entirely on his own.
A free beta version of CodeMotion is currently available for download. It contains nearly all of the features intended for the final version, and has no known bugs. However, it contains only the first unit and about half of the second unit, roughly the equivalent of the first half of an APCS course. I am actively developing further units.