Let’s think more broadly about computing education research: Questions about alternative futures

August 5, 2019 at 7:00 am 13 comments

At the Dagstuhl Seminar in July, we spent the last morning going broad.  We posed three questions for the participants.

Imagine that Gates funds a CS teacher in every secondary school in the world, but requires all new languages to be taught (not Java, not Python, not R, not even Racket). “They’re all cultural colonialism! We have to start over!” Says Bill. We have five years to get ready for this. What should we do?

Imagine that Oracle has been found guilty of some heinous crime, that they stole some critical part of the JVM, whatever. The company goes bankrupt, and installation of Java on publicly-owned computers is outlawed in most countries. How do we recover CS Ed?

Five years from now, we’ll discover that Google has secretly been moving all of their infrastructure to Racket, Microsoft to Scala, and Amazon to Haskell (or swap those around). The CS Ed world is shocked — they have been preparing students for the wrong languages for these plum jobs! What do we do now? How do you redesign undergrad ed when it’s not about C++/#/Java/Python?

We got some pushback.  “That’s ridiculous. That’s not at all possible.” (I found amusing the description of we organizers as “Willy Wonka.”) Or, “Our goal should be to produce good programmers for industry — PERIOD!”

Those are reasonable positions, but they should be explicitly selected positions. The point of these questions is to consider our preconceptions, values, and goals. All computing education researchers (strike that: all researchers) should be thinking about alternative futures. What are we trying to change and why? In the end, our goal is to have impact. We have to think about what we are trying to preserve (and it’s okay for “producing industry programmers” to be a preserved goal) and what we are trying to change.

Entry filed under: Uncategorized. Tags: .

Why high school teachers might avoid teaching CS: The role of industry Social studies teachers programming, when high schools choose to teach CS, and new models of cognition and intelligence in programming: An ICER 2019 Preview

