We should be emphasizing design of computing over teaching computational thinking

November 13, 2019 at 2:00 am 3 comments

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!

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

Come to the CUE.NEXT Workshop: Making computing education work for all undergraduates Making the Case for Adaptive Parsons problems and Task-Specific Programming: Koli Calling 2019 Preview

3 Comments Add your own

  • 1. Robert Radcliffe Gotwals Jr.  |  November 13, 2019 at 7:24 am

    I keep asking this question: what happened to computational SCIENCE? The discussions are either computational thinking or computer science? Computational science is a well-defined and exceptionally important discipline. Why aren’t we concerned about teaching computational science (or computational X, where X is every scientific endeavor, including humanities?)

    Reply
  • 2. Michael Ball  |  November 14, 2019 at 2:17 am

    I’m not going to say Jupyter Notebooks are the best tool — but they’re a wholly different animal than LivelyR. As a minor point of correction, Data 8 at Berkeley is taught with Python not R.

    I think there’s a lot that can be done, but as a web-based interpreter they’re still better than many tools in other courses. A textbook that’s interactive and can link to runnable examples (code mostly, not graphs), is still progress. Data 8 is a stats course that uses Python as a tool — a tool that hopefully aligns with the other CS and DS courses those students will take, and one that hopefully gets some of them interested enough to take more CS and DS courses. (So far the interest is not really a challenge at all!)

    But I wouldn’t say it’s about the tools.

    Reply
    • 3. Mark Guzdial  |  November 14, 2019 at 9:25 am

      Michael, in your last line, what is “it” referring to? Data 8? Computational Thinking?

      I believe that many of the issues in computing education are actually about the tools. We are teaching something that can’t be directly perceived. You can’t see any data except for how it’s displayed in text form, in a spreadsheet form, in a table, in a notebook. We have lots of evidence that the tools matter. Go from text to blocks and some errors disappear. Use Python for OO and students have significant trouble with ‘self.’ Move to Java, and now students have significant trouble with error messages.

      Sarah Chasins work and Vega-Lite influenced my perception a lot. I saw social studies teachers with no prior programming experience building visualizations in Vega-Lite in less than 10 minutes. Teachers use our task-specific programming languages in precalculus in five.

      Changing the tools matters. We know that novices attend to surface features. How could the look and feel of the programming too not matter?

      Of course, a textbook that’s interactive and can link to runnable examples is good. Runestone and Zybooks are better in that regard. Computer scientists should be working to make something that has Jupyter notebooks features, but is even more usable and supports learning. Yes, LivelyR is different from Jupyter Notebooks, but it’s been designed to scaffold learning. What would it look like to build LivelyR into a notebook interface that’s more Mathematica than Jupyter, but is open source? Let’s make more progress.

      Reply

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 )

Google photo

You are commenting using your Google 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 7,099 other followers

Feeds

Recent Posts

Blog Stats

  • 1,709,353 hits
November 2019
M T W T F S S
« Oct   Dec »
 123
45678910
11121314151617
18192021222324
252627282930  

CS Teaching Tips


%d bloggers like this: