What do I mean by Computing Education Research? The Social Science Perspective

November 5, 2018 at 9:00 am 12 comments

As a new guy at the University of Michigan, I spend a lot of my time explaining who I am and what I mean by computing education research. In this and the next blog posts, I am sharing two of those explanations.

The first one was a six minute lightning talk to the University of Michigan School of Information. My audience was well-versed in social sciences, so I explained who I was in those terms.

I ground a lot of my work in Lave and Wenger’s (1991) theory about Communities of Practice. Let me create a symbol here to represent a community of practice. My symbol has a light boundary where novices engage in legitimate peripheral participation, there is a darker area where full-fledged members of the community work, and the core where the experts live who represent the values and practices of the community.

When people think about computing education research, they mostly think about this community of practice: software development. How do we help students join the community of practice of software developers? That’s an interesting question, and I have done some work there (e.g., on how students come to understand multiple class object-oriented systems, like Model-View-Controller), but that’s not my focus.

Let’s set that community of practice aside (lower left), and consider another that I’m much more interested in: end-users who program. I’ve taught thousands of liberal arts, architecture/design, and business/management majors to program using Media Computation, a contextualized approach to computing that focuses on their interests and needs. I worked with Brian Dorn as he studied graphics designers who learn to program. End-user programmers are far more numerous than professional software developers. They use programming for different purposes, so we would expect them to use different practices, languages, libraries, and tools. That’s why we developed JES, a Python programming environment for our future end-users who are programming with media. I’m very interested in understanding and supporting the practices of end-user programmers.

Let’s keep that community of practice in consideration, and next consider a different one: High school teachers who teach computer science. They’re not about software development, either. They’re going to do something different (different practices) and have different values. High school teachers need to learn efficiently because they don’t have a lot of time to learn, and they want to learn effective methods for their students. Here’s where we work on ebooks, and subgoal labeling, and Barb’s Parsons problems. I’m interested in how we make computing education efficient and effective, and in understanding the underlying cognitive mechanisms at work. Why do some things work better for learning programming than others?

Here’s another community of practice I care about: scientists and engineers who use programming as a new way to do science. Again, different practices and values than software developers. How do we best support them?  What tools do they need for their practices?

I would like students to have the same advantages as scientists and engineers, to be able to use code as a powerful and executable notation. Lately, I’ve been particularly focused on pre-calculus and economics. I know it’s stretching Lave and Wenger’s notion to think about classrooms as kinds of community of practice, so maybe the real community of practice is economists and professionals who use Computing. My specific interest is the edge of the community of practice, constructing legitimate peripheral participation for students who might use computing to aid in their entrance into the field. When does programming help with learning something else, and why does it help, and how can we make it more effective (e.g., use the best parts of programming that have the greatest leverage on supporting learning)?

So let’s consider these communities of practice.

This is a really weird picture, from Lave and Wenger’s perspective. I’m saying that programming is a practice in all of these communities, but it’s different in each one. We actually do know practices like this: Reading and writing, and the use of mathematics.

I suggest that programming is a literacy. (I’m not the first, of course, and I don’t make the argument nearly as well as my colleague, Yasmin Kafai.) It’s a way of expressing thought, communicating with others, and testing and exploring new ideas.

And that’s what makes computing education a social justice issue. If we have really invented a new literacy, we need to make it available to everyone.

Entry filed under: Uncategorized. Tags: , , , , .

Fixing Mathematical Notation with Computing, and “Proving” It with Education When do we know that a programming course is not working for non-CS majors?

