From your own experience(s), what has been useful for teaching a motivated child (e.g. middle-school age) Computer Science? I am looking for advice on how to continue to provide gradually more complex ideas and work and how to present ideas in a consumable and comprehensible manner. How have you taught and/or how have you learned?
I currently think letting the child take Udacity courses, using online resources, and working on problems from Project Euler are a start. While the child is learning on his/her own, there will be one-on-one sessions to elucidate concepts, to introduce new ones, to review old ones, and check work. I think that it is important to show connections from the topic of study to examples in the real world. I am beginning to think that a very useful approach is almost an apprentice model: the tutor and student agree upon a large project to create together with ideas coming from the student and support and guidance coming from the tutor. Once the project is selected, the tutor breaks the project down into actionable items that are learning opportunities (e.g. here would be a good place to practice OOP or a design principle, here would be a good place to examine computational efficiency/complexity, here would be a good place to examine recursion). The smaller pieces will add up and get "harder" until the tutor is autonomous. The tutor does the heavy lifting things that are fundamental and currently beyond the abilities of the student.
* I am not well versed and will be doing my own research into the "how to" of this question. I wanted to ask this here to see what discussion emerges to facilitate what I find and devise.
Thanks!
We also used a mouse maze toy ( Code and Go Robot Mouse) where she programs the mouse to navigate different mazes that we construct to find the cheese. I switched it up and instead of using cards, I have her physically move the mouse and input each step. My neighbor also purchased this for his 5 year old son after watching my daughter program it. Seeing physical results of your programming is another benefit to this method.
I myself originally started in basic on the mid 80s by typing in different screen games. Eventually you pick up the different constructs and begin to make your own programs.
I was successful with this method for my nephew when he was 12, ten years ago. I had him type in programs from the free Python game book online. He modified them and was pretty fluent in the basics.
My wife has asked me to create a place to share these different resources we use to teach our child. I would be curious to know what resources others use.