Sponsored by Sony Pictures
Watch a scene from 2012, in theaters November 13 view!
whowillsurvive2012.com - Get ready for the biggest event in history - the end of time. How will you survive? 2012- opening 11/13
76 Comments
- inactive, on 10/12/2007, -3/+27Dugg for PDF warning. We need more submitters like you.
- shutz, on 10/12/2007, -0/+12Well, I read most of the document, and I think I understand ;)
Joking aside, having gotten my bachelor's in CS, I have to say that I directly saw the situation being described in the article/paper. Basically, the people who already had some programming basics are already part of the consistent group, and those were easily 60-70% of the group. I had to work with some of the others on class assignments during that first programming course, and I saw first-hand what an "inconsistent" looks like. They dropped like flies during that first course, moving to Math, Actuarial or Physics degrees very quickly. But not having had any previous programming experience wasn't a valid test for failure, many progressed after that, because they had the aptitude.
Programming requires that your mind work in a certain way. Not having that ability doesn't mean you can't think logically, or that you're stupid, it just means your brain is wired for something else. That's like, some people develop the ability to draw while young, and then find it easier to add to that ability through training. But I've known people who couldn't draw to save themselves learn to draw and become really good at it within a few years, while I just can't do it (and I've tried.)
The potential is either there or it isn't, and that probably applies to a lot of abilities. - koick, on 10/12/2007, -1/+11@duncane:
If you use Firefox, you can have just that!: http://www.bolinfest.com/targetalert/ - duncane, on 10/12/2007, -2/+12Even better, maybe the digg engine could warn us with a little icon or something?
- ricepudd, on 10/12/2007, -1/+9I find hovering over the link and seeing '.pdf' at the end of the url in the status bar is a good indicator...
- seanmac, on 10/12/2007, -0/+8Increasingly, you have students that enter computer science without any previous programming experience who decide to try to make a career of it. Some suceed, but most end up switching majors. Just like anything, you will only become good at programming if you love it (or you are a crazy genius who developed a fondness for calculus in 7th grade and learns how to speak foreign languages for fun.)
- gordonchiam, on 10/12/2007, -0/+7Here is the html view from Google
http://72.14.235.104/search?q=cache:OO1-rYJ1SzkJ:www.cs.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf - MajorD, on 10/12/2007, -3/+10Is it possible more people fail because more people are attempting to be programmers?
- übermensch, on 10/12/2007, -1/+7That's a pretty insulting assesment of people who take lower level degrees like commerce, communication, psychology, etc., but it's accurate.
Charles Murray had an interesting saying on this:
``Many bright liberal-arts graduates have not tested themselves. In the liberal arts and some of the soft sciences it is possible to get a PhD without having to confront that awful moment: ``My God, studying hard won't be enough. It is beyond the power of my intellect to understand this.'' With me, it came halfway through a graduate course on the theory of matrices, and it was an invaluable lesson. Isaac Asimov once gave a rule of thumb for knowing when you've hit the wall: when you hear yourself saying to the professor, `I think I understand.''" - lakerdonald, on 10/12/2007, -0/+6Very interesting read.
- csrster, on 10/12/2007, -1/+6Sample:
"In a bizarre event which on the authors insists was planned, and the other maintains was a really stupid idea that just happened to work .."
All papers should be written this way. - inactive, on 10/12/2007, -0/+5You can't have your programming and program the taste of a cake into your mouth too.
- prockcore, on 10/12/2007, -1/+5Yes, but why would it be an uint16? In C, the implicit type is an int.
gradepaper(mark)
{
...
}
is perfectly valid.. gradepaper takes an int, and returns an int. - inactive, on 10/12/2007, -0/+4Fascinating stuff. So many years of programming and only now is someone finally starting to find out how to predict success. I remember taking a huge battery of tests over 20 years ago to get on a UK government funded training scheme for programmers. On the course, the two students who scored the highest in those tests were both hopeless at programming. Modesty forbids me from revealing who came third and still makes a nice living from programming.
- LilGator, on 10/12/2007, -0/+3Hmm, I would have to agree, though I don't have the experience from the other side of the fence. I'm a third year CS student, and as of now haven't touched an IDE besides a little QT GUI work with C++ and Python. The only way I know how to program is a simple text editor, access to the API, and a unix shell for compiling/debugging/executing ... Java/C++/C/Python. It is kinda disconcerting to know that I have no idea how to attempt a project in a mainstream IDE like Visual Studio and the like, and since I don't have much Windows programming experience (besides a little Java) I always look for a Unix-based install to get anything done ...
But I'm sure it's probably better this way, and the IDE programming will be easier because of it. Dunno... - energeek, on 10/12/2007, -0/+3The problem IS due to overuse of IDEs and also not teaching students how to handle error messages, and write clear code. When they see something like ArrayIndexOutOfBoundsException which has a clear name indicating what has happened the students don't get it, they call the lecturer. One of the most important things in programming is to be able to understand the compiler/interpreters error messages and resolve them. But most people suck at programming anyway
- venir, on 10/12/2007, -0/+3@eczarny
I have to disagree with you in terms of Java as a beginning language. Although I think it largely depends on the teacher, Java is a good, robust language that gets the student used to OOP but doesn't overwhelm them with more difficult concepts such as dynamically allocating memory. I am a second year CS student and I started with Java in my first CS class and I think it was a good way to begin. It gave me a good foundation to attack some of the more difficult concepts when I learned C. - RBotros, on 10/12/2007, -0/+3Best Digg story I see for months.. BIG DIGG!
- WiredLain, on 10/12/2007, -0/+3Maybe the problem is due to poor teaching methods? Such as an orverreliance on IDE's at the start. They should save learning to use IDE's for later in the course.
I remeber reading something about this on Slashdot. - doctornkul, on 10/12/2007, -1/+4I'm pretty sure they mean the _rate_ of students failing. I'm sure the actual numbers are a lot higher (because of what you just said), but it's definitely interesting that even though teachers have more and more experience teaching and students have an increasing exposure to tech the percentage of failures is actually increasing.
- doctornkul, on 10/12/2007, -0/+3I'm not so sure about the Calculus thing, really (can't speak for the other), I know a lot of people who do really well in the AMC/AIME (National HS Math Contest) but who surprisingly can't program. It's kind of weird, because they're both heavily based on problem solving. I guess I'm the opposite of that - I'm pretty good at programming but terrible at those kinds of contests.
- Continuum, on 10/12/2007, -1/+4That is a horrible idea. Why let them get through their first year with high marks in something that has little to no development (jobwise) value, get in to REAL programming in second year just to leave like they would have in first year?
It is a waste of the student and professor's time. - targetOO, on 10/12/2007, -2/+4I have been teaching Perl and Java to 1st year Uni students over the last 12 months and I can safely assert that the best debuggers are the best programmers hands down. So much so that whenever a student asks a "why doesn't it compile" question I show them how to debug. By the end of the semester most are happy and I can spend my time helping people on questions other than "I think I'm missing a semicolon, can you find it for me"
Also, my uni (RMIT) teaches Java before C (most other uni's apparently do it the other way). This means they have to learn OOP before procedural however they do get a better environment to work with (and more descriptive errors) which really helps. - inactive, on 10/12/2007, -0/+2Would a prgrammer who uses a consistent model be able to use a language effectively without being able to formally describe it? I think she/he would. Imagine two programmers: one looked at some examples and quickly became effective in, for example 'C', the other read K&R cover to cover and still struggled. Actually, 'C' is a poor example as it's a rather opaque language, but it's the one I read the wretched book for before I realised that isn't the way to learn a language (for me, at least).
Also, there are poorly designed languages which are inconsistent and for which a model is difficult to make. The one that springs to mind is Oracle's dreadful PL/SQL. I haven't used it much recently and can't remember the specific problems, but I do remember the horror when I first started learning it.
There are other languages where the model would be unnecessarily large: think COBOL (better still, don't) which would also make them harder to approach than they should be. - zzleeper, on 10/12/2007, -1/+3I teach programming to 3rd year economics students (undergrad). Although it is oriented to econometrics, the basic stuff (IF, FOR, WHILE, recurrence, a=b) is the same.
I can relate with a LOT of their issues. The need to teach them what really is a=b. The issue teaching iterations, etc. Also, I've seen the "will suck and will ever suck" students, the "could learn all this in 2 days" students, and the "sucks first but after a brain surgery, ends up knowing at least some programming".
Really GOOD paper, helpful for anyone wanting to improve its teaching (tip: first try to change their logic and inductive processes)
(Y) Digg! - csrster, on 10/12/2007, -0/+2IChuckles - if you'd read the article you'd get the point. Ability to learn to program was strongly
correlated with the use of a consistent mental model in solving the problems. Guessing that a
particular variable was meant to be a Java int (for example) was not relevant because those taking the test had neglible or no programming experience. Your preferred strategy ("Don't answer because the assumptions aren't stated" is clearly stated to have a) been predicted as an indicator of success by people with a computer-science backgound and b) shown not to work (because, presumably, it doesn't distinguish between the super-intelligent and the just plain stupid)). - übermensch, on 10/12/2007, -1/+3I'M transfering my undergrad major to comp sci and have only taken one cs class so far (and got an A despite my low B average, because the class was curved with so many low grades that I mustve been in the top 10%), but I'm still gona check this out because I can't imagine making a career out of it.
I remember going up to pick up my exam and seeing the other papers listed with scores like 5/30, 13/30, etc., on about 30-50% of the papers. - RajAtWork, on 10/12/2007, -0/+2So the "blank" group is where management comes from ;-)
- thomasprebble, on 10/12/2007, -0/+2I believe that if you don't spend anytime working on your own problems in your favourite programming language you will fail you course. Last year I got an E in my first undergraduate cosc class. After that I spent the entire Christmas holidays working through my own programs and when I came back to university the following year I came out with an A- in the same course.
- Continuum, on 10/12/2007, -0/+2If you took programming in high school and have a firm grasp on the logic before first year COSC I see no reason to even need to study.
Personally, I got high 90's in my first year classes and rarely attended class. Though in my second year I had difficulty in some of the more advanced classes, not because they were difficult, but because first year had trained me to think "COSC is easy enough that I do not even need to go to class". Sadly, mistaken.
The first year should be challenging enough to make the person think "do I really want to spend the next 4 years learning this and then most of my working life doing it?" otherwise it is a waste of everyones time. - inactive, on 10/12/2007, -1/+3Please forgive me if this sounds at all pedantic...
One thing that isn't mentioned is the way of thinking for a good programmer is actually quite different from that of a "normal person". Forgetting this, and perhaps forgetting HOW to think in the old way, programming authors and instructors make valiant yet futile efforts to communicate their understand in a thinking paradigm wholly foreign and inscrutable to those "non-programmer" students.
Having survived decades of (sometimes exquisitely painful) software and firmware development using various compilers linkers, etc My (previously non-programming) way of thinking has adapted to a paradigm compatible with programming. Another disastrous pitfall is faulty (or non-existent) documentation about what each tool does, and how each tool must be used. Most programmers seem to derive satisfaction ONLY from coding, not from documenting, and sometimes not even from testing!
It's a catch-22, if you know how to (1) program, (2) do the math, (3) do organic chemistry, etc then you already understand the language and compatible way of thinking. If you do not already know, then the first step is to immerse yourself in the chosen environment as a wanna-be-hanger-on with those who DO know and ask specific questions of specific programming (math, organic chemistry, etc) situations.
Start writing programs. The early ones will suck and be very painful to write. Eventually your way of thinking will align itself proportionally to the depth and duration of immersion.
It's alot like trying to learn how to play the violin. It's utterly impossible the first time your make an attempt.
If you stop trying before you succeed, then you have failed. - The_Dude, on 10/12/2007, -0/+2The part I found most interesting is the little section where they described the average person's thought methods, and how they really don't correspond with the strict rules of inductive logic, etc. Hence, common sense is often times just flat out wrong.
This could be remedied by people being taught the Socratic method as soon as they get in school. Unfortunately, grade school, and a lot after that, boils down to memorization, and not logical thinking. - RandomWhim, on 10/12/2007, -0/+1That's the first thing I scrolled down to look for. Thanks!
- fishy2, on 10/12/2007, -0/+1
Same Richard Bornat of this story
http://www.thes.co.uk/current_edition/story.aspx?story_id=2027175
Can you imagine a college suspending someone for that email! - ScatteredData, on 10/12/2007, -2/+3All code snippets in the paper are written in Java. Unsigned doesn't exist in Java, so no problem.
- bennybertow, on 10/12/2007, -1/+2Are there some free programming tests available online? My girlfriend just started programming, and I would love to have some questions at hand like the ones in the paper, to see where she is doing good and where she would need some help.
- memphis, on 10/12/2007, -1/+2There was or maybe still is a company that produced CAD software (Anvil.) Its founder stated that he liked to hire programmers with musical ability.
- zeroepoch, on 10/12/2007, -3/+4That's what I thought when I first read that line. You have to consider even 10 years ago computers were not common place in all households, used in schools, etc. With more computers out there the number of programmers needed increases. Languages get easier and more efficient time-wise but they also now have millions of libraries we have to deal with.
- stringbean, on 10/12/2007, -1/+2Good read...worth finishing it. As said above, the main problem lies when people who have never had any prior programming experience are now trying to enter the field and make a career out of something that they cant do(or don't have the passion to do it) . i also thank your for being courteous enough to state that it is a PDF link.
- dwalker, on 10/12/2007, -2/+3What is an SQA "engineer"? Real "engineers" design and build real bridges!!!
I am not any type of engineer, I do develop software, have done for 2 decaded and have a BSc but I aint a real engineer! Bloody self assigned titles, dont it naff you off.... - jldugger, on 10/12/2007, -0/+1See, at first I thought they were measuring previous exposure to programming, but after reading through the paper I discovered rather that their predictor is a student's ability to formulate and consistantly apply a mental model of the situation. So if you were exposed to prolog and thought things operated one way, as long as interpreted the same thing the same way throughout the test, you're labelled "consistant." If you change from one model to another through the course, and use it consistantly through the final administration, you're still "consistant." If your mental model of operations changes from one question to the next, (ie assignment from right to left, left to right the next), you're labelled inconsistant. Part of the paper describes how inconsistant test takers do migrate after instruction to consistantly answering questions, but only about 50 percent of them make this leap.
The question in my mind though is whether this aptitude is generalizable to all CS intro classes or just theirs. - Twango, on 10/12/2007, -0/+1I'm most impressed by languages that are as close as possible to human language (intuitive). If computers are supposed to make life easier (I *think* that was once a consideration, probably old-fashioned) then they should do the work of learning my language rather than me learning theirs.
Alas, many have fallen by the wayside. The much-maligned BASIC (with the horrific blood-curdling "GOTO", easily resolved with GOSUB) was a decent try and quickly learnable. 8-bit assembler was WAY easy compared to Javascript.
Of course, the element of 'high priesthood' that infected IBM days has long-since descended on personal computers ... and simplicity has to die in the name of job security.
I don't know what Oracle did to PL, but PL/ACME was a very quick learn. - DannoHung, on 10/12/2007, -0/+1I agree that simple rulesets would make things easier to understand, but it doesn't take away the specific three dificulties mentioned.
I think using a functional language would probablly be the best way to start teaching someone as you can ignore assignment and concurrency for quite some time. Teaching recursion is still difficult, but probablly not as hard as some people think. At least for mathematically minded students, it would be more natural than learning the rules of assignment. - BrokenBeta, on 10/12/2007, -2/+3It doesn't say "mark" was set to -12, it says "mark" is -12, so it can't be an unsigned int. Why would you assume unsigned anyway?
- lobrien, on 10/12/2007, -0/+1glork 10 a!
glork 20 b!
a b!
What is the new value of 'b'?
It would be interesting to see how the answer to this (structurally equivalent to their example 1) correlates with success. The point being that their test might be measuring prior exposure to a real-world imperative language, while their hypothesis (I think) is that programming aptitude stems from a facility for constructing a mental model from a limited amount of evidence.
It - Jmorris5ten, on 09/04/2009, -0/+1Because then the students would acheive a much higher success rate if they eased into the mentality of programming. Not to say some wont fail still, but its a trade off (more success for less people waisting time).
- lobrien, on 10/12/2007, -0/+1I think the authors would agree with you. Where they might disagree with you, though, is the implicit idea that the programming mindset can be taught to everyone. I think the author's have an underlying despair (hidden in self-deprecating humor) that certain mindsets just will never "get it."
What they're trying to do is look for a way to detect the aptitude for "thinking like a programmer." As some commenters have said, it's not _just_ mathematical talent, and another one mentioned a correlation with musical ability, which anecdotally is very common among programmers. - Twango, on 10/12/2007, -0/+1Learning to program doesn't have to be 'notoriously difficult'. The 8-bit machines had tons of languages that were easy to learn. Many more modern languages have been obfuscated.
It's a lot easier to -learn by doing- than by taking classes. I learned by modding other people's programs to get them to do what I want. Play with the source for small programs -- you pick up the elements one-at-a-time as you need them. Avoid really complex environments until you've got a solid hold on the basics. Otherwise learning can be overwhelming. - wizgha, on 10/12/2007, -0/+1I'd want a college professor like that.
- DrMindHacker, on 10/12/2007, -0/+0 I am not sure what you mean. I think programming is probably one
of the hardest and most complicated areas of intellectual pursuit [not just
programming per se but algorithms, design, etc.,].
So as far as your second question, I think success in other courses is irrelevent.
Some people only expend effort in those areas that truly interest them [whether
or not interest is a result of understanding the subject is another discussion] and
some expend effort in learning anything presented to them - I love programming
but given a boring project I wont expend as much effort unless I am getting paid
for it. I wasn't interested in math when I was in school simply because I didn't
understand it [I was also intellectually lazy then too - I spent most of my learning
on military history, medieval history, psychology - soft, easy subjects]. -
Show 51 - 76 of 76 discussions



What is Digg?