News for hackers. Stuff that matters.
Re:Coding Horror: Separating Programming Sheep from Non-Prog... by jseims on Friday January 27, 2012 @01:18PM (#3519371)
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. Like:

foo(a) { // stuff }

foo(b);

would confuse them because they'd get hung up on foo's parameter declared as 'a', but called with 'b'.

Re:Coding Horror: Separating Programming Sheep from Non-Prog... by Raesan on Friday January 27, 2012 @02:39PM (#3519798)
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-Prog... by dpritchett on Friday January 27, 2012 @03:07PM (#3519918)
Why not use explicit function parameters then?

    def count_orange_slices(number_of_oranges):
        return number_of_oranges * 8

    size_of_my_orange_stash = 10

    count_orange_slices(number_of_oranges=size_of_my_orange_stash)
    >> 80