It is the annual self-review time. How good do I feel I did this year? The teaching load was light, only two classes of Programming II with a total of 19 kids. The rest of the time is spent doing IT work. The second semester would have been an easy semester except for the little detail of having to learn Python faster than most of the kids. (I say most because there are a couple that were learning it faster than I was. One of the things I have learned with experience is that there are kids out there that are smarter than me. The trick is to just get out of the way and let them go.)
- Unique assignments for each kid is a pain to grade. I tried this in an attempt to reduce “sharing”. It sort of worked but not enough to justify the added grading time.
- Most of the kids understand a lot less than you think they do. Proper questioning technique is a solution but that still will miss some key knowledge.
- The kids are not as excited about programming as I am. This is the hardest thing for me when teaching programming. I do programming because it is fun, like doing puzzles. Most of the kids are there because there was not another elective offered at the time slot. One out of ten think programming is fun. Most are not puzzle solvers.
- Small programming assignments with a single teaching lesson works better than a large assignment/project broken into smaller parts. I can make a bunch of small but similar programming assignments pretty easily. Sort of drill and practice.
- Do not assume that the kids remember what they did yesterday. Most do not.
- Python is easy to learn but is a boring language. I like Corona better but Corona is more difficult to learn and has considerably more overhead. With Corona you can make a colored ball bounce around the screen. Hypnotizing.
- In a dual-credit class do not attempt to keep up with the university teacher. Most university students have a lighter work load than high school kids.
- Learning the language and an editor just ahead of the kids is not a good strategy. It can be done but there are gaps that can grab you. I had a number of “If you find out how, let me know” moments.
- DO NOT assume Python code is the same on Windows and Mac. Next year no Macs in the Python course. I had to learn two languages (very similar but different enough to really mess things up) and two editors. Never again.
- A working projector is a must. Trying to write code on the board is not so hot, especially with my hand writing.
Many items in the list are well known. It just helps to write them down again so they get refreshed in my head again.
Right now I am considering offering a dual-credit Java course. The dual-credit Python course gave the kids 3 General college credits. The Java course would be 3 CS credits. I have the text the university uses and it is extremely boring. I am not sure I can do another semester of boring. I want the kids to make a silly little game for their cell phone. It is amazing how hard they will work if the objective is cool. Making Hang-man in Python is nowhere near as cool as making Whack-a-Mole with Corona. Right now I am considering the game “Don’t step on the white tile”. (Look in the iTunes store.) Looks like a Corona project candidate. Of course this violates #4 above. Nuts on #4.
Over all the year was a success. Every semester I teach programming I try something different. A new language or a new assignment or a new strategy. Someday I will get the perfect course designed and then retire.