below is a summary of the yesterday's lesson, followed by my conclusions. yesterday we were supposed to teach about ifs and about strings. amit pointed out that in the ifs part i rely on some strings knowledge and i should reverse the order, so i did that.
in the class, i found that teaching about strings took longer then i thought. the use of 'for' loops got the kids confused - they didn't find it easy to grasp the idea that the for variable points to a different item in each loop. i only realized this when i explained how to use such a for loop in order to reverse a string (by which point they had to understand two things - how the for loop works, how string concatenation can be performed from a variable into itself (revstr = letter + revstr), and how the reversal happens at all. we had to draw it step by step over the blackboard for things to be clear, and even then it wsn't clear for everyone (at least according to the puzzled looks on their faces). the rest of the lesson was spent on doing the exersize (they didn't get at first what i wanted them to do. only when they realized what i did to limit them, did they start understanding what i want them to do). eventually some of them managed to draw some interesting things. some lessons i learned form this: 1. every thing should be dry-runned with the kids (i already did that with them last week, but this week emphasied that it has to cover _everything_). 2. in the dry run of a loop, i should perform a dry-run for 2-3 iterations, and then i need to pick up specific kids and ask them to describe the next iteration. this makes sure they indeed understand what is going on (and just so you'l know - they had problems even after this - it's not as if they pulled out the description too easily). 3. i need to teach the kids to talk in precise terms (i.e. not "the word is concatenated to the letter and then you get 'eh'". rather "the character named 'letter' is concatenated from the left to the word named 'revstr', and then you get 'eh' - and you call that 'revstr' now"). 4. the empty string realy confused them. since i didn't think about it in advance, i was puzzled about how to explain what an empty string is. need to prepare a good analogy for such abstract things next time (and lets face it - there are no intuitive "empty strings" in real life. no - a blank note is not exactly the same as an "empty string"). 5. the material in what i thought to be a "mini-lesson" can be sufficient for a whole session (the class begun at 17:11, and ended at 18:57). this. this was not the case last week (int variables alone are not sufficient for a whole session - together with the while loops they were sufficient). 6. lesson from last week's exercise class (which got messed up due to other reasons) - i should not expect the kids to write a program with nested while loops, before they had good practice of single while loops, and before i showed meaningful examples of nested wihle loops in class. thus, i will write a mini-lesson to cover nested while-loops - it won't teach new python keywords - but it will teach new programming concepts - nested while-loops and two-dimentional drawings. 7. another lesson from last week's exercise class - for each exercise, i should write an explanation how to do it (breaking it into parts, explaining what each part should do, and which constructs that we learned it should use). as we make progress, i will try to make these descriptions less detailed, and see if the kids manage to close the gaps properly. -- guy "For world domination - press 1, or dial 0, and please hold, for the creator." -- nob o. dy
