At the start of this month, I was honored to receive the ACM SIGCSE Outstanding Contribution to CS Education award for 2019. I posted my thanks here. I did not write a blog post on the talk, but I did ask people to tweet it, and I combined many of the tweets into a crowd-sourced blog post which you can find here.
I was asked to publish my abstract in the conference proceedings "in 1-2 pages." I pushed on that — could I actually publish a two page extended abstract? The program chairs kindly let me, so a mini-summary of my talk is available here.
The premise of my talk is historical: Computer Science was invented as a tool to enable STEM teaching. One of the earliest goals of computer science was to provide computing to teachers and students at all levels.
The earliest reason for teaching students about computers was to support learning in science, engineering, and mathematics (what we now call "STEM"). Donald Knuth told the story in 1972 (see paper here): George Forsythe first published the term "computer science" in an article in the Journal of Engineering Education. For Forsyth, computers were the third leg of literacy for STEM students. He wrote in 1968,
"The most valuable acquisitions in a scientific or technical education are the general-purpose mental tools which remain serviceable for a lifetime. I rate natural language and mathematics as the most important of these tools, and computer science as a third.''
Alan Perlis, the first ACM Turing Award laureate, argued in 1961 that all university students take a course in "computers,'' and that they should all learn programming (see Greenberger). He argued that programming gave students a new way to see the world and solve problems—within their own discipline, and for all scholarly activities. He said,
"Given then the appropriate computer, the capability of developing programming systems, the proper freshman course, and possibly a good follow-up program, the computer will achieve its ultimate role as handmaiden to scholarly university activities.''
Like Perlis, Seymour Papert was interested in the computer as a support for learning activities, especially for children. He made the claim "that children can learn to program and learning to program can affect the way that they learn everything else." His point is not to teach computer science for its own sake, or as vocational training, but as a support for learning in any discipline.
Alan Kay and Andrea diSessa used the term "literacy'' to describe this use of computation as a medium, like reading and writing. I have a collection of Alan Kay literacy pieces here, and Andy diSessa makes his case eloquently in his book Changing Minds (see link here). Kay wrote in 1984, "Computer literacy is a contact with the activity deep enough to make the computational equivalent of reading and writing fluent and enjoyable.'' We can study reading and writing for their own sake, but for most of us, reading and writing is what enables us to express ideas, to communicate with others, and to understand our world. Literacy supports and affects how we learn.
In my talk, I argued that our goal should not be Computational Thinking, but Science, Mathematics, History, Engineering, and Everything Thinking. Computing is a tool that can be used to learn everything else better. The root of that argument is in the roots of our field.