'Intro to programming' class

Last Monday was session #2 for the Introduction to programming class (with Python!) that I'm teaching in Tog.

The class was starting at 7pm and I freaked out a little when by 7.15 only 2 people from the week before had showed up, plus one brand new student (was I that bad?!) Thankfully people trickled down and although 3 people sent an excuse we had a nice group going by 7.30.

Exercises

I guess here, the fact that I like to start with exercises helped so that even people showing up a bit late wouldn't miss anything important and could simply start on the exercises as they came in. I like to give a few exercises about the concepts previously learnt, the idea being that everyone must solve at least one before we move on to a new concept, and people who finish early can do more of them instead of waiting. I realise it's kind of counter-intuitive to the usual way of teaching with exercises coming at the end instead, but I find it works well (with sessions lasting more than 1 hour in any case). It helps reinforce previously learnt concepts and for the students to refresh their minds. I don't really expect people to find the time to try exercises and practice coding in their own time (yet!) and it certainly didn't work with my high school students. Perhaps next week I will be proven wrong as people were asking for practice exercises as the class ended :)

Pace

We actually only had time to learn one new concept this time, the first loop. It was the same when I taught the teenagers before, and I thought it was because there had been 3 weeks between the first and second session, but we ended up doing roughly as much here. Perhaps my exercises take too long to do, or perhaps I take a while to go through, er, the "while" loop. I'm not too worried about it to be honest. This is the first exposure to many programming concepts, and the exercises using "if" and the rest are the first programs bigger than 3 lines (10 to 25 usually) that the students are writing. Of course it takes time.

A session lasts 2h30 this time. Unlike the kids the adults were not very good at reminding me to take breaks ;) I think after doing the initial exercises we were all eager to move on to learning something new, and then I kinda forgot to take a break. I was wrecked and nearly dizzy by 9.15, I suspect the students kinda felt the same. Must take a break around 8.20 next week. For both my sake and the students'! Perhaps after the exercises and after having a short overview/first taste of a new concept...

Preparing

For preparation, once again I mostly cannibalised and expanded on what I taught the first time :) I also changed the odd exercise, and removed a few references to high school. A new exercise was writing a fake GUI with a couple of options and it ended up being a killer and great fun! (Although the backslashes caused a couple of unfortunate escaping issues, I guess I'll make the character wave the other way around next time, at least!)

 ______________________________________
|                                     |
|         HELLO!                      |
|       /                             |
|    \O         Choose an             |
|     |\             option           |
|    / \                              |
|                                     |
|              a. Say hi              |
|              b. Say goodbye         |
|              c. Fortune cookie      |
|_____________________________________|

I remember last time, I thought I introduced 'random' too late considering how excited the students were after we transformed their program into a real game. Note to self: I think I may have introduced it too early this time! Probably after we add "hints" (too low/too high) to the game would be the best place to bring it up.

The students

Once again people are a lot more active. They ask questions, they describe their understanding until the point they're stuck and then ask for clarifications. If I'm not being clear at explaining something, they let me know. I really enjoy this. They also spontaneously explain things to each other and form groups, then explain to each other, ask and answer questions among themselves, copy and try to modify to understand ;) All of this is also great for me, I listen and learn new, different ways of explaining what I just taught.

Overall, the students look like they're having a lot of fun, and are happy to be learning new things and new ways of thinking! This is great, I was very happy to see that and at how well it went.

Stuff I want to watch out for

Like last time I taught this course, I notice people have a lot of trouble translating a problem into programming steps, even if they know all the programming pieces to solve it (e.g. add a limit to the number of guesses in a "Guess the number" game). It's normal since people are really just starting out, but I really want to do whatever I can to help address this as early as possible.

My plan will be to try to include some code reading, perhaps at the beginning of a session, hopefully starting next week. It has to be a clever and readable way of solving a problem, that won't take us too much time to go through but will ideally show a new way of using a concept we know or using it to solve a new kind of problem. For the simpler stuff I will likely have to write those snippets myself, I hope I can come up with something good involving while for Monday (I have family over this week-end as well, though).

Looking forward to next Monday!

links

social