Writing code, literally
Last summer (2003), I regularly visited the Tuesday/Thursday programming class taught by Aaron, Bigi, and Luis, so I knew firsthand how things were going. This summer, I was only able to stop by a couple times, but I still kept up with the class through talking with Bigi and helping Seigi (who was taking the intro class).
Bigi brings up a lot of good points in his entry about programming and this summer's programming classes at ATDP. Some of the things he says might seem harsh, but I believe they're true. Many more people try computer science (CS) in college than can actually make it through a four-year CS program. I've told Lloyd that on multiple occasions. It's best to deter those that won't make it before they graduate from high school.
Programming is hard because no one can walk you through it. It isn't like high-school math or science, where every problem is plug-and-chug. Programming requires students to think for themselves—something which I know math- and science-oriented students are not accustomed to doing.
Programming is very much like writing. There are no equations for writing. When you sit down to write a paper, there are no examples to follow step-by-step. It's all you; all your ideas, put together in a way that makes sense. The only difference between writing and programming is that in a paper, you write sentences to support your argument; in a program, you write lines of code to achieve some functionality.
Your code must still make sense though, like your sentences and paragraphs should make sense. One thing that baffled me when I was helping Seigi was that he often didn't understand his own code. Why would you write code that didn't make sense to you? I don't know, but many programming students do it anyway. Maybe they think it's like math. Write down some equations you don't understand and you'll get the answer.
There needs to be more self-evaluation in students. More reflection, more does this make sense?
Plug-and-chug will only get you so far.