I read Judy Robertson’s CACM article with interest. It advocates for teaching kids more about how computers work including how programs and variables work, and also stuff like the internet and WiFi. The article raised some good points. I have had similar experiences in the context of introducing middle school kids to programming using a “Discourse-Intensive Pedagogy”. I conducted a workshop with kids where the curriculum was loosely structured by design and the goal was to see where it could go spurred by kids’ questions and ideas (or what I termed “computational discourse“—- an idea that very nearly became the topic of my dissertation). I found that in the course of the workshop, and in response to kids’ questions, I ended up explaining things like how variables are stored in memory, about permanent versus temporary storage, and “fairly advanced CS concepts that would not normally be discussed so early in an introductory CS/programming session.” In short, this is the stuff of how computers work that kids would benefit from understanding, no doubt, and student inquiry about any aspect of computing should always be encouraged.
But Judy Robertson’s article also sounded off alarm bells. We need to be teaching about computers AND ALSO about computational thinking (CT) and problem solving, rather than about one or the other. In reality CS is about both¬–factual knowledge and procedures as well as problem solving– and should be taught as such. When we drafted the K-12 CS Framework, there was broad consensus that a sound CS curriculum would focus on both—the “knowledge” components of CS as well as practices (many of which count as CT). It was in response to this need that Code.org created several useful “How Computers Work” videos that address these fact-based knowledge about computers (although I’m not sure how well current curricula in the US are doing beyond teaching coding to encompassing these aspects of CS).
Over the years, this is how both Science and Math teaching have consciously shifted in their curricular approach for K-12 learning. To not simply teach facts and procedures but also design the learning for more doing that involves higher-order thinking skills or as they call them — scientific thinking and mathematical thinking and problem solving. These skills are typically captured under Science and Math Practices in the NRC Science Framework and the Common Core. (Keith Devlin’s recent article serves as a good reminder on how to give life to CCSS Math Practices). Even history teaching has begun to consciously shift toward designing learning experiences that include a focus on “thinking like a historian. As I wrote in a recent article on Computational Thinking, “[T]his shift privileges teaching higher-order critical thinking abilities fundamental in each and every domain beyond rote learning and procedural skills, in what has been designated as ‘deeper learning’ (Education for Life & Work, 2012). Nationwide US efforts around the Common Core standards for subjects such as mathematics and English language, and the NRC Science Framework & Next Generation Science Standards mirror similar shifts in other countries which emphasize disciplinary thinking and ways of knowing and being beyond rote learning. So, teaching mathematics has moved towards thinking like a mathematician; science learning now involves developing competencies for thinking like and enacting the authentic practices of, a scientist.”
Computational thinking in the context of CS, similarly, is about teaching kids problem solving approaches that are used in the discipline of CS and aims to guide creation of computational solutions and development of deeper conceptual understanding even during programming.
The other personal experience that has bearing on these ideas is my research on students’ perceptions of computing. Students’ naïve notions of CS as a discipline are mostly centered (and incorrectly) on the machine. The goal of CS curricula should be to expand that perception to include all the wonderful things computer science includes and engenders. One way to broaden participation—and spark interest—in computing (especially among the 11+ age group) is to move beyond a notion of CS as a study of computers, and open students’ eyes to the many applications of CS that span almost every field.
Remember that until very recently many schools taught “Computers” as a subject that included learning almost entirely about hardware and the machine. Let’s please be careful about the danger in going back to a knowledge-heavy curriculum even if it is an improved version of the erstwhile hardware-focused curriculum and aims to teach more about how programs run and how the internet works.
As with pretty much everything in life, there needs to be a balance. There needs to be room in the curriculum for both. Judy Robertson’s article serves as a reminder that in this rush to only looking at coding and CT, we are indeed creating gaps in kids’ understanding of CS. But it will be wise to keep in mind that well-worn saying “Computer Science is no more about computers than astronomy is about telescopes”