Thanks to terrific programs and online resources like Codecademy, Scratch, and Khan Academy, my 13-year old has started to learn about HTML and CSS, as well as how to code in languages as diverse as JavaScript and Python.
I don't remember how we got on the topic of functional programming, but he asked me to explain it. So... I started down the path of comparing functional programming with imperative programming and then quickly realized I didn't know enough about functional programming to explain it properly :-)
How do you explain functional programming to someone just learning how to program? Would you suggest that someone completely new to programming start with a functional programming language like Erlang, Haskell, or Scheme instead of traditional, more imperative languages like Java, Python, and C?
I strongly recommend asking on the Racket-users Google Group as they'll know more about educational use than I, but Racket is actively used to teach 13 year olds programming in maths at school, and the basic Racket education program doesn't even teach mutation until much later.
The Racket group is here: https://groups.google.com/forum/#!forum/racket-users
I also know there are some youth education specific resources here: http://www.bootstrapworld.org/ And here: http://www.wescheme.org/
I might also recommend the Little Schemer, which presents and teaches recursive functional programming as if it were a book of puzzles. Realm of Racket is also pretty cool, though it does assume at least some programming knowledge already (it was written for first-year CS students), and you could try the early exercises in How To Design Programs as well (though I find them a bit long-winded and it may bore a younger programmer).
Good luck! I started programming at around that age, and I wish I'd had resources like Racket. If I'd discovered FP and Lisp then, I might've stayed with it instead of taking a break for ten years.