I get it, IT is important, and we need to give our kids a head start in this digital age. Programming and robotics classes for kids are in high demand. However, I thought there are other underlying concepts we should first introduce to our kids.
What exactly is programming? It basically comes down to solving problems by using algorithms which are encoded into a programming language that can be processed and executed by a computer. The first thing about it is solving problems. To do that, you’ll need to understand some rules, logic, and apply suitable algorithms to work towards a solution.
Some parents start their kids’ programming journey by sending them to a Scratch programming class. The visual block-based programming approach in Scratch may be easy to understand, hence the popularity, especially with kids.
I once observed such a Scratch class organised by our (then) Infocomm Development Authority. They were targeting kids with no programming prerequisites. In the class, the kids were shown how to use a web browser, how to use the visual editor, and then they were taught how to move the cute sprite around the screen and make it do amusing things. Maybe my expectations were somewhat misplaced, but I winced at the idea that they could label this a programming class.
The problem solving part of programming doesn’t necessary have to be about programming languages, or even computers at all. For example, solving puzzles also involve problem solving concepts that are useful in programming.
Games and puzzles, I believe, can be a really fun way to learn about logic and algorithms. By solving these puzzles, kids can be introduced to the task of problem solving, rather than the constructs and mechanics of a programming language. Beyond logic and algorithms, problem solving also requires patience, perseverance, and creativity. Oh yes, it may not be apparent initially, but programming definitely requires a lot of patience, perseverance, and creativity.
It’s not hard to find games that are designed to teach problem solving and programming, and without having to use a specific programming language. A board game I got for my kids last year was Thinkfun’s Code Master (Amazon affiliate link, also available on Amazon Prime SG). There are no computers involved, but this game includes concepts of conditionals and loops. The game has 60 levels to keep the kids occupied for a while. They don’t even realise they’re learning some programming concepts when playing this game.
Introductory programming courses at university level will no doubt jump straight into using a specific programming language as a means to teach concepts. It may be a quick way to get started, but it may take more effort for students to recognise how concepts they’ve learnt can apply to different scenarios.
For young children, learning a specific language too early may lead to them to think about programming only in terms of that language. It’s like when you only know how to use a hammer, you treat every problem as a nail. Even after learning to use other tools, you may still prefer to see every problem as a nail.
Sometimes I look at what the kids programming classes teach and worry about how they are prescribing solutions rather than actually trying to teach problem solving skills.
For example, if you are in a mathematics class trying to learn addition, the teacher should explain the concept of addition, rather than having you memorise tables of answers.
You can attend a cooking demonstration to learn to cook a dish. However, that will hardly have any direct contribution to your ever becoming a real chef.
If programming fundamentally begins with problem solving, it’ll be better to simply focus on the problem solving aspect at the start. Specific programming languages can come in later, and at that point, they’ll learn that the language is merely a tool, or a means, to help encode solutions into a form that computers can execute.
Of course, I can see how programming classes for kids will earn more profits for training providers. I don’t think a “problem solving for kids” class will garner as much interest. Parents, however, need to recognise that programming isn’t just about Scratch. Sending their kids to a Scratch programming class won’t turn them into programmers.