When I was in the 3rd grade some time ago, an amazing teacher decided to bring in his personal apple IIe and allow interested students to hack after school. He taught us "Logo", a simplified lisp variant that I remember being very intuitive. After we understood the basics, we began building robots with Lego/Logo, a Logo variant you could use with an external controller that operated motors an sensors embedded in lego bricks. It was a transcendent experience for me. What's more, as a kenyan immigrant living in midwestern suburbia in the early 90's, it was one of the first times I felt as though I had a meaningful place in the world. I never stopped programming and its why I'm an engineer today.<p>Logo Project: <a href="http://el.media.mit.edu/logo-foundation/logo/programming.html" rel="nofollow">http://el.media.mit.edu/logo-foundation/logo/programming.htm...</a><p>Lego Logo Project: <a href="http://www.ucls.uchicago.edu/students/projects/1994-95/Lego-Logo/ProjectDescription.html" rel="nofollow">http://www.ucls.uchicago.edu/students/projects/1994-95/Lego-...</a>
Well, what age are they? I'd say age and abstractness of their thought process dictate how to teach them.<p>I'd argue that you start learning programming concepts in everyday life, early on, just nobody explains them to you.<p>The lunch line at school. Line Up, first in, first out. Right?
-Array/Vector (depending on if you know the number of kids in line, like a single class of, say, 30 or if kids just all get in a line together.) What about "Budging", kids getting kicked out of line for bad behaviors....<p>For the cafeteria workers this is a While Loop
- While there are kids in line, serve them.<p>I can think of so many everyday life happenings that would teach kids computer science fundamentals if presented in such a manner to them.<p>I have used: <a href="http://www.amazon.com/Hello-World-Computer-Programming-Beginners/dp/1933988495/ref=sr_1_1?ie=UTF8&qid=1358563128&sr=8-1&keywords=Hello+World" rel="nofollow">http://www.amazon.com/Hello-World-Computer-Programming-Begin...</a>
(Not an affiliate link, FYI)
Create a development "playground" for your children. The way children learn anything is by trial and error, remember them trying to learn how to walk? Remember how many times they fell before being able to walk?<p>Do the same with teaching them to code. Pull HTML source code from a simple website and paste it to your text editor. Then let your child play around with the code and see how it renders in the browser. It will be fun and exciting for them because they will actually get to see their work right away (instant gratification).<p>Once you have done this, move on to css.<p>Good luck!
This question gets asked alot. I've never seen a good answer.<p>The only good reason I've seen for teaching a child programming is that the child is interested in it...and that tends to be several orders of magnitude less common than a parent who wants to teach their child programming.
Teach them BASIC first, not the HTML+CSS+Javascript mess.
<a href="http://www.freebasic.net/get" rel="nofollow">http://www.freebasic.net/get</a>
Then let them loose on this site: <a href="http://www.petesqbsite.com/" rel="nofollow">http://www.petesqbsite.com/</a>