Parenting Notes from my recent experience of teaching simple coding to my 9 year old daughter.
I recently started off by teaching scratch coding for my 9 year old daughter Anushka and within 3 days she was able to come up with a reasonably good game which kids as well as adults could play and enjoy.
It was neither magic not born-genius but meticulous planning (on my part) and sheer dedication and willingness to put in extra hours (on her part).
I would encourage you to take a look at her project before you read further: https://scratch.mit.edu/projects/295163732/
Programming is a key skill today. More than being able to create useful programs, I think programming serves as great mental tool to teach “logic”. I don’t intend to get deep into “why” part of it in this post but let’s look at how to go about teaching your kids to code, if you decide to do so.
There are two clear-cut options
External Classes: Enroll them into a computer coaching which range from expensive to exorbitant and the skill levels range from basic to medium. While many are good, some are not so. My experience of visiting an exhibition of programs developed by such classes was not very impressive to say the least.
Helping them learn Yourself: Second option is to dive in yourself and learn-and-teach at the same time. Though I am in software industry for 17 years, I do not do coding so I had to start from scratch.. literally and figuratively.
If you fall into the second category and you are not a coder yourself, you should be prepared to put in some extra efforts (before your kid starts to learn). Here are some steps I can suggest. They are not perfect.. and you should change them per your need and your child’s inclination.
1. Plan what you want to teach
- Scratch is good for visual projects like animation, games etc. but limited usage in real life
- Python is good for "real" programming with ton of real life uses
2. Learn Yourself: Spend time on learning yourself, for every subject there are sufficient YouTube tutorials, you just need to search for the right keywords (Such as scratch for beginners or python for kids)
3. Scratch Tool: Start with scratch, its very intuitive drag-drop. There are alternatives like code.org but I found scratch most wide spread and has ton of help tutorials on their website and YouTube. Register on scratch.mit.edu (its free) and go through its tutorials.
Do not forget the follow Anushka on Scratch and review her latest projects! Your feedback is most welcome.
4. Research: Search for scratch tutorials on YouTube and choose 1-2 with your kids and then "You" do the project yourself with the kids sitting besides you. Talk to them at every step as if you are acting as “hands” and they as “brains”
5. First Project: Next step, ask kids what project they want to do.. explore the available projects on scratch to get an idea. Guide them towards the right project. Choose a fun project they can show their friends.
6. Clear Requirements: Don’t start coding. Sit with them or ask them to write down the key requirements and rules for the game / project
7. Prototype: Still no coding. Use the power of paper-and-pencil. Help them do a prototype on paper and write pseudo code (if-then-else statements) on paper. This will make the coding easy and methodical.
8. Actual Coding: Let kids start their own project in scratch.. this time you don't touch the computer at all and only guide. Let them be both “brain” and “hands” and you only ask right questions to lead them to next step, that too if they get stuck. Else just sit and observe till your kid asks a question.
9. Test / Fix: Help them test / debug / fix issues but without you touching the computer :). Also check if the game / program can work on computer as well as mobile / iPad. Its important in 2019.. believe me.
Hurrey your kid has his / her first program or game ready.. now what?
10. Share: Send the game to friends / family and ask for suggestions. Your kid has done something awesome, help him get some cheers from others.
11. Enhance: Compile all suggestions in a list of "features" and let your kid take decision (what they want to build and in which sequence and what they "WILL NOT" build... its their project, if they say some feature does not belong in their project, respect that). You will need to search for ways to achieve some enhancements, don’t be shy to accept you don’t know everything and teach them to search what they don’t know. YouTube is your guru.
12. Borrow Ideas from other coders: In scratch, if you like any project, you can "See Inside" and take inspiration from the code others have written (don't be shy.. that's what even the adult programmers do.. google for sample code)
<<<<< I have reached here as of the day or writing>>>>>>
I believe the journey has just begun, there is a long way to go. Here are the next steps I have planned:
13. New Ideas / New Games: Your kid needs more practice to hone his/ her newly acquired skills. Ask for game / app ideas and let kids do it on their own (this time even when you are not around). If they get stuck, of course help them. Anushka is already planning for a car-racing game!
14. Up the Game: Once this step is done, I intend to introduce them to proper coding (not drag drop but syntax based coding). You can find good Python tutorials on YouTube for kids. I plan to start with this one. Even take few additional steps to code with IoT devices. The only limit is time and interest on your part and your kid’s part.
15. Machine Learning / AI: Introduce them to Machine Learning / AI. Coding is one way to program, other way is for computers to learn from data. I plan to help my kids do introduction and if possible some simple AI / ML projects. I am hoping to start with AI4All. Their online courses are starting soon. If not there is ton of material on AI/ML introduction.
16. Compete: I am hoping if they pick this up, then possibly find some competitions they can participate in. I haven’t done enough research yet, but plan to do that if and when needed.
17. They are Kids: Don’t Burn them out: Most important, at any point if kids get bored or don't like doing something, I plant to simply take a pause and let them do other things. If they want to come back and start after some time, fine by me.
I don't want this to be a "study" where they "have to" learn something. Rather this is like a hobby.
Hope this post is useful to some of you. Feel free to write your feedback, suggestions any useful links you have.
~ Let’s all learn and teach together ~