Since my university had large Korean and Chinese populations, it kind of struck me as parallel to the problems the Asian Studies department had weeding out native speakers looking for an easy A - it was hard to tell them from the kids who could speak but not write. Putting them in a separate section kept them from driving the class, and things went much smoother.
My girlfriend took Berkeley's introductory CS class as an undergraduate. She did well in the class, got an A, but she was really put off by the attitude of many classmates who had prior programming experience and judged her for not having any. It doesn't have to be with programming languages: it can be with things like setting up your UNIX shell, using emacs, ssh etc... something that we take for granted but had to learn at one point or another.
While she didn't intend to Major in Computer Science in the first place, I can't help but think that the environment was almost deliberately designed to make sure that somebody who had great potential to be an excellent programmer couldn't accidentally realize it (much as Jean, the author of the article did). Women who are good at programming still end up deciding against it as a career; on the other hand, many men are horrible at programming, but persist at it.
Interestingly enough, in Russia/former USSR the male:female ratio is in Computing is slightly better (more females) than other technical fields. I am not sure whether that's still the case (I left former USSR in 1996). My mother is a software engineer (she introduced me to Scheme and OCaml, back when you weren't considered a real programmer if you worked in anything other than C++). She had many female colleagues when she worked in a Computer Science research lab (back in the days of [Soviet clones of-] PDP-11s, VAXen and IBM 370s, ATT UNIX, etc... when programming was much more incidentally complex than it is now).
I'm not sure math makes all that much of a difference either because the most experienced people in my class were all doing math-related things (myself a physics minor, my girlfriend a math minor, and my two other friends a math and physics double major, respectively).
I just wouldn't worry so much about experienced students or give them something extra to work on if they wanted it. I started programming when I was 9, meaning I had been messing around with Linux, systems, programming languages, and algorithms for a full 9 years before stepping into my first class freshman year. My professors did the proper thing and used the finals from the freshman year CS courses to propel me to upper level courses in my first quarter. Don't try to work against experience, work with it.
I've graded and TA'd the course for two years, and I think his approach works extremely well. It lets you filter out the people who really get it from the people who are just pattern matching from previous experience.
How do you know this?
At the school where I went, the distribution for CS101 was bimodal; higher peak were the experienced ones, lower peak were the neophytes.
And no, it's not just the effect of "weeding out" the inexperienced kids -- as I said above, a number of the best students in my program had no prior experience, and a fair number of "experienced" kids flamed out once they hit the non-coding portion of the curriculum.
I went to a small school for undergrad, so I knew everyone who graduated with me, and everyone who started with me. Later, I went to a very large graduate school, and while the same patterns seemed to hold, I can't say for sure.
How is the computer field different from other fields? Once they are proficient, some people choose to share their knowledge to let people reach even higher goals, whilst others people enjoy making fun of those less educated and put them down. I've seen such behavior everywhere.
EDIT: Moreover, in the latter case, if you add some ingrained misogyny to the mix, things get even worse.
"Something that frustrates me about the field of computer science is that there are a lot of jerks who think that just because they've "mastered" some programming language or know some obscure unix commands, they are gods and you are nothing."
And frankly, that's the level at which a typical CS freshman is operating. Lots of knowledge about "coding"...very little knowledge about anything else. The playing field is much more level than it initially seems, but because the CS 101 classes are mostly about writing toy code it's easy for prior coding knowledge to be intimidating. In my own undergrad CS program, the CS101 hotshots fared no better, on average, than the kids who came in with no experience at all. In fact, a few of the loudest initial braggarts were the most spectacular flameouts, and about an equal number of the no-prior-experience kids ended up the honors graduates.
Universities could do a lot to combat this problem -- it might be a good idea to let the high-school coding jocks place out of the first CS classes. Alternatively, making first-year classes more about math and less about code would probably put 99% of all incoming students on an even playing field.