"Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime" - Maimonides
Coding, despite its importance and emphasis in recent times, is but a small part of computing and computer science. Learning coding gives someone an ability to write software - but it doesn't quite address the bigger picture - why is the software written, and how does it solve a problem?
Like in science lessons, it is equally important to master the scientific theories as it is to learn the practical skills of conducting an experiment. Coding is akeen to science lab experiments - it brings the laws and theories alive, but in order to fully appreciate the beauty of it, the student has to first understand why it is conducted in this manner, and how it relates to the theories they have learnt.
Computational thinking is the driving force behind coding. It is an approach to solving problems, designing systems and understanding human behavior that draws on concepts fundamental to computer science (J.M. Wing, 2006). It is a way of thinking - how you look at a problem and figure out the best ways to solve it, given various constraints.
Computational thinking applies to our daily lives. Arrays and Lists? It is how you plan your shopping trip and check off your shopping list on the way. Sorting algorithms? It is how you put your room in order based on certain categorical patterns. Divide and conquer? It is how you break down the steps to prepare your next meal.
Teach a child to code, and he or she will take home a practical skill that might land them a job. Teach a child computational thinking, and he or she will be equipped with a mental toolkit that will transcend boundaries and enable them to create the next big innovation in any fields they choose to be in.