I am a programmer but I have always been interested in the learning process and mentoring. So in recent year I have conducted some self-study on these topics. Now this is such an immense topic and I have surrendered to my ignorance on so many levels. But, from what I can tell, there is a lot of dogma that we trust blindly, a lot of great old ideas of course (Piaget, Dewey, etc) that have been a great influence but not enough (and simplifying an incredibly complex topic).
Some insights I've had that have made me realize how hard education is getting right (forgive the simplifying, but it needs to fit a HN comment)
* Children have many different ways of understanding and sense-making, but we have a very simplified/dogmatic view of how chilren learn.
* We seem to overemphasize practical activity at the expense of other ways of grasping meaning (e.g abstract thinking)
* We make false assumptions: "The absence of abstraction awarness or articulation of it is a sign that abstractions are not at work in their thinking"
* ...I could go on..
Barely scratching the surface I have realized how little I know. This is such an interesting topic and you can learn a lot studying the pioneers, Piaget, Montessori, etc. but always have a critical eye! More recent literature I can highly recommend the works of Kieran Egan.
Being an educator is incredibly rewarding but I think we as programmers need to be much more humble when approaching the teaching practice..
If a child learns the definition of key words, she'll carry the concepts they represent with her forever. Once she know knows "map", "value", and "key", she will own the concepts, Map, Value, and Key.
Definitions give a child the opportunity to learn -- and a parent the opportunity to teach -- valuable concepts that will enrich her world.
If you really really want to impart to them the concept of software, then do that! The phrase "garbage collection" is not important. The idea of a program and that it makes the stuff they see happen on the screen is what is key. @partycoder has the right idea: https://news.ycombinator.com/item?id=15881930
(I work with children and am respected for my ability to teach them sophisticated ideas.)
Maybe doing more with math (even if at 1+1=2 level), repetitive processes as loops, idea of recursion, idea that a computer cannot compute more than one can do with pencil and paper.. More _universal_ aspects of computation can be really illuminating to kids, I think.