I’ve been meaning to write about Annette Vee’s Coding Literacy: How Computer Programming is Changing Writing for a while now. The book looks at the current interest in “coding literacy” from the perspective of literacy studies. I picked up the book because I was interested in this outside perspective, and two quotes in the introduction immediately told me I was going to enjoy this book:
Programming as defined by computer science of software engineering is bound to echo the values of those contexts. But the concept of coding literacy suggests programming is a literacy practice with many applications beyond a profession defined by a limited set of values. The webmaster, game maker, tinkerer, scientist, and citizen activist can benefit from coding as a means to achieve their goals.
and, more pointedly,
My approach suggests that because programming is so infrastructural to everything we say and do now, leaving it to computer science is like leaving writing to English or other language departments.
There is a lot more to Vee’s book than these introductory thoughts on who codes and how they learn to code. She has great content about the history of literacy, connections between how reading and writing literacy movements relate to coding literacy movements, and how literacy, education, and power are connected. But a thread through all of it that connects to the ideas above is that what is expected in order to be “literate” shifts over time and the types of writing/coding that is considered literate evolves. This suggests that if we do achieve coding literacy, we will also see computer scientists having less ownership over defining coding literacy. Which – as Vee indicates – would be a good thing.
At the same time, I’ve been doing a lot of reading in the computing education research literature over the past month and some themes there brought me back to thinking about Vee’s book. It’s generally accepted that teaching programming is hard and we’re still learning how to do it well. This suggests that computer scientists could give our colleagues in other disciplines a leg up by sharing some of what we have figured out so far. For example – there’s a lot of evidence that collaborative learning really helps and there are some established pair programming practices for the CS classroom that could be adopted regardless of who is doing the coding.
At the same time, CS educators might consider if the goals of coding literacy allow for a broader definition of “success at programming” than we’ve been willing to consider. Can thinking about coding literacy help us refocus on the most essential first outcomes. I just read a paper from SIGCSE ’19 by Pollock, Mouza, Guidry and Pusecker titled “Infusing Computational Thinking across Disciplines: Reflections and Lessons Learned” (ACM Digital Library: https://dl.acm.org/citation.cfm?id=3287469) and while they are writing from the perspective of mentoring faculty in other disciplines to integrate computational thinking in their courses (which they have some really interesting ideas around) I thought their draft of a Computational Thinking Rubric that could be used across disciplines was also a useful reflective tool for me as a computer scientist considering what I hope to achieve in a first course that both encourages students to consider further study in my discipline but also serves students well who may not take any more courses in my program. I think there are connections to what Guzdial has been blogging about recently related to task-specific programming as well, and the “powerful ideas of computer science” identified in an essay he linked to by Marina Umaschi Bers, What Kids Can Learn Through Coding, such as using logic to order a sequence of complex behaviors.
So I’m seeing a lot of connections in various writing I’m encountering about coding literacy (under this or a variety of other labels). Turning back to Vee then, I think this quote from her conclusion is a helpful way to think about how to continue to move forward on these projects:
Studying textual literacy in international contexts, Brian Street advises understanding first what the context for literacy is, and what people want to use it for, and then afterward establishing a curriculum to support and respect those uses. Following this advice from literacy researchers, then, would mean that computational literacy campaigns can aim for certain outcomes, but they must also solicit and respond to the aspirations, ideas, and established practices of their audiences.