This is a topic that has been running through my head as of late, and a topic I would often discuss with a previous CS teacher of mine. How do you introduce, and effectively teach teenage students programming? If you walked into a classroom full of high school juniors and seniors, given the task to introduce them to programming, where would you start?
The way I see it, there are 3 basic approaches.
1. Start with something visual. Alice
or Game Maker
2. Start with a very high level forgiving language. Something a little more complex than option one, but still holds their hand all the way through. Python, VB, or some other derivative of BASIC.
3. Leave them for dead with something like C or Java.
The latter got me hooked, but I have an unusual interest for programming. I've seen students completely discouraged by the daunting disposition of that approach.
Queue Edsger Dijkstra. In a pretty interesting write up
It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
If that holds true, than the first two approaches I outlined are completely invalidated.