I recently started teaching python to high school students. I have some job related programming experience, but no educational experience in that field. The courses I give are pretty ... sober and more mathematical oriented. Calculate the sum of a series, find the zero of a function with Newton Rhapson, ... . I noticed a strong polarisation effect. You have the "natural" coders. My classes are too slow for them. They eagerly read through the course on their own and start doing a little project under some mild guidance. Tetris, algorithmic animations, some optimize my crude sorting algorithm, it is nice to see what they make.
Then there is the other group. Pretty uninterested, basic for loop is very difficult to teach. My classes go too fast. Applying it to even simple problems goes way over their head. Usually they are more language oriented. I tried a more linguistic approach: i.e. make a program that conjugates regular verbs in French, ... with some mild success. Gamefication may help these kids. We've considered minecraft, but have not come around it yet
I think my courses still need a lot of improvement. Any pointers from experienced teachers, preferably high school audience is very welcome! Oh, I have 50 minutes a week per class, so this is a side dish.