48 comments

[ 3.7 ms ] story [ 106 ms ] thread
I posted this because I strongly agree with Crista on the notion that some people can inherently program, and some cannot. I think that's as ridiculous as she does. However, I see the sentiment repeated here, often. I posted this to present the arguments of a CS professor on the topic, one who has even more experiencing in it than I do.
Is English your first language?
The one thing I don't see in stuff written by people who are committed to the idea that everyone can be taught to program is before-and-after mark distributions, demonstrating how we can get rid of the apparently robust bimodal distribution that has dominated first year computing courses for decades.

It's great to contend that everyone can be taught to program, but decades of research have yet to answer the question of "How?" Or even "Why?" Many people have very strongly felt opinions, but there is a surprising paucity of data.

The idea that some people get it, some don't is not at all ridiculous: it is a perfectly plausible hypothesis given the robust bimodal mark distribution seen in first year computing, which differs from what we see in math or the sciences. The problem is no one has been able to find anything that correlates well enough with this to be predictive, and if "not getting it" and "getting it" were features of humans we might expect to be able to measure them in ways other than teaching first year computing.

On the other hand, no one has ever been able to get rid of that bimodal shape (so far as I know), so there is an equal and opposite knock against that hypothesis.

I lean toward the "inherent" hypothesis and have some ideas as to what might underlie it, but would be easily convinced otherwise if anyone could actually generate an intro computer curriculum that resulted in a mark distribution that looked more like what we see in first year math or physics.

I compare coding with making music. You can teach everybody to make music, but most people are to shy to begin. Learning to make music requires lots of boring practice. Lot of people fail after a few month of guitar lessons as a kid.

But then there are those manic musicians. A real musician must play everyday, regardless if he has audience, if he gets payed, if it sounds good to anybody but him. A real musician is manic and becomes depressive, if unable to make music. Some of them become great musicians.

Its the same with coding. Most people are to shy to try even. Lots of people fail to get traction. Only a few become manic, and of those a some become great coders.

That's right on with "too shy".

The issues of pedagogy whether it is music or programming are largely sociological.

So why not make being a manic musician attractive and marketable like they do in movies about music?

I guarantee you that the core inspiration that starts (and to a large extent sustains) any involvement in any activity is aesthetic. This makes aesthetics the beginning and end of activities.

But in programming, we just use the manic people as Golden Children to somehow whip the other students into shape. This utterly fails of course, aesthetically and practically and in every other way imaginable. It's an ugly way of doing things and it doesn't actually produce good programmers.

> You can teach everybody to make music

Probably not.

