Programming language for teenagers I have been asked to give an introductory programming course for kids between 14-15 years old. Scratch seems like a good option for young children, maybe up to 12 years old. Python, is also a good language for beginners.

I need help from educators to choose between the two options for the mentioned age group. I'm afraid that Scratch might be too childish for them, while Python might be too complicated.

Update

Basically, the course will meet once a week. However, I have relative liberty in deciding how long the session is and how many weeks the course will be. Actually feedback in this regard is also appreciated. I want the session to be long enough to be productive, but not boring long. My initial thought is meeting for 1.5 hours each week for 6 weeks, and then deciding whether follow up course is a good idea.

I can't say much about the background of the kids. This is part of an extra-curricular school that meets every weekend, and I volunteered to give a programming course to the children to make them more interested in technology.

Update2

The age range was a bit different from expected. The kids were between 10-15 years old.

I started the course with Python and used Turtle library to have a visual output. The kids had some progress, but I felt it was slow and it was a bit hard for some of them to grasp some basic concepts.

After five or six weeks, I decided to switch to Scratch. The progress rate improved significantly. However, a few of the kids who were good with Python complained that Scratch is a language for little children that you can't do 'real' things with. It's definitely hard to please everyone.
I highly recommend checking out a language called Processing. Processing is designed for novices, and makes it easy to create visual and interactive programs without a ton of boilerplate.

Here's an example Processing sketch:

void draw() {
  ellipse(mouseX, mouseY, 25, 25);
}


This is a full program that draws a circle wherever the mouse is, 60 times per second.



Related:


Using Processing as an entry point in an Introductory Course
Programming languages specifically designed for beginners
The order of subjects in beginner's curriculum
Order to Teach Topics in an Intro Programming Class
Make it easier, and quicker to get to the start


Shameless self-promotion: I wrote a series of tutorials for Processing available here. I'd love to talk more about using these in a curriculum.