Live data from Hacker News

Coding Horror: Separating Programming Sheep from Non-Programming Goats

codinghorror.com

31–40 of 140 posts

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#31
post #8

That article is positively drenched in fixed mindset ( http://www.scientificamerican.com/article.cfm?id=the-secret-... ). Those prophecies tend to be self-fulfilling. But as raganwald says, the only evidence is that universities fail to teach a sizable fraction of the population. Maybe the trick is not to play with IDEs or whatever else they claimed to have tried, but to get rid of the computer and focus on what prog…

> The example of "mental model of assignment" is ridiculous. a=b can mean whatever. It means something totally different to a mathematician than a programmer. Say:

That's why the first group (the predicted to be successful group) is defined as forming a consistent mental model and not necessarily the correct one:

> 44% of students formed a consistent mental model of how assignment works (even if incorrect!)

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#32
FWIW I remember having a hard time understanding equations when I first learned them in algebra. I remember that most of the class argued with the teacher about it. Eventually I was able to grok it, of course, but the average person doesn't get much beyond algebra.

Also, assignment is rather strange concept relative to math education. I don't remember any test where we had to create an algorithm. Variables where things you solved for, not tools.

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#33
post #9

Jeff closes with the following words IN BOLD: “The act of programming seems literally unteachable to a sizable subset of incoming computer science students” There is, of course, an alternate explanation: “We in Universities seem literally incapable of teaching programming to a sizable subset of incoming computer science students” Experiments going back to the 1980s with teaching children how to program using Lego blo…

I would counter-counter that there practically no teacher that can teach. Elementary & high school math teachers deliver a lot of practice, but that ultimately they really just aim to "teach" the kids who naturally understand math. The rest just stumble along and the system covers it up. The same is true for English, History, Phys Ed and pretty much everything.

I don't think the same is true for everything, but I do think this is the case in a fair bit of Math classrooms. I've tutored both a friend (same age) and his his younger sister (5 years younger) and they both struggled with the same exact concepts. Granted, you could say it was genetics, but after some creative examples, they were able to better their skills. It looked to me as a direct failure to truly "teach" Math in the 6-7th grade level of their elementary school district.

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#34
I recall reading about a doctoral student or new professor who was teaching an intro computer science course and the whole while all of his peers were telling him that his course was too difficult for the dolts he had as students. (I can't find the article with what little I remember) By having his students complete much harder, smaller homework than normal (I think?) he was able to push his students farther in the one term than most would be able to get in several.

As the final exam approached the instructors asked his peers to go over the exam he had written up to which they replied something like, "you can't give this to your class, it's too hard and they will all fail and that will make you look bad." The instructor was worried, decided his students could hack it and gave them the exam despite of peer unease. Upon grading the exam, a higher than "normal" proportion (as measured from years previous) of the class left with higher grades and greater grasp of material.

Now hopefully someone knows what I'm talking about so I can re-read that account.

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#35
post #16

I studied to become a computer science teacher. I have not finished my certification for various reasons but I have some limited field work under my belt along with numerous discussions and readings. And, of course, my anecdotal but legitimate experience in public schooling. Let's get one thing straight: the problem is bad teachers. My mentor once said it kind of sucks that UTeach was only available to UT students an…

I think the CS Unplugged approach has a tremendous amount of potential, particularly with its intended audience (primary school). In my 3rd grade class in 1986, one day the teacher told us that she had a loaf of sliced bread in a bag, a jar of peanut butter, a jar of jam, and a knife. She asked each student to write, on a sheet of paper, instructions for making a PBJ sandwich. When all the students had finished, the teacher followed each set of instructions exactly as written. It was amazing and hilarious to see the literal interpretations. I remember it very clearly because I was one of the students who gave incomplete instructions, and it was a minor blow to my ego because I was one of the smart kids. It was also my first programming lesson.

For young students, simple activities like these (and other communication / language exercises like sentence diagramming) can have significant benefits later in their education. I don't think introductory CS education should be completely replaced by non-computer exercises, but it's no surprise that many HS students and college freshmen don't "get it" when the first thing they're exposed to is a pile of code.

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#36
post #22

Eh, that test seemed like it could be unintuitive to those that have never had programming exposure before. How are they to know that "=" is assignment and not testing equality? I guess you could glean that from the context where they immediately ask you the values of the variables after the operation but I could see someone misinterpreting the semantics of that operator.

The point of the test wasn't to determine whether or not people who had never been exposed to programming could correctly divine what operation '=' performs in C. Rather, the idea was to see whether or not, over the course of 20 or so questions, their answers indicated that, whatever they had decided '=' did, right or wrong, they applied their conclusion in a consistent manner. Thus it was irrelevant whether or not t…

This is sometimes called "procedural literacy" or "operational literacy" (http://grandtextauto.org/2004/06/02/procedural-literacy-an-i...), a sort of meta-programming-literacy that isn't literacy in any specific programming language (or even necessarily programming at all), but rather the ability to reason about how systems behave in rational, programmed manners.

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#37
post #22

Eh, that test seemed like it could be unintuitive to those that have never had programming exposure before. How are they to know that "=" is assignment and not testing equality? I guess you could glean that from the context where they immediately ask you the values of the variables after the operation but I could see someone misinterpreting the semantics of that operator.

If i were a complete noob to programming I could definitely see any of the following as possibly true.

a = 20 b = 20

a = 20 b = 10

a = 20 b = 0

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#38
post #10

I used to teach the first CS course at both Harvard and University of Washington. I didn't have this issue at Harvard, but at UW there was definitely a bimodal distribution in abilities. Roughly half the students had what I feel is a more visual / associative way of thinking vs. the focused structure you need to program. The concept that the "non programmers" could never understand was the abstraction of functions. L…

I took a few CS classes at the University of Washington in the 08–09 academic year. The intro CS classes had recently been redesigned [1] to be more effective. Anecdotally: I talked four of my friends into taking one or both of the intro classes (split evenly between science/non-science majors), and they all did well and really enjoyed them. I think how programming is taught at colleges is definitely a fixable problem.

[1] http://www.cs.washington.edu/homes/reges/sigcse/

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#39
I am willing to bet a largeish sum of money that had such a test been around for literacy sometime in 1870 when mass education in the uk started in earnest, we would have found a double hump of people who had a consistent mental model of sentence construction, story arcs, past and future tenses.

The fact almost everyone has same mental model now is down to very early age education. When your parents are literate you will be too.

It's possible this test could be done today in countries with terribly low rates of literacy

Re: Coding Horror: Separating Programming Sheep from Non-Programming Goats

#40
post #30
post #24

Earlier quoted context omitted.

You make a number of good points but I want to respond to one thing - the failure of education. I think it may not be so much a failure of education as so much the economics of education. The use of a single curriculum reduces complexity and administrative overhead (teacher time) which at the professor level is expensive. If the computer science courses were designed to use multiple methods you could indeed better ed…

Wouldn't increasing the success rate by 30-60% pay for itself? If that much of the class fails out after the first course, that's tuition lost for the remainder of the courses, is it not?

Possibly, but only if the subsequent classes do not also have the increased staffing costs.

I guess my point is that just because this group learns how to assign variables doesn't mean they'll be able to program recursively, understand how a compiler works, or be able to debug the stack and they will need just as much help in those classes as they did at the onset.

Post reply on HN