Are some people suited for CS1, and others not?
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 ).
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 .) 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.
 “Teaching Computing to Everyone,” May 2009 CACM.