>People presumably don't take CS1 papers unless they think they
>might do well, yet CS1 papers notoriously have a very high failure
>rate.  

People take CS courses because their experience of computing has not so far 
involved (real) programming and they think that it is all word documents and 
games. Or often because they have no idea what they want to do and they think 
they can get a job if they have some sort of computing qualification.

>Clearly programming _isn't_ intuitive for most people, but
>people who are _now_ programmers often feel strongly that it is.
>Why?  Is there something we can use to reduce the CS1 failure rate?

You reduce the failure rate by not letting in the people who are there by 
mistake in the first place. How you detect these is a different issue. I can 
assure you I have spent hours on the phone as an admissions tutor trying to 
dissuade people from doing computing courses when they were adamant they wanted 
to do them and equally clearly entirely unsuited to them (and some of these 
were highly qualified too). People don't take Physics courses if they have had 
no experience of physics (other than living in the world of course, though 
probably don't realise that is physics), but they turn up in droves for 
computing courses with no experience.

>So if, for example, you "get" variables-and-assignments easily,
>that makes it more likely that you will "get" Java 'for' loops,
>and that makes it more likely that you will "get" how to work with
>arrays.

But you have to factor in to this that some people have already realise that in 
fact they don't want to learn to program and so have switched off. A lot of 
people get started on musical instruments or learning languages and a few 
lessons in realise that it is not for them and they stop. The problem is that 
at University there is pressure to stay put and struggle on so we get these 
problems. Try getting into most music courses at University with anything other 
than a grade 8 on an instrument.

>Wrong.  I still think that spreadsheets *ought* to make programming
>more "intuitive", but I'm not seeing much evidence of it.

Or is it that your intuition is that spreadsheets should make it easier? :-)

>The most popular declarative language is SQL.
>Perhaps the fact that it doesn't use recursion may be a factor
>in its success?

How many of the users do really hard joins and actually understand what they 
are doing? As an SQL user I hold my hand up straight away and admit that there 
are many parts of it that I don't understand so I don't use. I dive in get the 
job done and leave.

>Haskell experts advocate a higher-level style where most of
>your code is free of explicit loops, not completely unlike
>using LINQ.

Except that people actually do understand the concept of looping - they do it 
all the time in real life. 
However sometimes they are effectively doing recursion but simply don't realise 
it because it doesn't look a lot different IRL and that might be the key. Think 
about calculating a factorial by hand.

L. 

Reply via email to