This made me think about how I learned to program on the Commodore 64: By typing in listings from magazines on little games, like Snake or a little text adventure game etc. When teaching kids I think that could be a great method: Usually, kids are also not afraid to start experimenting and tweaking what they typed in, while perhaps adults lack the patience needed to just copy an example.
Now that I typed that out, I guess the thing about trying to come up with the one perfect teaching method is that students vary so widely in what experiences they bring to the table. There just isn't one method that could possibly work for everyone.
I was thinking of making a product like that. Essentially it'd be like a typing program such as Mavis Beacon in that you'd have a snippet of code that you'd have to type out in its entirety, after which, you'd be asked to tweak it in some fashion. Not sure if it'd be effective, but worth a shot.
Now that I typed that out, I guess the thing about trying to come up with the one perfect teaching method is that students vary so widely in what experiences they bring to the table. There just isn't one method that could possibly work for everyone.