I guess it depends if you read "make" as "create" vs "play". The latter is more likely (but I'd still dispute it.)
I've been using the analogy for 30 years now.

I've taught both programming and guitar over the years, and in the end, those that endure the frustrations and loneliness of learning, because of whatever-inner-drive, have become successful, although it would seem that in this context, the word "successful" is perhaps fairly arbitrary, which also may be at issue here.

It really isn't much more complicated then that.

I just cannot see any shortcut in learning to play guitar besides actually playing an hour a day, with very sore fingertips and sounding like crap, for months, although, of course, my encouragement and beginner-level instruction in how to play "Seven Nation Army" and "Brain Stew" is, at some level, probably sort of helpful.

Same with learning Python/C/JS/etc.

I have always loved the term grok as a wonderful descriptor of gaining these type of skills and knowledge, as it captures the essence of the idea almost perfectly.

[edits]

> Same with learning Python.

A language is like an instrument, once you know one, learning the next will be much easier, because you already know about rhythm and harmonics. Each new instrument, even a new guitar, is a ear opener, as it forces one to play different, to learn fresh.

Same with programming languages. Learning a new language becomes trivial after the first dozen. But each new one widens the way one see code.

(comment deleted)
For me, this article was thought-provoking throughout, but there was a very deeply-buried lede as well: in the linked interview with Maria Klawe[1], all the way at the bottom, where she mentions separating the 101-level CS class by previous programming experience. I think that an exceedingly large portion of the barriers to entry faced by students trying to enter the field is due to the disparity in experience, which masquerades as a disparity in aptitude. That disparity turns into a large barrier to entry, due to both self-selection on the part of the students (feeling intimidated and outclassed), and also the issues being discussed in this article about being written-off as no good by the professor.

There may, perhaps, also be an inherent aptitude component as well. I still sort of think that there probably is. But we still shouldn't confuse that with what's really going on in the intro classes. Some kids that have the aptitude, and still have the potential to become exceedingly competent, should not be weeded out just because they didn't have the good fortune to be exposed to CS before college.

[1] Full disclosure: HMC alumn

No, of course it's good to have people of vastly differing experience and aptitude learning from each other!

You just need to separate the assholes and subhumans from the inexperienced newbies and human being who like the subject for what it is (and not as a way to look down on others).

"Subhuman" is an absurd term to use, especially since trying to look down on others is very much a human flaw.
Subhumans? Your Nazi ideology is showing.
Rubbish article by a professor who somehow can't think straight.

Newsflash: Everyone is as "self-driven" as your typical Golden CS Boy who is going to be next #1 at sucking up to VC's.

And I'll tell you what drives most of those types of people: feelings of inadequacy and insecurity and needing someone to compare against to feel better about himself (i.e., subhuman).

Anyways, going back to the main point, people are very obviously and palpably "self-driven." Otherwise they would just sit there like a robot, and you'd have to give them commands in some kind of neuro assembly language lol.

They are just driven in different directions than you prefer, and it's your job as a fucking teacher to find what these directions are and SHOW them gaps in their thinking and how they can get better.

Of course, you aren't actually interested in this; you just want a choir of more wretched subhumans to preach to.

Broadly speaking, it's sad and funny that nearly 80% of professors I've seen don't do it because they like the subject, it's more because they like the status and want to look down on more people.

In fact, it's only like 20% of professors I've encountered who continually renew my faith and sense of curiosity in the subject, and always introduce me to new realms of the field where I can improve my understanding.

One day people will find out they don't have to pay tuition to be belittled by subhuman idiots presiding in what is in most cases, in the final analysis, make-work positions, and just read HN or proggit for however much internet access costs :)

Holy shit if this isn't a post for the "avoid gratuitous negativity" archives...
If by "post" you are referring to the pile of shit that is linked, then yes. My negativity here is NOTHING compared to the negativity and resentment by the professor in the article, who cloaks it in positive language.

I'm only saying that people should be more aware of what drives others, and look past the surface.

On the other hand, he is advocating for a Cult of Computer Science with specially designed courses for different races of people. Whites get one sort of programming class, women another, blacks yet another, asians yet another, etc.

He's also completely submitted and subjugated himself to the concept of education as preparation for being a laborer drone to make the few richer, rather than education as a way to educate the student. You can tell by his blind devotion to Paul Graham and business students (only business students are as self driven as CS people, obvioulsy they must be because everyone's in it for the money and BIM students are closer to the source)

And as a professor, one can do a lot more damage to society being like this than in other positions. So either this whole article is gratuitous negativity, or it's not and what I'm saying is actually gratuitious positivity; the world is going to be so much better once people like him aren't around!

I can't tell if you're just trolling or if this is actually your sincere interpretation. Did we read the same article, at all? The takeaway from the one I read is, "if all you do is present information in a way that's accessible to extremely bright self-directed students and let the rest fail, you're not a real teacher. Our entire job is to find ways to make programming accessible and compelling to people that it doesn't immediately click with."

I'm not sure how you wound up reading an article about racially segregated CS education as a means of enriching the upper class.

I just think it's a tragedy that the prof only goes this far.

