We are witnessing a remarkable comeback of computer programming in schools. In the 1980s, many schools featured Basic, Logo, or Pascal programming computer labs that students typically visited once a week as an introduction to the discipline. But, by the mid-1990s, schools had largely turned away from programming. In large part, such decline stemmed from a lack of subject-matter integration and a dearth of qualified instructors. Yet there was also the question of purpose. With the rise of preassembled multimedia packages via glossy CD-ROMs over the 1990s, who wanted to toil over syntax typos and debugging problems by creating these applications oneself? This question alone seemingly negated the need to learn programming in school, compounded by the excitement generated by the Internet. Schools started teaching students how to best surf the web rather than how to delve into it and understand how it actually works. Schools largely forgot about programming, some deeming it entirely unnecessary and others labeling it too difficult to teach and learn.
But this is changing. In the past five years, we’ve seen a new-found interest in bringing back learning and teaching programming on all K-12 levels. But it’s digitally based youth cultures, not schools, leading this revival (Kafai & Peppler, 2011). Computers seem to be accessible everywhere, particularly outside school, where children and youth are innovating with technology — often with hand-held devices — to create their own video games, interactive art projects, and even their own programmable clothes through electronic textiles. What’s more, the same computers on which they create these items connect them to wider networks of other young users who share common interests and a similar commitment to connecting through making.
Schools may very well take a page from these informal communities of creative production and networked participation. After all, despite this surge of interconnected youth communities, very few youth are using their smart devices — laptop, iPad, iPhone, or Droid — for something other than the mass consumption of commercial media. These digital natives may be able to technically manipulate the latest devices, but their capacity to wield such devices critically, creatively, and selectively is decidedly less potent.
What then is the role of programming in facilitating more productive use of technology? And what is the role of schools in introducing programming to a wider array of youth, particularly given schools’ own aborted attempts to teach coding in the past? How will schools address challenges of diversity and equity so prevalent in computing culture? Given these questions facing education as well as the economic viability of this country, we must first understand what computational thinking is, how we can teach it, and why the computational participation of online communities and traditional schools together offers new opportunities to engage students.
What is Computational Thinking?
In 2006, Carnegie Mellon professor Jeannette Wing defined computational thinking as all “aspects of designing systems, solving problems, and understanding human behaviors” (2006, p. 6). Wing argued that understanding the world computationally gives a particular lens to understanding problems and contributing to their solutions. Computational thinking — while often strictly associated with computer science — actually is better understood as extending computer science principles to other disciplines in order to help break down the elements of any problem, determine their relationship to each other and the greater whole, and then devise algorithms to arrive at an automated solution. Computational thinking isn’t limited to mathematics and the sciences but also applies to the humanities in fields such as journalism and literature.