Why is it so hard to learn programming?
Programming was easy to learn!
I have been programming professionally for 25 years following some 10 years of messing around at school.
"Back in the old days", there were no iPhone, XBox, Playstation, Internet, etc. The first cool technology to enter the home was the Microcomputer in the form of Apple 2e or TRS80 - no mouse - just a green display of 80 columns by 24 lines of text. Every time you turned it on, ALL you got displays was:
Yes - think of the film "War Games" (http://en.wikipedia.org/wiki/WarGames)
If you wanted it to do ANYTHING, you had to start programming - in BASIC. There was no USB, external drives, internet, disk drive to load files from. IF you were lucky, you might have a cassette tape player. NO! You had to resort to finding books (those paper things - no eBooks) containing program listings - and you have to start typing - line by line.
You can see an example here:
Yes I owned a copy of that book!
The manual typing in a these programs taught you to type really well! REALLY WELL! Because you soon realised that a single typo would result in the dreaded "Syntax error at line 250". You would then have to type
> List 220 10
which would display the contents of your program around line 250 (start at line 220, and print the next 10 lines of code - you had to guess).
Through many iterations you would finally correct all the errors, and eventually be able to play the game. Normally a REALLY simple game - at least by today's standards. But it was amazing at the time. And if there happen to be a electricity glitch that caused the computer to reboot - bye bye program - time to start again from the beginning...
After going through this cycle many times trying different games, you very quickly started to recognise certain key words like "IF", "THEN", "ELSE", "FOR", "NEXT", and soon begin to get an idea of what they did through using the debugger.
It is very much like learning a new human language - when you arrive in a new place, you quickly learn the words for hello, goodbye, thank you, please may I have a drink of water. etc etc. You don't first learn the complex grammar rules or verb conjugations - that comes later.
For me, the debugger for ANY programming language is they key to mastering that language and understanding how it behaves and what all the seemingly strange words do and mean.
In the context of this Python course, I strongly recommend that you try running your program in the CodeSkulptor's "Viz Mode" environment (http://www.codeskulptor.org/viz/index.html).
Yes it does require self-motivation and researching the problems yourself.. "What is this doing?" - "I don't understand". That is all perfectly normal. Today's generation are SO fortunate to have tools like the Internet, Google, Bing, etc etc. You can find the answer to a question/program within seconds. You have NO excuse - "In my day", you had to go to the library (if there was one), find the book on programming (assuming they had a copy and nobody else had already checked it out), and begin searching the index.
I have had the pleasure of teaching Python programming to two different groups - the first group are native English speakers aged 15 to 18 (boys and girls), and the second group are non-native English speaking Asians aged 13 to 16. I can positively state that once they starting using the debugger (CodeSkulptor), they very quickly (within 1 hour) understood what was happening and wanted to play more - its fun, enjoyable, creative!