12 Comments Add your own

  • 1. Hillary Fleenor  |  November 5, 2018 at 10:26 am


  • 2. orcmid  |  November 5, 2018 at 11:08 am

    Very nice rationale. From my personal experiences in the different layers and communities, this is a great pattern for conceptualizing the expanse of interests and concerns.

    I remain ambivalent about programming as a literacy. I think there’s something there, and maybe some programming will help it emerge. For me this is of a piece with computational thinking. I am coming to the conclusion that we are talking about a form of engineering with a rather different connection to mathematics. Time to dig deeper into “Plato and the Nerd.”

    Signed: Still puzzled after all these years.

    • 3. Mark Guzdial  |  November 5, 2018 at 11:23 am

      Google “Alan Kay Scientific American.” His essays there are still among my favorites for arguing for computing as a kind of literacy.

      • 4. orcmid  |  November 5, 2018 at 12:26 pm

        It’s behind a paywall. I found an article about it with a couple of quotes, but not Kay’s article. I’ve seen the argument before.

        For me, computers and programs are instruments of human purpose. It could be a personal purpose, it could be an instrument of enterprise where the systems involved are all about interactions of people and operations, whether business, institutional, or social. Fitness for purpose is a big deal. You cannot determine that from the code alone.

        I find it typically unfortunate that pattern languages, as employed with respect to software, are a reduction of what Alexander had in mind for architectural patterns and being evocative of human qualities. I am not challenging the value of software patterns, I am saying that they fail to connect with the prevailing patterns of purpose external to the computer. And use cases don’t seem to get there as typically presented. They don’t look out to the surrounding context enough, it seems to me. And code reveals what it is, not what it is for.

        Coming back to your theme here, I think it is great in unpacking all of the communities of practice and the levels of engagement. It’s terrific. I just cringe when it is devolved to programming as a literacy. I may get over it. Yet I think there’s much more to it somehow. Programming might provide a glimpse of it. I worry that it can’t stand on its own, and we are creating a populist movement around instrumental thinking that Joseph Weizenbaum fretted about. I’d be relieved to learn that is not the case.

  • 5. Sue Sentance  |  November 5, 2018 at 4:38 pm

    Thanks Mark – really interesting – I am a great fan of the situated learning perspective and Lave and Wenger’s work (see recent paper on situated learning and teacher professional development in computing https://www.tandfonline.com/doi/full/10.1080/08993408.2018.1525233). I am delighted that you are looking at computing education through a social science (I would call it a sociocultural) lens. I don’t think you are stretching Lave & Wenger at all to consider what goes on in the classroom as practice. And another way of phrasing the programming as literacy point is to look at it from a Vygotskian perspective. Vygotsky talks about the use of tools to support learning, a form of mediated activity. This offers an interpretation for your economists and engineers using programming as a tool, or a means of communication. Love forward to reading more of your work in this vein :).

    • 6. Mark Guzdial  |  November 7, 2018 at 10:50 am

      Thanks, Sue! You are sharing the paper at a perfect time. It’s just the kind of thing that we’re talking about in a new Learning Sciences Research reading group at U. Michigan. We’re going to read and discuss it next week.

  • […] via What do I mean by Computing Education Research? The Social Science Perspective — Computing Educati… […]

  • […] favorite measure is relevance.  I argued in my blog post on Monday that programming is a practice that is relevant to many communities. Do the non-CS majors see the […]

  • […] week, I talked about how I explain what I do to social scientists. This time, let me explain what I do to computer scientists. I haven’t given this talk yet, and […]

  • […] between computer science as it’s taught in Universities and what Annette and I are calling coding/computational literacy (but which might be what Aman Yadav and Shuchi Grover are calling computational thinking).  […]

  • 11. petersironwood  |  December 11, 2018 at 6:19 pm

    Hi, Mark. I hope you’re enjoying the U of M. You might like this short piece on representation and how it’s important, not only in actual programming, but perhaps even more so in how people think about managing software. (John Thomas). https://petersironwood.com/2018/12/11/representation/

  • […] month, I wrote a blog post about programming as a kind of literacy. I got some pushback.  Really? Literacy?  That programming in C stuff?  Well, no, programming in […]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,184 other subscribers


Recent Posts

Blog Stats

  • 2,053,614 hits
November 2018

CS Teaching Tips

%d bloggers like this: