The terms ‘coding’ and ‘programming’ are often used interchangeably and some parents may wonder if there are any differences between the two. Before I answer that question, I would like to throw ‘computational thinking’ into the fray and spend the rest of this blog post dissecting these three terms so parents get a better understanding of what each one means.
Coding versus Programming
This is one of those questions that splits opinions. There’s a camp out there which advocates that coding is low level work – basically translating logic into code (another word for programming language) so that your application can run. Programming is higher order work – designing logic to solve problems. This camp can basically be summed up in four words – ‘Coders cheap. Programmers expensive.’ The other camp, unsurprisingly, argues there is no difference between coding and programming. Engineers, coders, programmers, hackers, developers (devs) are all pretty much the same thing. It’s just branding. I personally don’t see much difference between coding and programming and tend to use the two words interchangeably. If you’re really interested, there is an ongoing debate on Quora about coding versus programming. What I am more interested in as a STEM educator is computational thinking.
So What’s Computational Thinking?
According to Carnegie Mellon Centre for Computational Thinking, “computational thinking is a way of solving problems, designing systems, and understanding human behaviour that draws on concepts fundamental to computer science.” Jeanette M. Wing wrote a seminal piece on computational thinking in 2006 and prefaced the essay with this line. “It (computational thinking) represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use.” The rest of this blog post is strongly influenced by Wing’s piece in 2006 and lifts quotes from the article, the most important of which is the following line. “To reading, writing, and arithmetic, we should add computational thinking to every child’s analytical ability.” Clearly Wing believes computational thinking is linked to skills beyond the ability to write code. Her belief is that “computational thinking involves solving problems, designing systems, and understanding human behavior, by drawing on the concepts fundamental to computer science.”
At Saturday Kids, our belief is that problem solving starts with the user (to Wing’s point, ‘understanding human behavior’) and understanding user needs. That is why we are huge advocates of the human-centered approach of design thinking. Understanding user needs is step 0 (in computer science numbers start with zero instead of one), knowing what problem to solve for is step one. Where computational thinking comes in are the steps after you know what problem it is you’re solving for. As Wing puts it, “computational thinking is reformulating a seemingly difficult problem into one we know how to solve, perhaps by reduction, embedding, transformation, or simulation.” In Saturday Kids classes, we ask students to break a problem down into smaller problems (e.g to build an animation in Scratch, start with one sprite, make the sprite do something, move on to the next sprite when you’re happy wth the first one). The ScratchEd team calls this ‘experimenting and iterating.’ Whatever you want to call it, this much is clear. Computational thinking is not about writing code machines can understand. It is about solving problems efficiently. Wing listed down a number of characteristics of computational thinking. I leave you with the most important. “Fundamental, not rote skill. A fundamental skill is something every human being must know to function in modern society.”