I started using a new technique to teach my fiance programming, which her university did a very bad job of.
I've had some very good results checked in into her mind model.
These are the basic exercises that I started with:
int a, b;
a = 20;
b = 10;
b = a;
What does each of a and b contain?
Another one goes as follows:
int a, b, c;
a = 10;
b = 20;
c = a;
a = b;
b = c;
What does each of a and b contain?
Without furthermore discussion, we went into the inside of a while loop:
int c = 10;
int a = 0;
while(c>0){
a = a + 1;
c = c - 1;
}
a and c?
I am trying to introduce subjects gradually, and to make sure no requirements (conceptual ones and syntactic ones) are missed between the steps.
I found out that the greatest hurdle for a non programmer is to make them stop their gut and believe that it's a machine working out step by step. (Functional programming gets hurt here, especially with the basic step of assignment, but at least we get them going in one direction).