Defining CS Ed out of existence: Have we made CS too hard to learn and teach?

March 9, 2020 at 7:41 am 23 comments

It was this quote in a tweet from Miles Berry that really made me sit up and take notice of the latest news about the Computing at School initiative:

“If computing increasingly means CS, it looks likely that hundreds of thousands of students, particularly girls and poorer students, will be disenfranchised from a digital education over the next few years.”

He was quoting an article from the New Statesman which can be found here. It describes the history of the rise of the CS curriculum in England. The key paragraph for me is:

The new curriculum was failing. While a tougher course had been introduced, few students were taking it and even fewer teachers could teach it. In many cases, even those who could felt uncomfortable doing so.

The government read the reports and has decided to respond. There’s now an enormous investment in England in trying to train new teachers. The question is whether that’s the right investment.

Meanwhile, in Scotland, the headline of this May 2019 article is “Teachers and students in decline: the computing ‘crisis’ in Scotland’s schools.”

Experts are urging the Scottish Government to take radical steps to boost computing science education to prevent the subject from being squeezed out of schools.

The teaching of computing in schools is in “crisis”, practitioners have told The Ferret, with classes shrinking and teachers in short supply. The latest official data shows that the number of children studying the subject declined last year, while the number of teachers has fallen over the last decade.

Despite a national focus on delivering science and technology education and economic development, schools are finding it increasingly difficult to teach computing science to young people, critics say.

Let’s explicitly consider the questions raised in these two articles. Have we defined CS education in such a way that it’s too hard to teach? That it’s not interesting to learn? Maybe that it’s too hard to learn?

I’ve been writing in the last few months about the surprisingly low uptake of CS education in the United States (for example, in this CACM Blog post). No more than 5% of high school students in any US state are getting any CS classes, from the data available. There is value in setting high standards for CS education (as Alan Kay has been arguing), but that’s an argument for the end goal. Where do we start with CS education? How quickly can and will students learn CS education? What does it mean for something to be too hard to teach or too hard to learn?

Overall, US is following a similar strategy as in England and Scotland for computing in K-12: standalone CS classes, heavy emphasis on in-service teacher development, and counting the number of students in CS classes and the number of teachers leading those classes. There is integrated CS in the US, but as far as I know, no state is tracking those numbers. Public policy tends to focus on things that can be measured. Most of the argument against integration says that too little CS is covered in integrated forms. 95% of US students getting no CS at all is even less coverage than CS in integrated forms.

Let’s consider two hypotheses:

Hypothesis #1: We know how to teach computer science in such a way that all students can learn what they need to be technically-literate citizens, or even to develop the prerequisite knowledge they need to be software professionals. We have not yet achieved this goal because we do not have enough teachers to implement the curriculum. Larger investments in teacher development (perhaps including stipends or better pay to CS teachers) would allow us to scale CS Ed to reach everyone.

Hypothesis #2: We have defined computer science education in a way that is too hard to teach (so too few teachers are unwilling to teach it), and that is too hard to learn (which includes not being motivating enough to recruit students or engage student interest in order to achieve learning).

Given the evidence we have in the US, England, and Scotland, which hypothesis is better supported? You may have a Hypothesis #3 or #4 which is also well-supported by the evidence — I am very interested in hearing it.

In general, we tend to take the “insider view” of CS Ed, as Kahneman warned about (see excerpt here). If you step outside CS Ed, are we making progress along a trajectory that leads to CS education for all? And how long is that trajectory? If you were an Education faculty member and learned that CS had less than 5% of US high school students enrolled, wouldn’t it be reasonable to consider it a fad and likely to pass?

As I wrote in my blog post about what I got wrong in the last decade, I no longer think that CS for All is a matter of access. We have to figure out how to improve participation. I’m in support of Hypothesis #2. We need to re-think what and how we teach CS education. Because of my work these days, I suspect that we made a mistake at the design level. I was involved in the early days of the AP CS Principles (AP CSP) process. Most of the AP CSP curricula I’m aware of were developed by and tested with some of the best CS teachers in the US. That design and development process doesn’t promise a curriculum that many teachers can teach and that most students will learn from.

