O-P,
You describe the difficulties I've had quite well. I've read tutorials on C, C++, Python, Perl and others that purported to be for beginners, yet gave no real beginning lessons. I don't really consider "Hello world" to be a beginning lesson, as so little of it is ever explained.
If you guess from the above that I don't know what I'm doing re programming, you're probably right. I know how to learn a language (modern foreign languages degree work -- okay, years ago), but the basics must be available in order to learn. That is why I posed the symbols exercise. As they are a part of the language(s) that might be considered non-standard from a human-spoken/written point of view, learning what they are / definitions for them seemed a good start off point. Definitions for other words and phrases would be next and a little basic structure with it. More advanced syntax and definitions could come on a one level to the next basis. At least, that was my thinking.
If you could outline a better lesson plan, it would be very much appreciated.
I think we're on the same page here. Define only the symbols used in the example first, then show how and where they are used in the example, and tell why they are in the order they occur. Next lesson, do the same. If there's some repetition, that only reinforces what's been learned already; don't assume the definitions will be remembered after just one use. After about five or six lessons, those symbols from the first lesson can be dropped from the definitions, as they should by then be memorized.
By progressing from single;
{
code example
}
to;
{
code example
}
{
code example
}
type programs the student can see how larger applications can be built from a collection of smaller code blocks, with each block's function clearly explained.
Just showing the code, and the output, doesn't fully explain why a particular block of code was chosen, or the details of how it achieves the end result, which is necessary if one is to be able to learn to build a new application from scratch. If more than one block of code can achieve the same end results, it would be nice for the student to know there are choices, and why one method was chosen over the other.
A bit off topic, as it concerns bash scripting, but still to the point, I once asked for a script for a specific task, at the original hack site, and an explanation of how it worked. I got two or three scripts with up to 100 lines of code, with a lot of extras thrown in that I didn't need, and weren't necessary for the job at hand. By bouncing the scripts back and forth for a bit, refining it as we went along, the script was reduced to two short lines of code that did exactly what was asked for originally. The point being that coding does not need to be an exercise in excess, with large line counts, to be a success, but rather, a refinement to the bare essentials to do the job required.