Hi all,
I had flunked first semester programming about 3 times,then I tried an online course employing "programmed" learning methods in desperation.
It helped me get over the "hump" by helping me understand programming (I believe) by providing the context and motivations for some of the more common (really simple to you folks) programming logic constructs.
Hours of practice "running" toy programs on paper for different problems afterwards finally ended my absolute confusion on this subject matter.
The link to the free, CS intro course employing this programmed approach that I had used (while ditching my regular lecturer) is :
http://chortle.ccsu.edu/CS151/cs151java.html
Still stumped though by exam level problems using stacks and queues and recursion (we used C in our courses but I think it didn't really matter in the final analysis).
In the end, I didn't bother with a CS major as I would have taken forever (probably 2 to 3 yrs more) given my skill level.
I should have paid attention to those puzzle books when I was little. I was more of a LEGO geek then :)
CS instructors (those who only talk and talk) need to be a little more patient, some of us folks aren't good verbal learners.
Parting thought, we all can't be be great writers, but that doesn't stop one from learning (or teaching one) how to write well. I think the same goes for computer programming in the information age.