What does it mean for Computer Science to be harder to learn than other STEM subjects?

January 19, 2018 at 7:00 am 18 comments

I made an argument in my Blog@CACM Post for this month that “Learning Computer Science is Different than Learning Other STEM Disciplines,” and on Twitter, I explicitly added “It’s harder.”

In my Blog@CACM post, I thought it was a no-brainer that CS is harder:

  1. Our infrastructure for teaching CS is younger, smaller, and weaker  (CS is so new, and we don’t have the decades of experience to figure out how to do it well yet.)

  2. We don’t realize how hard learning to program is (The fact that the Rainfall problem seems easy, but it’s clearly not easy, means that CS teachers don’t know how to estimate yet what’s hard for students, so our classes are probably harder than we mean them to be.)

  3. CS is so valuable that it changes the affective components of learning (Classes that are stuffed full of both CS majors and non-majors means that issues of self-efficacy, motivation, and belonging are much bigger in CS than in other STEM disciplines.)

The push back was really interesting.  People pointed out that they took CS classes and math classes, or CS and physics, and CS seemed easy in comparison.  They may be right, but that’s self-report on introspection by people who succeeded at both classes.  My point is that we are probably flunking out (or students are giving up, or opting out) of CS at much higher rates than any other STEM subject, because of the reasons I give.  We’re really using two different measures of “harder” — harder to succeed, or harder in retrospect once succeeded.

I only have a qualitative argument for “It’s harder.” I’m not sure how one would even evaluate the point empirically.  Any suggestions?  How could we measure when one subject is harder than another?

It’s not an important question to answer which is harder, CS vs math, or CS vs physics. A much more important and supportable claim is that CS “is harder” than it needs to be.  We have a lot of extraneous complexity and cognitive load in learning CS.

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

ICER 2018 Call for Participation (I’m co-chairing Works in Progress) Should computer science fulfill a foreign language admissions requirement?

18 Comments Add your own

  • 1. shriramkrishnamurthi  |  January 19, 2018 at 7:21 am

    I was with you until you said flunking out _at much higher rates_. “Rate” implies measuring the denominator, i.e., the number who try. I daresay the denominators for, say, physics and chemistry are both much smaller and far more self-selecting: not many students think of chemistry as their path to a comfortable job at Google or to a unicorn startup. So that can’t be part of your reasoning (even as I agree with all the other things you wrote).

    • 2. Mark Guzdial  |  January 19, 2018 at 7:31 am

      I agree that I need some better words there. It depends on the school. At GT, everyone takes physics and CS, so the denominators are equivalent. While many students take CS for fame and fortune, I believe many students self-select out of CS, because of a sense of “not being a computer person” or because of a fear of associating with the Geeks — perhaps more than in other STEM fields.

      • 3. shriramkrishnamurthi  |  January 19, 2018 at 7:32 am

        Oh. Nothing in your posting said _schools_. I thought you were referring to colleges.

        • 4. Alfred Thompson  |  January 19, 2018 at 3:59 pm

          To some people, especially those not in academia, school, college, and even university mean the same thing even though they mean very different things in academic contexts.

  • 5. shriramkrishnamurthi  |  January 19, 2018 at 7:41 am

    Re. the pushback: Part of the problem is that we have such low standards for CS. I’m hard-pressed, in the 23 years I’ve been doing CS outreach, to think of times when a large number of teachers have rejected a curricular approach for not being rigorous enough. Our curricular standards are…well, not a whole lot of there, there. Whereas with, say, physics teachers, I find desire for rigor a routine thing.

    So many of our CS curricula are intellectually undemanding, and sloppy in evaluating the outcomes (e.g.: testing? we don’t need no stinkin’ testing — that’s an advanced collegiate topic — a prejudice some on this blog may share, ahem). In fact, students who come through these curricula and take my accelerated college intro sometimes emerge in shell-shock: it was the first time CS wasn’t easy for them. (I had the same experience when I ran headlong into SICP my first semester in college.) That’s not the fault of the field, that’s the fault of the curricula.

    It is interesting that rigor of curricula shows up nowhere on your list, because you’re trying to make the CS-is-harder case. But a person on the other side could simply put the thumb of rigor on the scales. All your items for CS-is-harder are about the subject. The gap is between the subject and the specific curricula we use. Furthermore, lack of rigor in some curricula pushes down rigor in others, because ultimately we’re all competing for teachers.

    • 6. Mark Guzdial  |  January 19, 2018 at 11:35 am

      Shriram, do you see teachers saying that they don’t want to teach CS because it’s not rigorous? I see Alan arguing that we haven’t done the deep thinking to understand and explain our field, and that might drive away both teachers and students, but I don’t see his argument explicitly as being about rigor. I have met K12 teachers who complain that CS isn’t taught in a rigorous way, but in studies (ours and others, like the recent UTeach analysis) of why teachers choose to teach CS or not, rigor isn’t a theme.

      • 7. shriramkrishnamurthi  |  January 19, 2018 at 11:40 am

        I may have written poorly, but what I’m saying is that I have NOT seen many teachers refusing content because it isn’t rigorous. (Mike Zamansky notwithstanding. <-;) That is, the opposite of what you think I said.

        In particular, in other subjects (like physics) rigor is very much a theme; in CS it is not (your links are backing up my belief).

        And the consequence of that is, if the curricula are not chosen for rigor and hence are not very rigorous (yes, I know, there's a bit of leap there, but the curricula are visible for one to judge…), then it is not surprising that CS appears much easier than subjects where rigor is a criterion. No wonder "CS seemed easy in comparison".

        • 8. Dastyni Loksa  |  January 19, 2018 at 3:09 pm

          The point you are making I believe is covered by Mark’s first point above:

          Our infrastructure for teaching CS is younger, smaller, and weaker (CS is so new, and we don’t have the decades of experience to figure out how to do it well yet.)

          It is difficult to create rigorous teaching practices if we do not yet understand how explain and teach CS effectively. Until we do understand CS well enough to teach it CS will remain harder to learn than other well established STEM fields.

          • 9. shriramkrishnamurthi  |  January 20, 2018 at 8:13 am

            No, I claim it’s a different point. Even with what knowledge we have right now, there are clearly far more and less rigorous programs. Granted, our standards may evolve and things may look different later (those more- and less- may even switch places!), but that doesn’t mean we can’t evaluate programs *at all* in our current state.

  • 10. Rodrigo Silva Duran (@Rodrigosduran)  |  January 19, 2018 at 8:57 am

    I am very glad about this discussion here since the topic is both my passion and the topic of my Ph.D. proposal.

    Regarding how to measure how one subject is harder than the other, although we don’t have anything related to CS, some Neo-Piagetian models like the Model Of Hierarchical Complexity (http://www.sciencedirect.com/science/article/pii/S0273229798904671) can offer an analytical measure of the complexity of tasks that, in theory, could provide a score that can be cross-domain reliable. To my best knowledge, no one ever applied it to CS or tried to compare the complexity of CS tasks to other tasks (that is exactly what I am trying to do, not necessarily using just the MHC, but adapting other tools).

    Interesting enough, even in the CLT, we have some works related to the topic (how to define and measure intrinsic load as mental load, not effort). I would point to Jens. F Beckmann work (http://www.sciencedirect.com/science/article/pii/S0959475209000383) in conceptualizing a framework to measure the complexity of tasks.

    Nothing definitive, but interesting readings.

    Also, what is your opinion? Do you think that something might be to difficult to learn to certain age groups? Blocks do an amazing job in reducing the extraneous load (syntax) to beginners (even young children), but how about the subjects that we are trying to teach to them? Can we reasonably believe in teaching Machine Learning to 12-year-old kids?

  • 11. alanone1  |  January 19, 2018 at 10:00 am

    Hi Mark

    Trying to address some of your questions towards the end …

    When I took college physics in the late 50s, the two standard texts were: Sears and Zemansky — and Halliday and Resnick. There were a few others of similar weight and span to cover a year’s worth of study. There were similar comprehensive tomes for other sciences that represented the introductory standards agreed on by professional practitioners of each field.

    My first — non-rhetorical — question is “What has the CS field come up with for its comprehensive sweep of itself in college?” I could be missing something that has recently appeared, but I’m not aware of anything that is comparable to other “mathematical sciences”.

    So far I’ve been taking the “S” in “CS” literally as a real intent and aspiration of the field. But in all of my attempts over the years in asking “CS” students and professors for a definition of “CS”, the answers have always been “engineering answers” — “science” doesn’t show up in any modern sense of the term.

    If we take the “S” as a kind of “designer jeans” or “air guitar” tacked on label for something that most people think is really a kind of engineering, then we could look at the field from the “E” point of view. We quickly see that — outside of hardware components (which require both real S and E to be understood and made — it is hard to find serious parallels between “Software Engineering” and the “E” we associate with “Electrical”, “Mechanical”, “Civil”, “Bio”, etc. What we find is that SE is both extremely ad hoc and also mostly rooted in a past that was about 34 doublings of Moore’s Law ago (about a factor of 17 billion in scale).

    Another possibly helpful perspective is to note that computing is much more “constructive” than “science” (it creates a kind of nature rather than tries to analyze a nature) — this is like engineering, and for that matter, like many creative arts — so the “science” part is a “science of the artificial” (as coined by Herb Simon). It’s real science but deeply intertwined with design and construction of systems — very parallel to how bridges and large buildings and bullet trains and airplanes are treated today.

    I could be missing something here, but right now I don’t see our field itself strongly addressing its own deep issues, and also am not aware of any text or reference book that is on a par with the “here’s what our field is deeply about” books for the first year course.

    If we try to find parallels to the current state of things, it looks quite a bit more like the current state of music in the US (maybe a bit worse). The pop music part dominates in the US, but there are still various kinds of processes and practitioners for learning and doing “developed music” (e.g. classical and jazz, etc.). I think “pop computing” also dominates in the US, but I’m much less aware of “developed computing” training and learning. For example, right now I’m using one of the standard apps — WordPress — to write this comment, but despite that we are 25 years after the WWW, and 45 years after Bravo at Xerox Parc, I’m typing into a “hole” in a form that will not allow me to see what the final result will look like — i.e. it is not WYSIWYG — until I say “post” — and then in this particular incarnation, it will not then even allow me to go back and edit (Quora at least allows this!)

    This says to me that there is no general sensibility or minimum thresholds about what “personal computing” should be like, and I think really strong cases can be made that the same obtains for computing itself.

    Next, if you want to find some parallels for “high rate of dropouts” in the past, I suggest looking at how Chemistry was used in many colleges and universities — most especially state institutions who in those days had to admit everyone. Chemistry was a required course in Liberal Arts colleges back then, and it was intentionally made quite tough in a number of ways. In the school I went to, English was the other super tough first year course (and was in many other schools). Both of these were used to provide a kind of filtering process. Not very kind, but in the 50s they were not interested in “doing high school in college”. Nowadays the stakes are very different, and the renumeration per student and the desire for more chances has changed the whole approach to trying to find more ways to achieve “retention”.

    Finally, I think there are a number of things that can be learned by looking at more developed disciplines. I’ll mention just one here. “Biology means variation”, and this means (a) that for thing X some people Y will be able to learn it quicker and easier, and (b) that many people Z can also do very well with a lot more work, and usually over longer time. (Both music and sports learning have these characteristics, along with many others.)

    This suggests that the approach of most American schooling quite misses the “biology” of the learning situation in this and many other respects. There shouldn’t be any stigma for not being a 5 or 6 sigma person, because “Ability = Talent ⊕ Skill ⊕ Will” (where ⊕ is not simple addition).

    A personal note: I’ve been a professional musician (jazz for 10 years) and an ardent classical musician all my life, but compared to most practicing musicians I have to do a lot more work for similar results as regards playing. On the other hand, I can do the theory with a lot less work than most musicians. I prefer the playing, so I’ve had to do the “skill ⊕ will” part, and music is set up to allow this.

    The key idea here is that any really interesting endeavor has a lot of different facets, and it is extremely rare that one person can do all of them really well (I don’t know of any in computing). Xerox Parc was a good example of “making a composite 6 sigma computer scientist” out of about two dozen pretty able researchers. I think that’s what we really want to aim for given what we actually need to be able to do in our field.

  • 12. gasstationwithoutpumps  |  January 19, 2018 at 12:12 pm

    I see no evidence that CS is harder than other STEM fields, nor that difficulty is related to newness or ratio of majors to non-majors.

    Computer science has changed a lot less than biology in the last 40 years. My first course in programming in 1970 is not very different from a first course in programming now (other than minor things like using laptops instead of keypunches and Java instead of Fortran). But biology has changed enormously since my high school days. They didn’t even know about introns and RNA editing in those days!

    Math, physics, and chemistry all teach far more non-majors than majors (admittedly most of the non-majors are in other STEM fields). Given how few math and physics majors there are, the ratios are probably more lopsided than for CS.

    What has happened in physics is that only a very outdated, simplified view of the field is taught to everyone (Newtonian mechanics), and real physics is delayed until upper division. Even then, most physics departments have different series of courses for those who will use the physics (physics majors and engineers), those who just are forced to take it but never use it (biologists), and those taking it out of some sort of desire for breadth (humanities and social science majors).

    Math also has different calculus series for different audiences (at one point UCSC had 4 or 5 different calculus series).

    Chemistry tends to have just one series of courses—they teach everyone as if they were going to be chemistry majors, which is a real disservice to those who need to know some aspects of chemistry, but not the whole field (biologists and bioengineers, for example).

    I see computer science as making some of the same mistake that chemistry makes—trying to pretend that everyone should be taught the same material as the majors, in the same order, to the same depth.

  • 13. Katrin Leinweber  |  January 19, 2018 at 12:14 pm

    Hello, and thanks for this compelling summary!

    Have you looked into grop-out rates from MOOCs? I didn’t complete several CS-related ones and read around a bit, resulting in the impression that MOOCS generally have a very high drop-out rate. Maybe there are comparisons between different subjects on edX, Coursera, etc., though.

    • 14. shriramkrishnamurthi  |  January 19, 2018 at 12:46 pm

      They do have drop-out rates, but that’s because it’s trivial to sign up. It costs nothing; you can just be browsing around the Web, click on a link, and sign up. So there’s zero commitment. There’s often a big drop-off after the first assignment, but also a (big) drop-off _before_ the first one, which tells you that they were not really “serious” sign-ups (for some notion of that term). We can’t really compare MOOC numbers with college numbers.

      I don’t think it would be very accurate to compare the subjects on MOOC sites. MOOCs have been a big hit with *tech* folks, less so in most other subjects (with some notable exceptions). So a developer who is not too serious is much more likely to sign up for a programming-related MOOC than even a CS theory-related MOOC, and very unlikely to sign up for one on, say, geology. So, there are tons of factors that confound making good use of these numbers. Due to the skew towards computer science — in fact, companies like Udacity have given up all pretense of general education and become essentially tech training shops — you should expect to see all sorts of distortions.

      • 15. brainwash99  |  January 19, 2018 at 2:51 pm

        Computer Science is being pushed as essential by many parties. Students find that the reality does not match the sales pitch.

  • 17. chaikens  |  January 21, 2018 at 12:53 am

    I’ve wondered for a long time about how much the student perception that CS is harder than other lower division STEM courses is due to much of the grading being of how well programming projects compile and run. In other subjects, homework is graded predominantly by human readers who grant partial credit according to norms the student expect. Perhaps also students feel more encouragement when they can progress partially and hand in assignments after working a predictable length of time, than when they get mired down by syntax errors and bugs.

    I’ve also wondered about whether the hardness is do to the fact that the “stuff” of other sciences, like numbers, chemicals, pushs/pulls/movements, living things, etc. are part of most every young person’s life experience, home and pre-college education, while hardly anybody experiences composing of things like algorithms before a college course.

  • […] writing lately about how learning programming differs from learning other STEM disciplines (see this post here, for example). So, I was intrigued to see this […]


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 )

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,059,758 hits
January 2018

CS Teaching Tips

%d bloggers like this: