Do you mean 8-16 as an age range or a number of students in the class?
Also, not all kids get excited at the first sight of scale. It often requires taking time to explain things and give different examples of this phenomenon.
It seems to me that attention span is the biggest hurdle. You're unlikely to hold a ten year old's attention for more than a couple of minutes if they don't have a solid understanding of why the concept you are teaching is important and how it ties in to the other concepts they have learnt. If you can show them how useful a concept is, they're probably more likely to go and gain a more thorough understanding on their own.
> Do you mean 8-16 as an age range or a number of students in the class?
Age range. Ideally you would want to avoid having that sort of spread in a single class (perhaps take one class for the 8-12 age range and one for 13-16 age range).
> Also, not all kids get excited at the first sight of scale. It often requires taking time to explain things and give different examples of this phenomenon.
True, I'm just basing what I wrote on what my friends and I found particularly interesting. It's probably different for everyone.
If I were to teach programming to a class of kids in the 8-16 range, I'd probably get a Python environment up and running and spend:
- Two to five minutes explaining a small concept (start with the print statement, go to variables, then operators, then functions, and so on and so forth) - A couple of minutes playing around with the concept using some neat functions or classes which you write before the lesson. Like a send_email() function, where you supply each kid with a disposable email address and password. - Up to an hour repeating the first two steps. - A few seconds giving them an optional homework assignment which they can work on and show off to their classmates when they come back.
I'm sure they'll be hooked when they find five hundred emails in their inbox, that's certainly the sort of thing that got me hooked back when I first started.