The observation in the article you paraphrased is more the realization of a student or bright child, not a fucking professor. It's sad that we let things degenerate this far in regard to CS education. Only in CS is this "let the rest fail" the conventional wisdom (conventional idiocy that is).

And yes, racial segregation of classes is something that enriches the upper class in general, and the prof is advocating this and that alone makes me hold her in contempt.

1) Do note that most college professors receive no training or education in teaching. That's not what many are hired for; it's sort of peripheral to the job. It's not a CS-only problem, either.

2) The post does not advocate racial segregation, but desegregation. And as noted in the comments, interventions targeted at improving learning for women/racial minorities/veterans/distance students/etc tend to improve learning for everyone.

> And yes, racial segregation of classes is something that enriches the upper class in general, and the prof is advocating this

What in the world are you talking about? This?

"...there are substantial differences in the way that various segments of the population learn ... maybe we need to use pedagogies that work better for each group."

Do you really view this as a proposal to segregate classes by race or along any other lines? The obvious intent is to change how the material is taught to accommodate these differences, not to establish separate CS courses for each group.

What could "use pedagogies that work better for each group" possibly mean other than racial and gender segregation?

Here I'll break this down into pseudocode.

    for each group in racial_gender_groups:
        teachWithMaterialFor(group);
Hell, she even cited "genetics" and "the way the brain is wired." You can't get any more blatant than this.
Even if you assume the most intellectually lazy thing here, this is not yet an argument for segregated classes. For a lazy example, I'll use height: men are on average taller than women. It does not mean we need to segregate them from each other. It means that we need to put items at a level where most people can reach them, and provide mechanisms for people who are dramatically shorter than the norm. That's nice for the ladies, but also helps short guys, people of any gender who are in wheelchairs, little people, etc. All without segregating.

In my classes I have a lot of students educated under a Chinese system and then many educated under a US system. They come with different background. I don't segregate them, but I do actively think about how their learning experiences have been different and how I can challenge all with material that doesn't needlessly advantage one over the other. Every now and then I have a German or a Cameroonian and that seems to work fine for them too.

I'm not a fan of arguments from genetics or brain wiring for teaching. It gets lazy, as noted above. But men and women do have some difference, and training your Crossfit crew for pull-ups with methods that are based on your experiences of the genders' musculatures and previous experience with pull-ups is just sensible. A lot of our CS experiences come with cultural context, rather than from brain wiring. Fine.

> My negativity here is NOTHING compared to the negativity and resentment by the professor in the article, who cloaks it in positive language.

Please note you're assuming the worst of people, and appear to me to be choosing to give no benefit of the doubt. Would you be willing to reconsider doing this? At least for a moment?

> On the other hand, he is advocating for a Cult of Computer Science with specially designed courses for different races of people.

I read the exact opposite into what she's saying: That we have specifically designed courses for white males (that happen to be open to all) and should consider mixing the design up to better serve a broader range.

I base this partly on the fact that she specifically attacks the idea of racial segregation that you seem to think she's suggesting in the intro:

>> Throughout history, and even today in certain parts of the world, attitudes like this have been the basis for keeping entire segments of the population uneducated (“teaching women to read and write?! seriously, they can’t do it, look how much longer it takes for them to learn” or “blacks in Universities?! seriously, they can’t do it, look how their grades are so much lower”). This is basically the attitude of a class of educators who live so much inside the box of convention and intellectual lazyness that they are uncapable of seeing the big picture.

For what it's worth, I would call this negativity. I certainly wouldn't be surprised if there's some resentment there: I'd certainly be resentful if someone scoffed at teaching me how to read and write! I would call it uncloaked negative language.

But, in all these things, it seems to be against segregation, not for it!

On the topic of learning styles: What I've read hasn't mentioned much about race or sex. I believe that we all - even as individuals, regardless of race or sex - use multiple styles, and that we all can benefit from multiple approaches. I certainly don't always get everything, and having an explanation re-framed in a new way - in a new style, one might say - gives me another opportunity to understand.