I just got back from a three day visit in Norway, where they are about to roll-out an integration of CS activities (explicitly programming) into mathematics, science, music, and arts & crafts classes. (See workshop about this topic here.). Maybe that would result in more students learning some computer science. Did US, England, and Scotland make a mistake by emphasizing standalone CS classes over integration?

Entry filed under: Uncategorized. Tags: , .

Final (likely) version of JES released, 18 years after first release Ebooks, Handbooks, Strong Themes, and Undergraduate Research: SIGCSE 2020 Preview

23 Comments Add your own

  • 1. Robert Radcliffe Gotwals Jr.  |  March 9, 2020 at 7:55 am

    As posted before on this blog, I teach computational science, in the fields of chemistry, biology, medicine, nanotechnology and humanities. As such, I do a lot of “just in time” CS education. For example, TONIGHT, I will be introducing my computational biology students to R, so we can do a quantitative trait loci (QTL) analysis on mouse DNA data. Because there is a solid context for why the students need to write code and a clear goal (“which chromosome contains genes that code for hypertension?”), MY hypothesis is perhaps more computational science education, and CS is taught in service to the solution of interesting scientific problems.

    • 2. bkm  |  March 9, 2020 at 9:39 am

      But how many students in the US take science courses at the level of rigor that would permit meaningful computational activities to be integrated? And how would the time required to teach enough computing impact coverage of required science content? Here in NY, students have to pass Regents exams in the sciences, which completely determines the content taught

      • 3. Robert Radcliffe Gotwals Jr.  |  March 9, 2020 at 10:12 am

        Yes, the increase in high-stakes testing (APs, Regents, end-of-course (North Carolina) exams, have made all of this problematic. I’ve been doing this a very long time (almost 40 years), and getting computational science was hard when I started, and I think it’s harder now. We proposed an (unfunded) NSF CT grant in chemistry that would have helped us to convince the American Chemical Society to include computational chemistry in its high school standards, which MIGHT have convinced the College Boards to include it in the AP Chemistry exam (“Question: Which is the best computing approach for large molecules? Answer: Molecular Mechanics”). So yes, bkm, getting teachers to integrate computing in the sciences is really hard. I will, however, argue that getting a stand-alone CS course and getting kids into it might be harder!

      • 4. Raul Miller  |  March 9, 2020 at 11:20 am

        Eh.. grade school science classes are plenty rigorous for computational activities.

        Quoting Knuth in his introduction to “Searching and Sorting”:

        “I believe that virtually every important aspect of programming arises somewhere in the context of sorting or searching!”

        (For example.)

        ((Just being willing to transcribe expressions into a computational form is a good first step. Rigging a computational system up to something external — measurement or logging, for example — can come later.))

  • 5. jsheldon  |  March 9, 2020 at 9:09 am

    Thanks for this, Mark.

    “Most of the AP CSP curricula I’m aware of were developed by and tested with some of the best CS teachers in the US. That design and development process doesn’t promise a curriculum that many teachers can teach and that most students will learn from.”
    This is the first time I’d considered this, but it seems a valid point, and one that could be made about a number of education project I’ve worked, both CS Ed and other. Co-designing with the best teachers and then “generalizing” may not work for the less superlative teachers. It would be interesting as a meta experiment to develop a few units with a more representative teacher group to see how accessible the resulting materials would be.

    I also appreciate Robert’s comment. I’ve long had a hard time with learning computing/CS out of context. It may work for a few dedicated students who are most interested in computing for computing’s sake, but for many, it seems less ideal. (And this meshes well with the idea of computational action Mike Tissenbaum and I have been exploring:

  • 6. Sam Tobin-Hochstadt  |  March 9, 2020 at 9:22 am

    Two thoughts:

    Is CSP harder to learn or teach than Algebra 1?

    If the two options for teaching math were 1 year in high school, or several classes on other subjects in middle and high school that “integrated” math, would any students really learn a significant amount of math?

    • 7. Mark Guzdial  |  March 9, 2020 at 9:52 am

      (1) “Is CSP harder to learn or teach than Algebra 1?” Empirically, yes — based on number of teachers teaching it and students succeeding at it. It’s not surprising. We’ve been teaching Algebra for many decades longer than CS. (NCTM turns 100 years old this year. CSTA is 16 years old this year.)

      CSP includes programming, which frightens teachers. In my work figure out how to frame programming in a way that teachers find more acceptable — task-specific programming.

      (2) “If the two options for teaching math were 1 year in high school, or several classes on other subjects in middle and high school that ‘integrated’ math, would any students really learn a significant amount of math?” Can you define “significant”? It’s not just about how much ground gets covered. There’s a difference between “see the topic and can answer the exam question” and “knows how to use the topic after the class.” What we know about learning and transfer suggests that integrated math would be more likely to used after the class ends. Standalone math will more likely lead to inert knowledge.

  • 8. Peter Skillen  |  March 9, 2020 at 9:57 am

    Hi Mark,

    I also support hypothesis number 2…and, indeed Kahneman’s ‘inside view’ perspective on this. Thank you for including that as a reference point. He offers a great deal of info in his various works that may lend support to figuring out this challenge related to the uptake of CS.

    Although I lean heavily in favour of Seymour’s constructionist approaches, I also have no issue with ‘instruction’ embedded in a constructionist environment. (That’s just a disclaimer – I wanted to put out there.)

    Integrating CS within other subject disciplines makes a lot of sense to me and will ‘make more sense’ for the students too! I believe this should continue through secondary schools in addition to separate CS courses at that level.

    Many teachers are doing this at the elementary level—although, I fear that they don’t have the ‘language’ and ‘fluency’ to serendipitously ‘pull out’ the CS as they proceed. I also think that there is a bit of a ‘worksheet’ approach with awesome tutorials that get teachers and students started—but, there is reticence to go deeper when it gets hard. So they often flip to doing the beginning steps of a new tool. E.g., Scratch to MakeCode to Makey Makey, etc.

    I am struggling with how to encourage teachers to ‘fall in love’ with hard learning. But, I am seeing some great results with an Indigenous Ways of Know Mathematics project that involves beading, Metis finger weaving, pattern cores, art, mathematics, and coding (with Lynx — LCSI’s latest.)

    Heart. Passion. Respect.

  • 9. Robert Radcliffe Gotwals Jr.  |  March 9, 2020 at 10:13 am

    PS: Weintrop = Computational Science. Weintrop != computational thinking.

  • 10. gflint  |  March 9, 2020 at 10:33 am

    I teach high school Math and CS. CS is at least a magnitude more difficult to teach (if there were a way of quantifying teaching difficulty that is). My prep time for CS is massive compared to my Math courses, the time spent correcting CS is much greater, and the number of students having difficulty with CS assignments is much greater. My ability to teach CS is also less than Math. In the 40 some years I have been teaching Math the material has not changed a lot. In CS I look at possible changes in my CS curriculum every year. I have to deal with hardware issues, updates to software, universities changing their intro language (bye bye Java, hello Python) and so on. Why anyone would want to become a CS teacher is beyond me (other than it is fun and you get to do cool things).

  • 11. orcmid  |  March 9, 2020 at 11:06 am

    I am willing to consider Hypothesis 2 as supported by some of the observations that people are making. There are aspects of CS that are difficult and maybe can only be touched upon or waved at in K-12 and even early undergraduate.

    A question for me has to do with the E in STEM. Software Development is an engineering activity, despite the fascinating connection with (discrete) mathematics. I think even the notion of Computational Thinking is pointing to the disciplined application of engineering, including divide-and-conquer approaches. The attention to software and usage life cycles, the handling of maintenance and sustaining operation, the determination of usability and suitability for purpose all rely on engineering methodologies, including project management and especially risk management. These all become significant in software development at scale and especially oriented to end-users where computational provisions are instruments in human pursuits.

    It strikes me that the “E” is missing from discussions about CS. How is E present in K-12 general education? How is it connected with what is called CS Ed?

  • 12. gasstationwithoutpumps  |  March 9, 2020 at 11:15 am

    As a computer-science PhD who has been teaching in other fields for decades, I have tried to incorporate aspects of CS into other courses for a long time. The concepts that seem to transfer well are decomposition of problems, documented interfaces, and debugging—things that are poorly taught in CS courses, because overscaffolding has been handing students already decomposed problems, no one is reading students’ documentation, and debugging is treated as an arcane, unteachable (often unlearnable) art.

    These days I teach electronics to bioengineering (mostly biomolecular engineering) students. The only programming they do in the class is writing gnuplot scripts, and I have been struggling to get them to use named variables for their constants and functions and to build their functions using a tiny library of building blocks that I gave them for impedance and voltage dividers.

    Electronics was deliberately chosen as a subject to get students to learn about decomposition and debugging, as (unlike CS) the models used for design are not perfect representations of reality, but the turnaround time for iterative design is much shorter than for biomolecular engineering (minutes or hours, instead of weeks or months). I have a short chapter in my textbook just about debugging—about setting expectations based on a model, then testing to find discrepancies; about documenting the system before building it; about using the decomposition of the block diagram and testing at the interfaces to localize problems; and about building systems a block at a time, testing each block as it is incorporated into the system. These skills are reinforced in the lab—when students ask for help the first response is usually “show me your schematic” and the first check is comparing the schematic to the wired circuit (or, if the schematic is unusual, comparing the schematic to the block diagram).

    Giving design problems that are not single-step problems is important. The students are getting better, but so many of them just want to do fill-in-the-blank learning—most have never solved a multi-step problem in their entire academic careers (these are seniors in engineering majors!).

  • 13. Sue Sentance  |  March 9, 2020 at 11:49 am

    Hi Mark,

    Re your comments about England – I wouldn’t assume that Miles’ comments are representative of every one of us that works in computing education in England (and I think the comment actually came from Peter Kemp, not Miles). The problem with the reporting that that represents is that it is a bit out of date, and relates primarily to our provision from 14-16 years old, using data that Peter is able to analyse with respect to representation. Since 2017, the government has invested £80m in reaching all students – this means ensuring that we facilitate a high-quality computing provision across the country, including underrepresented groups. The project started at the beginning of 2019 and runs to at least 2022 so it’s early to see the full impact of this huge investment. We are also leading on a research project in gender balance in computing. The focus in reporting from England on the results of the 14-16 qualifications don’t highlight the great work that is taking place in England on an incremental, scaffolded introduction to computing concepts and skills that takes place from age 5-14. Much of this work in primary school is done across the curriculum, ie integrated, but the learning objectives for computing need to be clear. We have some history of initiatives in the past where ICT was integrated across the curriculum and it didn’t work so well (lack of accountability or success criteria). So I think it’s too early to ditch hypothesis #1 without making sure that you work on areas for improvement (for example, it’s true that the results from the GCSE in Computer Science that we have make is less attractive to students, but we are working on that), and are prepared to iterate such that you identify core concepts that are age-appropriate, that you understand what pedagogical approaches work most effectively with young children, and provide high-quality resources and support for non-specialist teachers. This is all a work-in-progress given that our subject as a school subject is still in its infancy.

    Find out about the National Centre for Computing Education at and about the gender balance project at

    This is a long comment, but if you’d like me to write a guest blog on computing in England I’m very happy to (now that I can’t attend SIGCSE!).

    • 14. Peter Kemp  |  March 10, 2020 at 5:12 pm

      I attempted a comment as well, but it got very unwieldy, here’s my two pence, outlining some of the issues faced in England:

      I propose two additional (English specific?) hypotheses to help explain the problem:

      Hypothesis 3 – the (exam) subject is one of the hardest there is, with typical females doing particularly badly at it; turning off teachers, schools and students, particularly girls.

      Hypothesis 4 – interpretations of computing are too narrow for the needs of society, and, in particular, the current interests of the average female population; turning off teachers, schools and students, particularly girls.

      • 15. Mark Guzdial  |  March 10, 2020 at 5:49 pm

        This is an amazingly detailed reply, Peter! Many thanks! I have some things to read in the links you shared.

      • 16. alanone1  |  March 11, 2020 at 3:20 am

        Hi Mark

        I very much like Peter Kemp’s detailed reply, and why he chose to do it via Google docs rather than through the dumb (and scandalous) little keyhole provided by WordPress.

        Since I’m living in London most of the year these last few years I will offer a ha’penny (a now obsolete currency, as is possibly my comment).

        I don’t think weak teachers should be allowed to prevent real subject needs to be worked out, developed and taught (much better to develop a long range process to develop the teachers that are needed for the “newer” subjects, like math, sciences, computing, etc.).
        But, I’m quite sure — before we worry about the teachers — that we need to put a lot more effort into thinking about what “computing” might even mean, and especially what it should mean for the “epistemological forming years” of childhood (and before the pressures late in adolescence to prep for jobs or college).

        I wonder if (2) is even politically possible these days, but without a good stab at delineating “essence of computing for humanity” we don’t have to worry.

        I think several pathways should be set up as a cooperating system to converge on better perspectives.

        (a.) take an anthropological perspective: i.e. “humans are not separable from the cultures in which they are embedded”. This means we need to think of how we help growth into adult-culture-members.

        For example, at least we have helping about: world-view, duties to society (such as what does it take to be a voter in the 21st century?), how to raise the next-generation, “richness” (beyond a mechanical life), what should schooling be like, etc. “Livelihood” is one of these, but it should follow the larger issues, not lead.

        All these and more are surrounded by “grand issues and challenges”, for example: food, water, shelter, etc, and now climate, population, health, energy, rights, etc.

        And all this is surrounded by us now all living on the same planet in new ways that must be heeded and coordinated.

        A child born this year will be 80 at the turn of the century. Will they even get there? In what shape? Could they and the planet get there in better shape than things are now?

        (b.) With the above and more as context, we can start pondering about the “Whats?” — the many kinds of fluent thinking with which we’d like the children to grow.

        One large area would be “science and systems” where “science” has to include the epistemological world-views of science, far beyond just teaching it like music appreciation. And “systems” are new perspectives for dealing with many kinds of complexities in the many kinds of situations in which we are embedded: the universe, our planet, our societies, our technologies, our biological natures, our brain/minds, and more.

        (c.) Once we turn our thinking about “How to do this?” we will find many of our confusions about computers for children considerably cleared up by what it takes to address these vastly larger more important needs.

        For example, computing is the best medium we have so far for being able to manifest languages about and models for systems of all kinds. Its spiritual kin here are natural languages, mathematics, maps, diagrams, and other ways to represent ideas — not just to communicate to others, but to help us think more clearly about them.

        We can see that current notions of programming and programming languages are much too weakly conceived for these purposes. Etc.

        I tried some of these ideas in a talk I gave yesterday — by Zoom — to Stanford CS grad students, and to a person they complained that they had hardly been offered any courses at all in “systems” and how computing works with “systems”. This perspective is quite lacking in the US views of computing for children. And of course is generally lacking in most general subjects for most learners.

        d. I think this line of thought leads to the dual requirements of:

        — “systems/models” perspectives being made part of many subjects/issues, and also

        —to merit specific classes/learning of “systems/models” as “language and literature and literacies” (as subjects in their own right).

        I think I can safely guess that most professors of “CS” in the US are not set up to do this even within “CS”. And certainly this will also be the case for K-12. But this just shortchanges both the students, and eventually the history to come.

        We need to bring the teachers and learners to the new subjects, not bring the new subjects down to the teachers and learners (this basically results at best in turning “new subjects” to “old subjects” and often to quite disappear the “new subject” entirely).

        It’s worth looking closely at how a motivated non-expert adult could possibly help a child learn something the adult is not fluent with. (Hint: there are some good models in sports and music; not so many in regular education).

        Best wishes


    • 17. Mark Guzdial  |  March 11, 2020 at 10:18 am

      Hi Sue,

      Thanks for the updates! I appreciate your interest and your response.

      Here’s an offer that I make here publicly, so everyone can call me on it. I believe that great efforts are being made in England to improve participation in computing classes. As you said, the project started in 2019. Peter and Miles are doing data analysis which can only be about things that happened in the past, not about the most current work, and certainly not about the fruits of the current efforts. Next March, before SIGCSE 2021, could you please write a guest post on the current state of computing in England?. I hope that the project is very successful, and you can tell us about it next March.

  • 18. Caitlin Duncan  |  March 9, 2020 at 5:02 pm

    This is definitely pushing me to reconsider some of my opinions/gripes with our national curriculum in New Zealand.
    CS and CT are now part of our Technologies curriculum and are being taught with an exclusively contextualised approach. The focus is entirely on the application of CS and software design to the real world, and to how it impacts people. Overall I think it’s a great approach and the teachers who have embraced it almost all seem to have been converted because of this, but up until now I’ve found myself frustrated with the fact that there seems to be no room for learning some of the CS by itself.

    As a computer scientist my view on it is likely biased because I find the concepts interesting by themselves, but I worry because I think in some ways only using this approach dilutes some of the CS learning, particularly at older ages. Our training with teachers has generally focused more on the “why we should teach it” than the actual “what do we teach and how do we teach it”, which I’ve been very concerned by. The “why” is crucial, but if we don’t actually focus on concepts and knowledge then we aren’t going to get anywhere.

    But reading in this post about the issues the English and Scottish curriculum’s have run into I’m reconsidering this opinion. In such early days of the curriculum maybe focusing just on the context and getting students and teachers engaged is a good approach? Since without engagement and adoption the curriculum might never really get going. It will be interesting to see how the adoption and reception of curricula with these different approaches compare.

  • 19. bh  |  March 9, 2020 at 5:19 pm

    I worry that teaching CS via other subjects will result in teaching the first three lessons over and over, as each teacher can’t rely on what other subject teachers have or haven’t done. This might be less of a problem in countries with national education authorities.

    Maybe other people understand better than I why CS is (allegedy) so hard. There was a discussion earlier in the comments comparing CS with Algebra 1. My impression from talking with civilians is that mostly what they learned in math class was to hate math. That certainly isn’t what we want to teach in CS. It might be worth someone like Mark summarizing for us the research (there must be some) about what people actually take away from their Algebra 1 classes.

    Maybe the people who have trouble teaching CS are teaching Java? That would explain it.

  • 20. ybakos  |  March 12, 2020 at 11:50 am

    I’ve never quite grasped why we’re pushing for dedicated CS courses when the entry point at the university level is “no prior experience.” While “no prior experience” should be clarified, I’ve always felt that the best K12 prep for CS success in higher ed is:

    1) Strong reading, writing and math.
    2) Some prior exposure to problem decomposition and programming
    3) Being a “power user.” (Beyond simple “app literacy.”)

    If K12 can do that well, university CS can take it from there.

    • 21. ybakos  |  March 12, 2020 at 11:52 am

      And, uh, what Alan said. 🙂

  • […] this CACM Blog post about that discussion), and I’ve hypothesized that to be true in this blog (see this post). So, now I’ve been in the room as social studies teachers have their first programming […]

  • […] Guzdial, M. (2020). Defining CS Ed out of existence: Have we made CS too hard to learn and teach? Computing Education Research Blog.… […]


Leave a Reply

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

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


Recent Posts

Blog Stats

  • 2,030,408 hits
March 2020

CS Teaching Tips

%d bloggers like this: