BLOG@CACM
Computing Profession

Learning Computer Science Is Different Than Learning Other STEM Disciplines

Posted
Mark Guzdial

A colleague who is a STEM Education evaluation expert asked me a great question: "Is learning CS really different from other STEM disciplines? If so, why?" That’s a great topic for a blog post! I have three reasons for thinking that learning CS is different than learning other STEM disciplines.

  1. Our infrastructure for teaching CS is younger, smaller, and weaker;
  2. We don’t realize how hard learning to program is;
  3. CS is so valuable that it changes the affective components of learning.

Infrastructure: In November 2016, Briana Morrison and I published an article in CACM about how CS education is different than other STEM education (see it in ACM DL here). Several of our arguments are relevant for this question, too. We don’t have the infrastructure than other STEM disciplines have. We know less about how people learn programming than what we know about how people come to understand algebra, evaporation, bacteria, and Newton’s Laws.

Here’s a simple numerical comparison to drive this point home. The major U.S. teaching organization for mathematics, the National Council for Teachers of Mathematics (NCTM), was established in 1920. The American Association of Physics Teachers (AAPT) was established in 1950. The Computer Science Teachers Association (CSTA) was established in 2005. The other STEM disciplines have decades more experience in defining learning progressions, establishing programs for preparing teachers, defining frameworks and standards, and creating and testing curriculum. We are simply not going to be as good at teaching CS because we have so little experience at it. That makes the learning experience different.

We don't know how hard learning programming is: Briana’s dissertation was a set of educational psychology experiments that she replicated in CS from comparable experiments in other STEM disciplines. She did not always come up with the expected results. She has published other papers explaining why an experiment didn’t work, or even replicating the experiment to show that the unexpected behavior wasn’t a fluke. I don’t think Briana showed that CS is harder than other STEM disciplines. Rather, I think she showed that we do not really understand why CS is so hard. The intro CS examples and problems that she selected for her experiments seemed reasonable, but were actually much more cognitively complex than the physics and mathematics examples in the original experiments. We simply don’t know yet how to measure the complexity of learning CS.

That was the conclusion of both the 2001 McCracken Working group report and the 2013 replication study. Even small changes to a programming assignment can massively increase the cognitive complexity of an assignment. We as experts have a blind spot: we fill in the blanks on programming problems, and we literally don’t see what’s so hard about a problem.

Probably the best example of this is the Rainfall Problem:

Design a program called rainfall that consumes a list of numbers representing daily rainfall amounts as entered by a user. The list may contain the number -999 indicating the end of the data of interest. Produce the average of the non-negative values in the list up to the first -999 (if it shows up). There may be negative numbers other than -999 in the list.

Most CS teachers think this is a pretty easy, pretty typical intro CS problem. But this problem is infamous. The Rainfall Problem has been used in classrooms and experiments for literally decades, and students always do terribly on the problem—nobody gets even half of their first-year students to get the solution right. In fact, Simon argued in 2013 that students were actually doing worse now than they did when the problem was first published in the 1980’s. Kathi Fisler beat the Rainfall Problem in 2014. She regularly gets the majority of her students to get it right. But we’re still not really sure why. Is it because of her curriculum, because she’s using functional programming, because of the data structures she’s using, or because she’s teaching higher-level functions? We don’t really know what makes programming so hard, and we don’t yet have enough theory to explain why it works when we get it right.

CS is so valuable and growing: My colleague Charles Isbell argues that CS is unique in Universities because we have both (a) a dramatically increasing number of students who want to major in CS and (b) a dramatically increasing number of non-majors who want more CS. The data support both parts of his claim.

The CRA "Generation CS" report and the National Academies’ recent report on CS undergraduate enrollment show that our enrollments are exploding with both a growing number of majors and a growing non-majors population. The non-majors are wise in their choices. The recent "Rebooting Jobs" report from Burning Glass and Oracle Academy shows that CS skills are the most rapidly growing skills requested in job ads, but only 18% of those job ads ask for a CS degree. Chris Scaffidi published a fascinating paper last year showing that workers who program (including building spreadsheets) earn more than similar workers who do not.

This makes the effect of teaching and learning in CS classrooms different than other STEM classes. Students want CS skills, but they don’t want be CS professionals—but there are lots of people in the room who do want to be CS professionals. That creates tensions and challenges. Does the teacher teach for the majors (who have values like the teacher and want jobs that the teacher understands) or for the non-majors? Do the non-majors get a sense that they "don’t belong"? CS has had measurably difficult classroom environments, even before we got flooded with students (see the great work on defensive climates in CS classes). Researchers are noticing the problem. The International Computing Education Research conference in 2017 had over a half dozen papers about emotion.

We are increasingly finding that the emotional component of learning computing (e.g., motivation, feeling of belonging, self-efficacy) is among the most critical variables. When you put more and more students in a high-pressure, competitive setting, and some of whom feel "like" the teacher and some don’t, you get emotional complexity that is unlike any other STEM discipline. Not mathematics, any of the sciences, or any of the engineering disciplines are facing growing numbers of majors and non-majors at the same time. That makes learning CS different and harder.

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More