Here's some anecdotal info that bothered me when I saw it. I've graded several CS 1 courses and found that out of the class of 20-30, there might be 2 or 3 women, tops. Fine and good, since my school's engineering dept is 87% male and the CS dept is 92% male. However, the thing I noticed was that too many of these girls did poorly in the first few weeks and frequently dropped the course altogether; I'm not sure what they did then, since you can't really do any CS/IT/SE/CE degree without CS 1. Of the guys, maybe 1 or 2 would drop.
Why does this happen? My school is trying hard to get more women in CS and engineering fields, which may mean poorly-qualified girls are being accepted and pushed into these degrees; are we just a statistical anomaly? The numbers in the article would seem to indicate otherwise. Anyone else have insights from their own grading/teaching experiences?
Oh, and regarding pair programming, it's the best possible way to make sure you won't want to see your friend's face for another week, because half the time one of you will want to do something the other one just doesn't "get", so you sit there and explain it repeatedly when you could have just implemented it by yourself, all the while watching your teammate type with a speed and error frequency generally associated with senile chimpanzees.
There's a difference in the way women and men react to poor performance/failure, I read about it fairly recently (possibly on HN?) but can't find the link right now. Will be back if I find it.
Anyway. Women who do badly in the first few weeks of a course will think it's all their fault and drop the course. Men who do badly in the first few weeks of a course will think it's the course's fault and carry on.
Here's the problem as I see it. You're accepting less qualified girls because you want girls in CS, but you're putting them up against a hard course that challenges their self confidence and belief, while their classmates -- typical boisterous male freshmen? -- are apparently coasting along (even if they aren't, they won't show it to the girls).
I'd suggest a summer preparation self-study course (before my CS degree started I had to practice some math questions and read a book about the foundations of CS, which helped a little bit. Some kind of Informatics Olympiad thing might have been more useful) that also overlaps with the beginnings of CS1. That way the start of the course won't seem too bad. At the risk of positively discriminating (though looking at the numbers this is merely fixing a problem), ensure the female students have extra help with the course. Assign a TA/RA/senior student to help them out by e-mail or something. Make sure any less qualified male students get the same help, though.
The article mentions that the proportion of women in biology is 60%. So maybe the women that could be doing well in computer science are seeking out the greater competition and camaraderie of the biology scene.
Self criticism:
1. Blame the victim?
2. 60% still isn't a supermajority like in CompSci/Eng.
Self affirmation:
1. Personal experience affirms. I have met more (in number) intelligent talented female students taking chem and bio disciplines. Example: last weekend I met a girl whose father taught one of my computer engineering courses, wearing a shirt that said "neuroscience".
The comment above you (well right now) indicates that women are less experienced coming into introductory classes. It makes sense that they'll have a higher failure rate, as it's difficult to compete against people who know more than you.
In my experience, they're not only less experienced, but they're continuously falling further behind in experience, at least for the first couple of years. They try to approach the first couple of years of CS the same way you treat the first couple of years of any other major, like math or biology: read the assigned reading, master the concepts, do the homework, and study for the tests. Take a lot of other interesting courses, and spend the first year (or two) deciding whether to major in CS or History or maybe Religion with a pre-law emphasis. Then, as a junior, start thinking about a substantial senior project that will introduce you to practical work. Just like any other college kid.
But that just doesn't work in CS, not at most schools. The curriculum is designed for the average (or slightly below average) student, who already has some programming experience and OS knowledge and who is actively engaged in acquiring more experience and more savoir faire. An intelligent person with no experience can catch up, but only by focusing hard on CS and putting in a lot of extra work to catch up with the other students.
Is there any point in accommodating anyone else besides the lifelong hobby hackers and the focused enthusiasts? I think this is an important question. From a competitive standpoint, there's clearly no point. There are plenty of hard-core geeks, and it seems intuitively obvious that the curriculum can be more advanced and interesting if you take the students' strengths for granted. Washing out everyone else means you can produce graduates who are more deeply knowledgeable about computing and who are better equipped to be productive in typical industry jobs.
On the other hand, it homogenizes the field and bakes in the personal peculiarities -- positive and negative -- of the kinds of people who get deeply interested in computers as teenagers.
Obviously the PC answer (as well as the "big picture, good of society" answer) is to accommodate as wide a range of people as possible. At selective universities that is probably feasible, and if feasible, is the right answer. However, I got my degree in a non-CS field and only took CS classes when I was unemployed for a while early in my career. I took those classes at a community college and at a night extension of a crappy state school. In those classes, it was clear that some of the the geek/hobbyist students had a chance of being decently productive at industry jobs, but the students who had not done any hobby programming, whose only knowledge came from the curriculum, were completely hopeless. It was obvious they would never be competent enough to contribute in any industry job unless their primary competence was something other than computer science. For vocational training, I think it's unrealistic to encourage these "lightweights" to pursue a degree in computer science, because they'll never achieve a useful level of competence. You might as well wash them out and focus on the lifelong geeks, who at least can become competent coders or QA guys.
This is exactly the reason why most folks will never program; not because they don't have the capability to be competent, but because we have this odd culture around programming. There's this belief that CS is something that you have to start when you're young and be obsessed with your whole life to even do.
In any field- math, bio, art, music, the people who are best at it are those types- the start-early would-do-it-for-free types. But there's a whole lot of people milling around who could be second best. In other fields, being second best or not that into it is acceptable.
In computer science it's not. And more importantly, because programming and computer science are often equated, this prevents a whole lot of people from programming.
And who needs to program? I'd argue that the time is past where only computer scientists need to program. Everyone needs to program; biologists, mathematicians, linguists, social scientists... (maybe not the English majors, but w/e) and this idea that programming can only be done by people that started when they were 5 year old boys is a huge loss.
That's been my experience too, but I've only ever done it with people who were much less experienced programmers (i.e. once). It's sounds like you were also working with someone vastly more inexperienced, so it's probably not fair to poo-poo paired programming on that basis alone.
Well, my problem is usually that one of us has a particular data structure or sequence of steps in mind, and it can be hard to explain the exact reasoning for it sometimes. Things are a bit better when you have a nice whiteboard to draw on.
I always feel like the guy at the keyboard ends up having to write most of the real code, because if the other programmer has an idea they either have to switch spaces or he has to painstakingly dictate what he wants. Whoever isn't at the keyboard then tends to feel like he's not really contributing except to pick out occasional syntax errors and try to follow along with what's being written. Maybe it works for some people, but I prefer working alone.
Why does this happen? My school is trying hard to get more women in CS and engineering fields, which may mean poorly-qualified girls are being accepted and pushed into these degrees; are we just a statistical anomaly? The numbers in the article would seem to indicate otherwise. Anyone else have insights from their own grading/teaching experiences?
Oh, and regarding pair programming, it's the best possible way to make sure you won't want to see your friend's face for another week, because half the time one of you will want to do something the other one just doesn't "get", so you sit there and explain it repeatedly when you could have just implemented it by yourself, all the while watching your teammate type with a speed and error frequency generally associated with senile chimpanzees.