Tuesday, June 19, 2007

Everybody Knows That

I'm taking a workshop this week about how to teach Python. There are pros and cons to the workshop. Although I have what feels like a number of complaints, on the whole the workshop is good.

The course is giving me a lot of empathy for my students. I didn't understand what the goals of the workshop were or how exactly it was going to run and spent a lot of time yesterday trying to figure out what was going on and what to do. I also felt a certain amount of boredom. It was really hard to sit and focus on reading and programming all day. The little programming exercises were good introductions to the concepts, but they weren't terribly engaging.

I spend a lot of time feeling frustrated and stupid. Even though this is an introduction to Python, there's an assumption that everyone has programmed before, often in multiple languages. I think I'm the only Perl person in the room. My knowledge of Java is introductory and I don't know any other languages. I absolutely trust my ability to learn new things, but statements like "if you think of how to do this in Ada, it will be obvious" are upsetting. Lectures and discussions are in a different language. This morning's lecture was about functions. I knew some of the jargon, like arguments, parameters, and returns. But I had a terrible introduction (previously) to pointers and references, so the whole part of this morning's lecture about how Python passes arguments was significantly over my head.

I read a few weeks ago that a person can read fluently as long as they know 95% of the words - they can pick up 5% through context clues. More than that requires significant time and mental energy for decoding. So this morning's lecture was probably 20% words and concepts that I wasn't already familiar with. Too much to fluently understand, and of course, in speaking, once it is gone, it's gone.

The other part that is frustrating about not understanding is whether it is even important or not. I teach middle school. I strongly believe that I am an expert about how to best teach my kids. But I am not The Expert about what the Most Important concepts in computer science are. Is it crucial to teach students about pointers, stacks, passing by reference vs passing by... whatever the alternative is? If I were teaching driver's ed, is this comparable to teaching kids how to get on the highway (and thus by not teaching it, I limit them to surface streets unless they take a more advanced course later) or is it analogous to teaching them how to change the spark plugs - interesting, useful, required for advanced work, but not actually important on a day-to-day basis in running a car. (Remember, I live in California. We spend a LOT of time on the highway.)

The frustration is about the phrase "oh, everybody knows that!" It makes the part of the everybody who doesn't know that feel bad. I know my students will face it... I think it is inevitable, though it shouldn't be. It isn't just the jerk boys, it is prevalent. I want to remember to hold on to this feeling, so that instead of trying to teach them the things that everybody knows (impossible) I can teach them to persevere when they feel this way (possible).

2 comments:

Alfred Thompson said...

I find that there is too little agreement on what the minimum necessary to teach programming is. I tried in my first year of teaching to teach programming (using Logo and Apple BASIC) to sixth graders. It didn't go very well. I think I know more about how to do it today though in all honesty middle school is not my best age group to work with.

The other thing that you bring up in a round about way is that teachers really need to understand the level and pace that their students are ready for. You are a student in this workshop and clearly the teacher is not being sensitive to what you are ready for. Is that the fault of the information you had that made you decide this was the right course or of the instructor not paying attention? Hard to say but I think that often teachers wind up with students who are not quite ready for a class. How the teacher handles that deternmines how much the student eventually gets out of the course. Something being much better than nothing or worse still a turn off from the subject.

Sandra Porter said...

Is it possible for you to meet with some of the people who teach programming in the high schools? Perhaps they could give you a better idea of the knowledge that they' expect students to have when they walk in the door.

I also recommend reading a "Joel on Software" for some good advice about how people program in the outside world. Not only do the things that he says mesh with what I see at work, he's very articulate and fun to read.