13 Comments Add your own

  • 1. Brett Becker  |  August 5, 2019 at 9:15 am

    Part of the pushback was “Our goal should be to produce good programmers for industry — PERIOD!”

    What about students that study computing who don’t want to be programmers, or those that don’t want to work for industry? What about those that want to become lawyers or artists or any other of the things that humans do, and just think that computing (including programming) would be a good foundation for that?

    I did physics for my first major, before I became a CS and physics double. Only 65% of physics undergrads go into private industry and of those, very few physics majors become practising physicists. According to the American Physical Society* a whole 5% of physics undergrads go into physics OR astronomy. 36% become engineers. 25% go into non-STEM careers! 23% go into computer or information systems and 13% into “other STEM”. Non-trivial amounts become doctors and lawyers. The equivalent of CS “producing good programmers for industry” would be physics departments “producing people good at mechanics for industry”, and not be best serving most physics students or for that matter, society at large.

    Should all physics students be decent with mechanics? Sure. For the purpose of serving industry? The numbers above give good reason to reflect before answering that question.
    Should all computing students be decent programmers? Sure. Should all computing students be “produced” so they are good programmers for industry?

    Click to access bachinitemp-p-14.1.pdf

  • 2. astrachano  |  August 5, 2019 at 10:09 am

    It’s a good idea to question preconceptions, values, and goals. But starting from a position that’s defensible as possible is much more reasonable than “Oracle is going bankrupt and Java is outlawed on public computers”. That’s actual nonsense as a way to make Java not the language used in academic settings. Starting from nonsense isn’t, perhaps, the best way to get to sense. “Outlawed? in most countries?”

    Maybe I’m cranky, but starting from reasonable premises seems a better way to have a reasonable discussion

    • 3. Mark Guzdial  |  August 5, 2019 at 11:43 am

      That’s even less sensible than Microsoft and Google secretly re-writing all their infrastructure in new languages? Or Bill Gates condemning existing programming languages as colonialism? None of these make sense. That wasn’t the point.

  • 4. orcmid  |  August 5, 2019 at 11:53 am

    I appreciate the outlandish cases for getting people to think out of the box. It certainly drove the vocationalism issue into the light.

    The question of why physics is taught came to mind immediately. Brett’s answer addresses the collegiate level. Was the topic centered on that?

    The Gates example is about secondary education and refers to “CS.”

    How do we get around conflating all these agendas? I’m still drawn to your take on communities of practice.

  • 5. orcmid  |  August 5, 2019 at 12:25 pm

    Via ACM Technews, also today: https://www.computerweekly.com/news/252467745/Computer-science-undergraduates-most-likely-to-drop-out

    There are a number of apples versus oranges contrasts in the Computer Weekly account, and I recall concerns for much greater drop-out rates in the pre-Sputnik world.

    I am thinking that the notion that anyone can learn programming and/or concepts of computer science does not fare well if we mean that it is taught all the same way in similar settings and times-of-life. I suppose that goes without saying, but maybe it needs to be said anyhow.

    PS: I notice that the Dagstuhl session shied away from the prospect of quantum computing becoming prominent, along with the presence of so-called AI mechanisms in everyday and institutional life. That strikes me as unimaginable with respect to programming as an activity and certainly with respect to programming language importance.

  • 6. Raul Miller  |  August 5, 2019 at 6:01 pm

    Colonialism / migration / immigration – these are all different faces of the same fundamental problem: people can’t always continue to live where they had been living (often, with unhappy emotions, such as despair, contributing to the activity). I think these sorts of events would not have seemed to be well planned, or to have been going well, until long after the fact.

    Personally, though, I do not think that I would feel obligated to re-invent programming languages, even when people draw analogies between programming languages and these unhappy facets of human history. We have lots of useful work, already, and we’re mostly ignoring it.

    I am also convinced, though, that the future is driven by people more than their tools. Their tools are relevant, but what people do with them is more relevant. The personal defects of people who have done memorable things also get a lot of attention. But, what makes people succeed, and what drives civilization forwards, is people being of service to [large numbers of] other people… We get the defects “for free” (or maybe as a consequence??) So I am somewhat dubious about reasoning about the impact of our decisions about isolated tools.


    At this point in history, we have lots of coders but not enough who combine coding with other useful disciplines. Our computing platforms often are designed in ways which make that difficult. We have too many of our industries dealing with numbers which go “up to 11” as opposed to building out systems with meaningful units associated with those numbers. And so on. These things can work for specific temporary cultural groups, but mostly these approaches don’t work, and are quickly replaced by something equally useless (but different).

    If [or when] computing education goes all-in for “useless but different” approaches, I imagine it would balloon, mutate, and mostly get replaced (possibly even in a way that involves human migration, if we mess up badly enough).

    The real value – even in computing – might be in the things which are too boring and simple to hold people’s interest for long. But, if so, how do we reason about that? How do we “drive that forwards”?

    Or am I even making sense at all?

  • 7. Sam Tobin-Hochstadt  |  August 5, 2019 at 9:13 pm

    Vocationalism is rarely the real motivation. If it was, people would teach very differently. For starters, JavaScript would be far and away the primary language, and C++ taught much more rarely than is.

    • 8. Mark Guzdial  |  August 5, 2019 at 10:33 pm

      Every class in the first two years of a CS undergrad at my institution is taught in C++. Maybe not so rare?

    • 9. gasstationwithoutpumps  |  August 6, 2019 at 12:48 am

      Javascript and C++ are both “vocational” languages, but for different vocations. Javascript is the primary language used by web developers, and C++ is the primary language used for programming microcontrollers (think Internet of Things), though mainly the C-compatible subset. Javascript is pretty bad for tiny processors—when your computer budget is 50¢, Javascript is a poor choice.

      The lesson students should be getting is that different programming languages are suited for different tasks, and that it is important to learn more than one language. For decades C++ was my dominant programming language, but now I mainly do rapid prototyping and programs that will only be run once or twice, so Python is my dominant language. I’ve played around at various times with other languages, but I never had a major project for which they would have been more suitable (other than Scratch as my son’s first programming language).

      None of my old C++ programs run any more, because the language changed out from under them. I like Python 2.7, because it is frozen, but of course the language developers want to kill it off, so that old programs will all become useless.

    • 10. Raul Miller  |  August 6, 2019 at 11:13 am

      https://www.codingdojo.com/blog/the-7-most-in-demand-programming-languages-of-2019 suggests (based on job postings) that the number of javascript jobs is roughly similar to the number of c++ jobs.

  • 11. Larry Hiemenz  |  August 6, 2019 at 10:03 am

    Are we preparing students for jobs or careers? I learned COBOL and FORTRAN in the late 70s in community college. That was what industry needed at that time. I was fortunate to have professors in upper division and grad school that prepared me for a career. They equipped me with the tools and skills to problem solve, collaborate, and pivot to new technologies when needed. Learning java and web technologies got me to retirement and my “encore” career of teaching.

    I also wouldn’t discount the “soft” skills. Java will eventually go the way of COBOL, but being able to write clearly in English, work nicely in a team or get up and do a presentation will never be obsolete.

    • 12. Raul Miller  |  August 6, 2019 at 11:44 am

      It’s perhaps also worth noting that there still are cobol jobs.

      Are there fewer, now, than there were in 1970?

  • […] should not be driven by what’s in classrooms today (see previous post making that argument). We should hold ourselves to a higher standard. Our goal is to create a lasting record of […]


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,481 hits
August 2019

CS Teaching Tips

%d bloggers like this: