Are some people suited for CS1, and others not?

November 29, 2009 at 2:19 pm 4 comments

The Psychology of Programming Interest Group (PPIG) has some of the best thinkers around who struggle to understand how people think about programming.  A recent thread asked the question whether programming could ever be “intuitive,” and how would one measure that.  A side thread started: Aren’t the low success rates in CS1 a sign of non-intuitiveness?  I replied to that thread, and am sharing it here (anonymized):
>> Clearly programming _isn’t_ intuitive for most people, but
>> people who are _now_ programmers often feel strongly that it is.
>> Why?  Is there something we can use to reduce the CS1 failure rate?
> You reduce the failure rate by not letting in the people who are there by
> mistake in the first place. How you detect these is a different issue. I can
> assure you I have spent hours on the phone as an admissions tutor trying to
> dissuade people from doing computing courses when they were adamant they
> wanted to do them and equally clearly entirely unsuited to them (and some of
> these were highly qualified too). People don’t take Physics courses if they
> have had no experience of physics (other than living in the world of course,
> though probably don’t realise that is physics), but they turn up in droves for
> computing courses with no experience.

Isn’t there an implication in your statement above that our ability
to teach computing is as good as it’s going to get, and thus, the only way
to raise the success rates is to reduce the number of people who fail with
our current methods?  Clearly, we (as in the community of those studying
computing education) do have the ability to teach computing to someone with
no experience, because those people whom you will welcome into CS1 do have
experience.  At some point, they didn’t.  What makes for a successful start?

What I find most interesting about the two hump hypothesis is that there are
some people who are highly successful at learning computing, even in the
first course.  Why is that?  What are hidden requirements of computing such
that some people succeed easily, while some do not?  (“Hidden” in that we do
not yet know how to detect them, and we clearly are not *teaching* those
skills, or we’d reliably track through pre-requisite courses.) I agree with
Raymond (Lister), that there is no reason to believe that there is a “geek gene.”
There are various cognitive capabilities that are candidates for the hidden
requirements for learning computing, like spatial reasoning (see [1]).

In 1961, Alan Perlis and C.P. Snow both argued that we should teach everyone
in academia how to program.  They pose an interesting challenge — how do we
teach computing (the parts that will be useful to them) to those who are
“unsuited” to it?  (See [2].)  Brad Myers and colleagues published a paper a
few years ago predicting that we’ll have about 3M professional software
developers in the US in 2012, and about 13M end-user programmers.  There are
many more people who could use what we have to teach about computing well,
and it would certainly be a boost to their productivity if they didn’t have
to invent it for themselves.  We’d have to invent methods to teach those
unsuited to being a professional software developer, though.


[1] Is spatial ability the “Geek Gene”? Why we use algoviz, and why that may
be a bad idea

[2] “Teaching Computing to Everyone,” May 2009 CACM.

Entry filed under: Uncategorized. Tags: , .

Being Thankful for Luck Microsoft’s top developers prefer old-school coding methods

4 Comments Add your own

  • 1. Rhodes Brown  |  November 29, 2009 at 6:25 pm

    I’ve been pondering similar questions of late, but more and more I’m not so sure that “aptitude” or “predisposition” is the real limiter and/or predictor of success.

    At the moment I’m finishing up my third term instructing CS2. Since the course is required by many non-CS programs at our school, and students often enter with a CS1 equivalent obtained elsewhere, I see quite a broad range of backgrounds and abilities. For many, this is the first course that really challenges their programming skills, not CS1.

    In hindsight, if I were asked to identify the common characteristic shared by the (ultimately) successful students, I would say it is engagement… if you’ll pardon the cliche. This may be a result of motivation, or genuine interest in the topics, or a mix of both. What I have found though, is that few start the course with this engagement. Many factors contribute to developing engagement, but in general, I would say that the key skill that underpins the transformation into an engaged and successful student is a willingness to communicate. A willingness to share ideas, questions, and difficulties with peers and instructors. Through this communication, many gain that little edge that allows them to overcome early challenges and gain the confidence to probe into more difficult problems.

    Examining this idea more closely, to me, suggests that the question “Are some people suited for CSx?” is a bit too Darwinian–in the sense that it assumes an individual’s aptitudes (his/her “genes”) are the dominant predictor of success. Recall that survival of the fittest is based on an assumption that the surrounding environment is stable. Early CS education is clearly not a stable environment, and I see no reason to believe that it will stabilize any time soon.

    With all that in mind, perhaps the issue is not how to separate students into two camps, “can-do” and “can’t-do”, devising special tactics for each. Perhaps the real issue is: How do we devise an educational process that is robust (i.e. consistently produces successful students) in the face of constant change?

  • 2. Johannes  |  November 30, 2009 at 5:04 am

    Just wanted to point you to some recent research (you probably know):

    “The camel has two humps”:

    They suggest that being able to program depends on “the attitudes to meaninglessness”

    In contrary, this other paper couldn’t reproduce the findings and they criticize the testing:

  • […] Ben Chun gave the same final exam to his 2008 and 2009 AP CS classes, and in so doing, found the two-hump observation in his result: But the bell curve turned into a bathtub! Why? There are so many variables that […]

  • […] bad at computing and they can’t get better, i.e., they don’t have the “Geek gene.” Those students won’t choose CS, of course, but for such a disappointing […]


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 10,184 other subscribers


Recent Posts

Blog Stats

  • 2,054,521 hits
November 2009

CS Teaching Tips

%d bloggers like this: