For many years I was teaching students computer programming. I was really fascinated with LCSI’s Microworlds and Hypercard because both provided students with a multimedia environment where students could become creators of digital products. Most projects focused on a real problem that students were trying to solve and they used built-in text, graphics, media and programming tools to accomplish their task. Having Logo and Hypertalk as part of those applications, helped students create animated stories and simulations, that students could later manipulate and draw conclusions from. Systems such as these are not only offering students the opportunity to learn how to code, but also a deep understanding of the underlying concepts they encounter while trying to create an original product that comes with a set of problems they need to solve. Although this happened a few years back, I was reminded of it when I read this month’s Scientific American article titled: “Coding for All: Is It a Smart Goal for Schools,” in which the author ponders over the value of teaching programming to all school children.
Is Programming the solution
Silicon Valley and the business world in general have long ago alerted the nation to a growing shortage of workers possessing a certain set of skills that are in high demand. Called 21st century skills, the concept encapsulates a whole set of skills, amongst which are: problem solving, critical thinking, and deep analytical skills. The argument goes that since these skills are absolutely essential to the modern workplace, students need to be introduced to learning experiences that can help them develop those skills. One of these learning experiences is programming. Although programming was introduced in the 1970s and 1980s, when Logo programming was invented by Seymour Papert, it was later abandoned by most schools claiming that it was difficult to teach and only necessary for those who are interested to become programmers.
As it turns out, history tends to repeat itself. In an effort to address industry’s call for qualified workers, the school system is finally making a huge effort to make programming an essential part of its curriculum. Most schools understand that if they have not addressed it yet, they must. Those that are still not sure whether they should step in, have good reasons to fear the effort. There is a huge lack of qualified teachers that understand and can teach programming. Training for teachers is scarce and there is no official curriculum they can follow. In most cases they need to invent the curriculum themselves. A situation that makes teaching coding for all less feasible, generating new doubts whether programming should really be part of what every student needs to learn.
Or is it computational thinking
Part of the doubt stems from the fact that the mere act of teaching coding does not necessarily equip students with those 21st century skills. When teaching programming, a substantial effort is dedicated to the syntax and programming rules. As important as the syntax and rules are, they are just one part of the entire programming process. A major part is the ability to analyze and solve the problems that are at the core of the programming assignment. The analysis and implementation are heavily influenced by what is called “computational thinking”–habits of mind that programmers use to structure and streamline the process. As programming advanced, there are more and more ready made libraries that programmers can utilize, reducing the need to employ deep analytical understanding of the processes necessary to accomplish the programming tasks. I was not surprised to hear a speaker at SxSW Edu conference, say that according to the latest studies, students doing programming are not necessarily developing problem solving skills. According to the article in Scientific American “there is a growing recognition that programming skills can form only part of American students’ preparation for living and working in the 21st century.”
Computational thinking is a fundamental skill for everyone
Jannette M. Wing, a consulting professor of computer science at Carnegie Mellon University and corporate vice president of Microsoft Research thinks that “Computational thinking is a fundamental skill for everyone, not just for computer scientists.” She says that this mode of thinking involves solving problems, designing systems, and understanding human behavior, by drawing on the concepts fundamental to computer science. It includes the ability to abstract, to engage in logical and symbolic reasoning, to take big problems and decompose it into many smaller problems, skills that everyone can use whether they are using a computer or not. Because it is such an essential skill, she believes that we need to add computational thinking to reading writing and arithmetic.
When I reflect on the projects that my students were doing with Hypercard and Microworlds, computational thinking was part of their learning arsenal long before they ever attempted to use programming in their project. It comes down to what came first, the chicken or the egg question. Computational thinking are not habits of mind that derive only from the act of programming. They are habits of mind that can be used to solve problems in any realm. Using these strategies in a variety of settings shows students that computational thinking is useful well beyond the world of computers. In fact, its proponents believe that it has a rich and deep intellectual discipline; a flexible set of mental tools that can be used in many and varied situations; and a body of knowledge and skills of genuine and lasting usefulness in school, the workplace and beyond.