Who Can Learn to Program?

One of my interviewees recently directed me to an academic paper about programming skills as a function of thinking styles. (Here’s a summary and discussion.) In short, it claims to have found a superbly accurate test to determine whether someone would succeed or fail in computer science classes based on whether that person thinks in terms of abstract rule sets.

It’s an interesting idea, but I’d have to take a closer look at the paper to comment on its methodology, and I’m a little wary of the authors’ implication that this test should be applied as a weed-out mechanism. Introductory computer science classes are already conceived of as weed-out classes at many schools, which leads me to wonder if the high failure rates among CS students and people who took this pre-test say more about people’s response to different teaching styles than about their inherent abilities, let alone their capacity to learn new things.

My line of thinking on this right now, at least, is more in line with the people behind Scratch at the MIT Media Lab. The Boston Globe has an article online about Scratch, MIT’s free programming language developed for educational purposes (link via Slashdot):

The goal: turn a daunting subject usually taught in college and considered the domain of geeks into an integral part of education for the grade-school set. MIT researchers hope the program will promote a broader cultural shift, giving a generation already comfortable using computers to consume content online a set of new, easy-to-use tools to change the online landscape itself. […]

“With Scratch, we get rid of a lot of the overhead and let students sink their teeth into the concepts — literally after a day of programming in Scratch they have their own games and own artwork,” [David Malan] said.

This is a clever idea. I remember working with Logo back in elementary school, but I had no idea what the purpose of those exercises was at the time. Making project goals apparent and letting students see the fruits of their labor early will likely make the experience more rewarding and perhaps compel some to learn more powerful languages.

I’m not entirely dismissing the possibility that there may be some observable psychological habits peculiar to “geeky thinking,” and perhaps I should be exploring such claims further. Another interviewee just suggested to me today that the highest concentrations of people with autism are in Boston, Austin, and the Bay Area, which is reminiscent of things I’ve read before about the prevalence of Asperger Syndrome in Silicon Valley. Even so, I think it’s important not to fall into the trap of thinking that people shouldn’t bother pursuing things that don’t come naturally.

2 thoughts on “Who Can Learn to Program?

  1. So many different idea threads here to comment on, I’ll start with this thought: college level introductory computer scicence classes don’t teach programming, though they do seek to evaluate programming skills. Perhaps I’m poisoned by studying compsci within the context of a research university, but it is my perception that the types of students who are most likely to succeed in introductory computer science classes have an initail grounding in programming prior to college. Certainly other students will pass, but I think they rely on an strong ability to teach themselves, peer networks etc. Perhaps this is unfair to say, but I think that assessment in general is so complciated and the nature of strategies undertaken to pass a class can be so complicated that trying to draw any braod conclusions based on class grades seems not particularly useful.
    I do think there is a major issue in that computer science curiculi are structured based on the premise that people who would not be succesful as computer programmers need to be weeded out. The issue here is that the skills one acquires in studying computer science are extremely valuable in a variety of contexts, be it logical thinking or actually using programming in domain specific contexts. The number of science graduate students and assorted freelance tech folks I know who rely heavilly on self taught programming skills is pretty staggering. It seems like almost every graduate student I know working with quantitative data does a relatively substantial amount of programming for analaysis and simulations.
    One of the major failures I see is that computer science at the college level revels in it’s abstractness; thankfully the people intent on teaching it to younger students realize that applied programming with increased accessability is key.
    Scratch is definitley an awesome idea, though certainly not a new one. Logo was probably the most popular “failure” as far as these types of environments go, but there have been many others in between. I personally think Flash is a really exciting tool to work with students with it can be used as just an animation package with Adobe style drawing tools, and then students can build upon that to build interactive objects, games, etc. Unfortunately it isn’t free and isn’t nearly as easy to use as it should be.
    The idea of “geeky thinking” is kind of interesting but the author’s idea that we could screen out people who can’t think “in abstract rule sets” seems far less valuable than say, proposing a new way to teach such skills. I guess whenever I see something referred to as “unteachable” I just irks me as being a cop out, especially when said by someone who would claim to have mastered such skills. In one quick senetence they further elevate themselves for their mastery in an “unteachable” domain and excuse the failures of ineffective teaching.

  2. I never took a programming class in college (which means you can probably discount whatever I say), but I did take a ComSci class called HTML for Poets. Interesting because I already knew HTML when I took the class. The problem was that they didn’t provide any sort of background to real website design, etc. They generally abstracted out the basic tags of HTML and then provided a bunch of examples. Now, this is an okay idea, if someone is going to 1. take the time to pull stuff apart and 2. has the ability to. Now, I’m just talking about HTML which isn’t as complicated as actual programming and there were definitely people who just didn’t get it and they required more hand holding that the ComSci Prof seemed to offer. (Of course, this was a non majors course, so go figure. )

Comments are closed.