Archive for November 13, 2019

We should be emphasizing design of computing over teaching computational thinking

Alan Kay, Cathie Norris, Elliot Soloway, and I have an article in this month’s Communications of the ACM called “Computational Thinking Should Just Be Good Thinking.” (See link here, and a really nice summary at U-M which links to a preprint draft.) Our argument is that “computational thinking” is already here — students use computing every day, and that computing is undoubtedly influencing their thinking. But that fact is almost trivial. What we really care about is effective, critical, “expanded” thinking where computing can play a role in helping us think better. To do that, we need better computing.

It’s more important to improve computing than to teach students to think with existing computing. The state of our current tools is poor. JavaScript wasn’t designed to be learnable and to help users think. (Actually, I might have just stopped with “JavaScript wasn’t designed.”) We really need to up our game, and we should not be focusing solely on how to teach students about current practices around iteration or abstraction. We should also be about developing better designs so that we spend less time on the artifacts of our current poor designs.

Ken Kahn called us out, in the comments at the CACM site, suggesting that general-purpose programming tools are better than building specialized programming tools. I wrote a Blog@CACM post in response “The Size of Computing Education, By-The-Numbers.” We have so little success building tools that reach large numbers of students that it doesn’t make sense to just build on our best practice. They may all be local maxima. We should try a wide variety of approaches.

I got asked an interesting question on Twitter in response to the article.

Do you think @Bootstrapworld and @BerkeleyDataSci Data 8 modules both embody your philosophy?

I don’t think we’re espousing a philosophy. We’re suggesting a value for design and specifically improved design of computing.

Bootstrap clearly does this. The whole Bootstrap team has worked hard to build, iterate, test, and invent. If you haven’t seen it, I recommend Shriram Krishnamurthi’s August 2019 keynote at the FCRC. They solved some significant computer science design problems in creating Bootstrap.

Berkeley’s Data 8 is curriculum about existing tools, R and Jupyter notebooks. That’s following an approach like most of computational thinking — the focus is on teaching the existing tools. That’s not a bad thing to do, but you end up spending a lot of time teaching around the design flaws in the existing tools. I just don’t buy that R or Jupyter notebooks are well-designed for students. We can do much better. LivelyR (see link here) is an example of trying to do better.

We should be teaching students about computing. But computing is also the most flexible medium humans have ever invented. We should be having an even greater emphasis on fixing, designing, and inventing better computing.


Many thanks to Barbara Ericson, Amy Ko, Shriram Krishnamurthi, and Ben Shapiro who gave me comments on versions (multiple!) of this essay while it was in development. They are not responsible for anything we said, but it would be far less clear without them. The feedback from experts was immensely valuable in tuning the essay. Thanks!

November 13, 2019 at 2:00 am 5 comments


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

Join 9,026 other followers

Feeds

Recent Posts

Blog Stats

  • 1,986,878 hits
November 2019
M T W T F S S
 123
45678910
11121314151617
18192021222324
252627282930  

CS Teaching Tips