My "Computer Architecture" professor has this thing he does when he asks a question. First he will get the quick response from the entire class; usually a yes or no question. Then he will pick one side (usually the side that's wrong) and ask someone to explain why they chose that answer. Then he will go through the process of leading this student to the correct answer. Every time, he refuses to call on someone else who wants to cut in with the correct answer. He does not give up on this student until said student has arrived at the correct answer on their own. He patiently guides the student to a correct understanding of the problem, and lets other students learn from that. It will go something like this:
- Professor: When the instruction gets to the end of the execution buffer, can that instruction be dropped? How many of you say yes or no? Let me see hands for yes? OK, how many of you say no? OK, let me get someone who says no. (Uh oh, I've been caught with my hand up.) You—why do you think that it cannot be dropped yet?
- Me: Well, um, there could still be instructions that are dependent on that instruction. (At this point most of the class knows why I'm wrong, but they know that the professor is currently dealing with me and won't bother with calling on anyone else.)
- Professor: But if the instruction is at the end of the buffer, then it is at the commit stage, which means that there are no dependencies left, right?
- Me: Oh. So then you can drop it from the buffer.
- Professor: Exactly.
That's not a very good example, but you get the idea. I was surprised when I realized that this professor is always so set on working with students this way; it just wasn't something I had seen from any other professor. After all, I was usually one of the students to jump in and correct another student, so I noticed. The thing is, this professor has a full class of about 60 students every lecture, so his ability to ignore 59 students and put 1 student in the spotlight long enough to guide that student to a correct understanding of the problem and allow everyone else to benefit from being bystanders of the learning process is noteworthy.
So noteworthy, I decided to try it today.
We were talking about regular expressions, which aren't so hard to teach; it's all about syntax and pattern-matching. I got to the point in the presentation where I was presenting examples and asking the class to tell me whether they would evaluate to true or false, and with each one I would follow the same process… general response from everyone, ask someone why, if they were on the wrong track, help them see the correct solution. When it came to guiding someone from the wrong answer to the correct one, I felt like I could actually see that they were learning from the exercise, and others who were wrong at first were following along too. It was actually very rewarding. I can't say that a couple hours on regular expressions is enough to make an expert out of everyone, but I think we had a good start.
All this just makes me realize that I have to get into education fast, before I end up stuck in the back room of some tech company writing software or testing chips. I just like teaching too much to stop doing it.
The only thing to do now is to figure out how to make my passion a reality…