http://bit.ly/35dg21S November 30, 2020
Edsger Dijkstra's 1988 paper "On the Cruelty of Really Teaching Computer Science" (in plain text form at https://bit.ly/3b6bFto) is one of the most well-cited papers on computer science (CS) education. It is also wrong. A growing body of recent research explores the very topic that Dijkstra tried to warn us away from—how we learn and teach computer science with metaphor.
According to Google Scholar, Dijkstra's paper has been cited 571 times. In contrast, the most-cited paper in all of the ACM Digital Library papers related to SIGCSE has 412 citations (see data at https://bit.ly/3bae0Ub). Dijkstra's paper has been cited more than any peer-reviewed CS education research. Many of these citations might be citing the "cruelty" paper as a foil, like Owen Astrachan's "On the Cruelty of Really Teaching Computer Science redux" (https://bit.ly/3pSXSKI).
Dijkstra's argument is that computers represent "radical novelty." There's nothing like them in human experience, and we cannot use our past experience to understand them. In particular, we shouldn't use metaphors.
"It is the most common way of trying to cope with novelty: by means of metaphors and analogies we try to link the new to the old, the novel to the familiar. Under sufficiently slow and gradual change, it works reasonably well; in the case of a sharp discontinuity, however, the method breaks down: though we may glorify it with the name 'common sense,' our past experience is no longer relevant, the analogies become too shallow, and the metaphors become more misleading than illuminating. This is the situation that is characteristic for the "radical" novelty.
"Coping with radical novelty requires an orthogonal method. One must consider one's own past, the experiences collected, and the habits formed in it as an unfortunate accident of history, and one has to approach the radical novelty with a blank mind, consciously refusing to try to link it with what is already familiar, because the familiar is hopelessly inadequate."
We now know this is likely impossible. The learning sciences tell us all learning is based on connecting new experiences to previous, through a process called constructivism developed by Jean Piaget (see a nice explanation at http://bit.ly/3oiCZZ8). Trying to learn something without connection to prior experience inhibits learning. It leads to a phenomenon called inert knowledge (http://bit.ly/3oiCZZ8) where you have memorized stuff to pass the test, but you don't really understand and can't really use the knowledge.
I never really thought much about the metaphors we use to learn and teach computer science until the SIGCSE 2014 paper "Metaphors we teach by" (https://bit.ly/3pQ9bn1). CS teachers and students have been ignoring Dijkstra's admonitions all along. They teach with a variety of metaphors, and though all of them have limitations (Dijkstra was right about that), this paper explored how teachers dealt with the breaking point.
The 2019 paper "Identifying embodied metaphors for computing education" (https://bit.ly/3od9uI9) goes a step further to focus on the metaphors that are based on physicality. From a "radical novelty" perspective, this may seem ridiculous—nothing could be less physical than ideas like "arrays" and "control flow." But from a "constructivism" perspective, nothing could be more natural. The basis for all our experiences are being physical beings in a physical world. When we're dealing with new ideas, we will likely relate them to physical processes.
I am working with Ph.D. student Amber Solomon, who has been studying how teachers teach recursion and how students learn it. She had a paper last summer at the 2020 International Conference of the Learning Sciences about the embodied metaphors that teachers use when teaching recursion (see summary at http://bit.ly/3ogO9xq). Teachers gesture and point, but it's not clear to what. They talk about being "here" and "going." They use language that suggests metaphors like the program "says" something.
Solomon is co-advised by Betsy DiSalvo and myself. The three of us have been spending time coding her videos of CS students understanding and modifying programs that use recursion. These are absolutely fascinating, and once you start looking for metaphors and uses of embodiment, you see it everywhere. I particularly like how students shift metaphors, such as talking about the recursive function "going" and then being "stopped" by the base case, then talking about "going down" the stack and execution being different "on the way back up." We know that there is no "down," "back," or "up" in a computer process—these are examples of using concepts from our everyday physical world to understand computational processes.
In 1988 when Dijkstra wrote this piece, cognitive science journals were only about a decade old, and learning sciences was not established until the 1990s. It is understandable that Dijkstra might not have known about constructivism. Today, we know constructivism as the most widely-accepted theory of how humans learn. Using a constructivist lens on learning about computing, we can better understand how to help students use their everyday knowledge as metaphors to learn computer science.
http://bit.ly/38gYp3p December 1, 2020
My family and I recently celebrated my 63rd birthday. As we were eating dinner that night, one of my sons asked if I had anything special planned for this upcoming year. I hadn't given next year much thought, but since 6310 is 1111112, it occurred to me that this was my last birthday for which my age can be represented in six bits, as it will take seven bits (10000002) to represent my age when I turn 64. When I mentioned this, it triggered a surprisingly long and whimsical discussion. (My sons have both graduated with CS degrees and my wife teaches statistics, so…) Some of the points raised during that discussion included:
If we were to celebrate birthday bit boundaries as the entry points to new life stages, the table here shows the result.
In this table, the bit-boundary ages map surprisingly well to the start of significant life-stage transitions. For example, the start of adolescence is often associated with the onset of puberty, which can occur anytime in the age-range 8–14. In many U.S. states, teenagers can get their driver licenses at 16, marking their transition to adulthood.
Likewise, in the U.S., 60–65 is commonly thought of as the age at which one becomes a senior citizen, and 65 has long been thought of as the typical "retirement" age. However, 65 seems fairly arbitrary; 64 is obviously close by and might be used instead.
As a result of our family discussion, I've decided to: (i) declare my next birthday (#64) to be one of extra-special significance, and (ii) hold a special party to celebrate my crossing of this final birthday bit boundary. Assuming, of course, that I am still around.
If you have read this far, you may well be thinking that this seems like an especially geeky idea. You may even think this seems like evidence of encroaching elderly eccentricity. This would be difficult to dispute.
However, before you render a final judgment, it is worth noting there is a well-known Beatles song about reaching old age, and the title of that song is not "When I'm Sixty Five," but rather "When I'm Sixty Four"!
©2021 ACM 0001-0782/21/3
Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and full citation on the first page. Copyright for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or fee. Request permission to publish from email@example.com or fax (212) 869-0481.
The Digital Library is published by the Association for Computing Machinery. Copyright © 2021 ACM, Inc.
I am happy to see I'm not the only one obsessed with silly and fun numeralia! Twelve years ago, I mentioned this same fact to my father -- He graduated to his seventh bit on the same year I got my sixth bit. Of course, it was of significance (and it became salient) because I had reached half of his age...
I like your mapping to the different life stages... Although I do feel it a bit stretched. I feel marking adolescence before 10-11 years old is pulling it too early. But, yes, the text talks about a rough comparison, it's not making rigorous claims nor presenting specialized bibliography backing each of its claims... So I will just smile and thank you for writing!
My previous manager became 64 last March and I sent a special birthday surprise message celebrating his 100 birthday, in octal. I know he doesn't like birthday celebrations and gave him also a bit better age, i.e. 40 in hexadecimal if he would like that more.
We also celebrated the special 64th birthday for my mother in-law already in 1999 and she liked it a lot. She was pretty sure she would never have another bit in her age but she is still around now, in 2021, but not that healthy anymore.
Displaying all 2 comments