I think, at worst, she meant to appeal to our sense of fairness and equality by borrowing - perhaps awkwardly - by tying it to the civil rights movement. I'm skeptical at best about how relevant sex or race is. I'm not willing to crucify her over that though.

The author introduces a catchy archetype: The Null Professor. She then proceeds to tell a story about elite universities, which apparently are a breeding sites for such educators. When the author finally turns to explaining the term, 'pedagogy' is invoked. Just pedagogy.

Somewhat later in the post, the word can even be clicked upon. I honestly hoped that the link would explain the specifics in teaching methodology, but it was simply a link to the Wikipedia page about the term.

Good teachers use pedagogy. Bad teachers, which are 'Null Professors', don't use pedagogy. Simple. The author herself once didn't use pedagogy. Now she does. She understands now.

The article then turns to a question: "Why student's don't get it". This also is easily answered: educators should use "problem-driven and hands-on [methods] rather than abstraction-driven".

Is this a tldr or are you getting at something?
Remember, most professors do not get any training in how to teach. It is sad but true that learning about pedagogy is a big step for us. Maybe CS needs some of this pedagogy-discussion.
If you asked an experienced effective high school teacher "how do you do it?" What could they tell you? It took a lot of work to learn how to teach: experimentation, analysis, etc...you simply have to learn how to teach!

What you are fishing for is "how to teach", whereas Crista post is simply pointing out that "you have to learn how to teach". It is a bit circular, but in university most professors come in without any formal training on how to teach undergraduates; the idea that you have to learn how to teach is still quite radical.

If you asked an experienced effective high school teacher "how do you do it?" What could they tell you? It took a lot of work to learn how to teach: experimentation, analysis, etc...you simply have to learn how to teach!

