I’ve been running a Code Club class since January and the thing I’ve most come to realise is that teaching is hard. There is a group of variables that constantly challenge your approach to a subject, and those variables are the students.
These are some of the difficulties I’ve had teaching the class. I’m sure qualified teachers are well aware of them, but as a developer there’s many an unexpected occurrence.
Discard any assumptions you might have. What you call a file the students may call a page. They likely won’t know where all the special characters are on the keyboard. They probably haven’t done modulus in maths yet. Programming loops aren’t a particularly obvious concept. And why doesn’t it always just run from top to bottom?
The last one of those seems to be a more difficult idea to understand, calling functions in one place and defining them elsewhere. It’s hard to guage how well each student gets this, but it’s one of those thing that will gradually improve as you progress through the lessons.
“Did everyone understand that?”
“Did anyone not follow?”
“Does anyone want me to go over it again?”
It’s quite a surprise to go from an environment where you have constant dialogue about code to one where what you say is accepted as gospel. I haven’t yet worked out the trick to get students to actually respond to questions asked from the front. But the method that seems to more or less work is going through small logical code changes from the front and then get them to write it. Followed by a quick run around between students helping them fix issues. If you can, get a second developer to act as a classroom assistant to help with this.
It’s possible that having the students read directly from the lesson sheets could work better, but that does seem to generate the same questions over and over.
Just keep in mind, if the kids are looking at you in silence it’s most likely because they are paying attention. It’s when they are making a noise that you should be concerned.
Typos, tpoys, tiepose everyware
You know how often your own bugs are caused by typos? Yeah, multiply that by a bajillion.
It’s one of those things you forget you did as a child, learning to type. But try writing silly coding terms correctly like def instead of define, mixing words and numbers in odd ways, plus some completely non-standard punctuation all over the place and you’ll end up with constant bugs.
Then there’s indentation…
“Why is my code not working?”
“You’ve missed a tab on that line, you need to make sure it is tabbed in once after your if statement.”
Student presses spacebar once
“No, you need to make sure you use the tab key so it all lines up correctly”
Student presses tab once leaving the space in there as well
“Umm, you need to remove that extra space you added”
Student presses backspace twice
“And… add the tab back in”
Student presses tab key
That happens several times a lesson. The students are getting better at it as they become more comfortable with the syntax, you just need to be patient and it will all compile and run in the end.
The most important point to be made is that saying something once is not at all enough. Repetition is the key to learning. Repeat yourself within each lesson. Repeat last weeks concepts in the next lesson. Repeat things on an individual student basis. Repeat what you did last lesson. And repeat things to each student.
It takes time, is often difficult, and you may not see the results until several weeks later. But who ever learnt to code perfectly in a matter of weeks? Take heart in the kids returning each week to an optional after school class. We get to influence the future of these people into the fantastic career and hobby of coding. Yeah!