in reply to Perl as an intro to programming

Writing simple games, for example, hang man, tic-tack-toe, or the card games war or blackjack can be a fun way to learn about graphics, html generation, and data structures. The basic algorithms are simple, but there is a lot of opportunity to "pretty things up" and integrate both sound and graphics (or even the web) to make the game "cooler".

But like buying gifts for kids, a lot depends on the kid and what gets him or her excited. I would suggest first asking him or her what sort of things he or she would like to do with software. Use your own experience to assess the skill set needed and then work with them to scale the project down to something do-able but still "cool". Alternatively, work on the project together, with you carving out pieces that require a set of simple skills. Then as the teen gets more comfortable you could carve out large or more complex chunks. If you worked on it together it could turn into the electronic version of parent-child cooking or wood-working.

Best, beth