Take a look at Teach Like a Champion 2.0 by Lemov. It answers this precise question! (http://www.amazon.com/Teach-Like-Champion-2-0-Techniques/dp/...).

I currently get a teaching degree. The education for that is split in two parts: The academic part in the university and the practical part at a school. I'm currently in the academic part, but some time ago a professor (not actually a professor) of the practical part gave some insights what the expect in the second part.

He said that no matter how good we will be, in CS half of our (high school) students will not learn much, if anything.

I was (and still am) absolutely shocked about this statement.

He claimed that this was a unique property of CS. If such a thing would happen in any other subject the teacher would be a total failure. But it would happen to him in CS, every college and every teacher in education he was ever responsible for.

This person is responsible for the education of teachers, engaged, probably very well thought and I have every reason to believe him to be a very good teacher. I'm don't know what I should think about this.

But The link at the end is really not helpful.

>At Harvey Mudd we’ve focused on changing four things about learning CS: make it fun, make it relevant, make it not scary and make it clear that lots of kinds of people have careers involving CS. We changed the context of the intro course to “creative problem-solving in science and engineering using computational approaches with Python” instead of “learn to program in Java” and made sure that the homework assignments were a lot of fun. We did not reduce the level of rigor or challenge, and we increased the amount of programming.

So, you made CS less like math. That good for some. But you completely ignore that math education does not suffer these problems. Why not making making it more like math? Well, in the end AFAIK neither works. At least for worse half of high school students.

There is a considerable literature on 'the CS1 problem' in education. It is a long-term, robust observation that the marks in first-year computing courses in university are strongly bimodal in a way that is not seen in other, comparably difficult subjects.

Here is a discussion of a paper (with link to the paper itself) that looks at these issues: http://www.tjradcliffe.com/?p=1338

And some follow-on, where I build a simple model that reproduces the biomodal mark distribution under the assumption that there is a single characteristic that is uniformly distributed amongst the population but that exhibits a threshold when it comes to programming: http://www.tjradcliffe.com/?p=1471

My bet is there's one (or a small number) of characteristics that are possessed in different degree by people and that if you fall below some threshold you will have a hard time learning to code. I liken this to height with respect to getting over a wall in an obstacle course: for people who are tall enough, it'll be easy. For people below some threshold it will become increasingly hard. There are two other variables that matter (strength and weight) so it may be difficult to pull out height as a single parameter, but some linear combination of height, weight and strength should be a good predictor of ability to get over the wall.

No one has found such a small set of factors for programming ability yet, but I'm not aware of anyone testing the things that are likely to be important, particularly a) ability to follow instructions; b) ability to create a set of instructions for a task that, when followed by a person unfamiliar with every element of the task will result in its successful completion; and c) ability to arbitrarily use anything to represent anything else.

I think your entire thesis can be boiled down to "if there is a will, there is a way."

Which, I believe, also hold true with learning to program.

Not at all. It's "Some (maybe many) people will require an implausibly large amount of will for learning to code to be a worthwhile use of their time."

Like anyone who has pursued a diversity of interests fairly seriously over decades, I've found that some things are really easy for me, others not. I'm an excellent poet, if I do say so myself, and although I've worked hard at it, it comes easily to me. But after forty years of steady practice I'm pretty sure I will never be much of a prose stylist, no matter how hard I work at it. I can tell a decent story, but when I look at people like Iain Banks or David Mitchell I recognize that they "get it" in a way I probably never will, no matter how much effort I put in.

So the belief that force of will can overcome all obstacles is not one that I subscribe to. It can help, but some obstacles are simply too big. It is an open question if this is often the case with regard to learning to code, and while I think it is, the lack of any independent measure of "getting it" makes my position implausible. As such, all that would take to convince me otherwise would be a way of teaching CS1 that didn't routinely result in the traditional bimodal mark distribution.

> Not at all. It's "Some (maybe many) people will require an implausibly large amount of will for learning to code to be a worthwhile use of their time."

I totally agree with this, and, if fact, it I were totally honest I would say that I took up programming at 15yo because it came easily to me and seemed like a great way to make a living, although performing music was my true love.

I am not saying " force of will can overcome all obstacles", but I am saying if someone wants to overcome their obstacles, there should be no additional ones placed in their way just because they are on the wrong side of the "bimodal mark distribution" curve.

You're missing the point. Imprecise thinking and forgetfulness is not lack of will, it's imprecise thinking and forgetfulness.
Am I only one who read this as "the null processor" and thought it's a dumbed-down CPU for educational purposes?
The problem with CS education is that many students have had experience programming (and with computers generally) during their teen years, so professors can get away with not properly teaching CS fundamentals as many students already know them, or at least enough to easily grasp the rest.

But there are plenty of students who don't, and they're the ones left out. They have no idea how to program, and the useless programming course won't help them, because for the past 30 years most of the students taking it have already known how to program, so the people designing the course have no idea as to its actual quality. The professors see them struggling and assume they just "don't get it".

It's this which also causes the massive gender bias in CS students: male students, to whom early (and current) computers were marketed, had learned to program at home. Female students, to whom home computers were never marketed, mostly didn't learn to program at home. So they take the course, are considered by the professors to "not get it" unlike most of their male peers, and drop out: http://www.npr.org/blogs/money/2014/10/21/357629765/when-wom...

The post specifically addresses this in paragraph two:

> First, after the first few years of being a professor, my conclusion was the same: there’s nothing I can do, some students get it others don’t. I’ve learned a few things since then, and I know I was completely wrong. I was being a “Null Professor” at the time. Now I know better.

...

> A Null Professor is someone who never has to think about pedagogy. The Null Professor is not necessarily a bad professor, although that may happen too; it’s just that he/she doesn’t think about pedagogy, teaching comes as whatever natural teaching skill he/she has.

(comment deleted)
I don't agree with the fact that programming can't be taught. However, I also can't overcome 12+ years of (mis-)education in one semester.

There was an article posted that showed that you could predict performance in introductory CS from a single test given at the beginning of the semester. There were 3 groups:

1) the group who understood about rules, applying them to a computing system and had the correct interpretation of them--they did well unsurprisingly.

2) the group who understood about rules, applied them consistently, but simply had the wrong rules internalized. They did well after being taught since all you had to do was correct the wrong rules.

3) the group who simply didn't have any logical understanding of how to apply underlying rules to a system--they simply failed miserably. To teach these people CS, you first have to teach these people logical cause/effect thought. This is so fundamental a building block that you can't possibly cover it in a CS course. So, to a first approximation, these people actually can't be taught because you have to fix something else first.

And, that problem, I suspect, is actually buried in the article:

"give me a fake problem, and I don’t think it’s worth my time; my brain shuts off. I suspect a lot of people (especially women) are like me."

When faced with this situation, some of us get told: "Tough. Suck it up. You don't always get to do interesting things, and you have to succeed even if it's boring." Others of us get sympathized with and are allowed to slack with excuses like "Math is hard; I wasn't any good at it either." A couple iterations of this and you wind up with a gap in final achievement even though there is no gap in initial ability.

If I were throwing around stereotypes like the author, I would say that "Men get told to suck it up or get out. Women get sympathy and are allowed to stay and make excuses." And thus you wind up with an achievement gap between men and women.

> A final word on genetics. There is increasing evidence that there are substantial differences in the way that various segments of the population learn. For example, studies have shown that men’s and women’s brains are wired differently. So maybe we need to use pedagogies that work better for each group, instead of uniformly using the white male-dominated learning paradigms that have been forced on us for centuries, only to discover that they tend to turn women off.

No. Just no.

First, the study linked to is indeed an interesting finding on neuronal differences between men and women... that is easily twisted to justify existing stereotypes. It doesn't actually say anything about FUNCTIONALITY - just anatomy. But it's easy for the author to connect those dots, despite no scientific basis.

Second, there are no "white male-dominated learning paradigms" that are SPECIAL to computer science. Women have achieved parity in biology, despite "white male-dominated learning paradigms" there, and women have achieved dominance in psychology, again despite "white male-dominated learning paradigms". Those show that such "paradigms" are not the issue.

Honestly, after such a thoughtful article, I was disappointed it ruined itself so thoroughly at the end.

Structure influences functionality. This is the case in both engineering and biology.

For example, dolphins have tails and flippers while I have arms and legs. No one disputes the dolphin is a better swimmer and I am the superior runner.

Why should this be any different with brains? Brains with different structure are suited to different things.

The part about undergraduate versus graduate marks, to me at least, doesn't seem to say what the author thinks it says.

To me, it says "your marking scheme for graduates is broken".

The entire purpose of marks is to classify the people taking the course. Or, to put it another way:

When everyone is super, no-one is.

Let me start by saying I do think there are definitely "Null Professors" who do not properly teach, and thus allow competent students to fail.

However, I must agree with the notion that some people inherently can't program. To take the most extreme case, do you think the dumbest human on earth could learn to program? I don't. All concepts require some level of intelligence to grasp. Many animals have some intelligence, but cannot learn how to count. Humans know how to count because humans originated the concept, and therefore the first human to do it must have had some intrinsic ability others lacked. Teaching can spread the insight, but it cannot create insight from nothing.

I will go one further to say some people who can't program make it into universities. Admissions aren't perfect. People can get in because of their parents, because the school wants them as an athlete, because of Affirmative Action, or a simple misjudgement by university staff.

I think people lose sight of this because intelligence and knowledge are so hard to measure. Footraces are much easier because you can only measure speed against a clock, and I know most humans will never have the ability to run a 4 minute mile. No women has done it yet.

This is not to say this makes some people "better" than others, but everyone has their own skills. It is folly to think everyone can do anything anyone else can do, even in principle.