The hardest thing about teaching the MATLAB course — or any course — is responding to student questions. Notice I do not say “answering” student questions. Answers are not the issue; I’m no MATLAB genius, but I can answer 95% of student questions on the spot. The real issue is whether I should. If my primary task is to teach students habits of mind that translate into lifelong learning — and I earnestly believe that it is — then answers are not always the best thing for students.
I’ve noticed four types of questions that students tend to ask in the MATLAB course, and these carry over pretty seamlessly to my other courses:
- Informational questions that have nothing to do with the problem they’re working on or the material. Example: When are your office hours? When is this lab due? When is the final exam?
- Clarifying questions that seek to make sense of the specifications of a problem. Should we use a script M-file or a function M-file here? A FOR loop or a WHILE loop? Do I have to make this plot from the command line or can I use the Plot Tools window?
- Functional questions that are generally of the form, How do I [insert task here]?. How do I plot a function in MATLAB? How do I get the plot to be red instead of blue? How do I get this FOR loop to work?
- Interpretive questions that seek the meaning of syntax, a command, or an error. What does MATLAB mean when it says I should ‘pre-allocate’ this variable? Why are there all these different ways to call the MAX command? Why do I have to use num2str in some situations but not in others?
I’ve tried to list these question types in increasing order of cognitive complexity, although that ordering doesn’t always hold. (Some clarifying questions can get quite complicated, for instance.) How these types of questions are ranked in this way points me in the direction of how to respond to them.
Formal informational questions are easy to answer. I always give the same, direct answer to these: It’s (on the syllabus || in the calendar || printed on your assignment). Students learn pretty quickly that this is the same answer to this kind of question all the time, so they tend to stop asking and just look it up instead, which is precisely what they should be doing.
I’m happy to give straight answers to clarifying questions, although sometimes it’s better not to. For example, if a student team is working on a program that needs a loop, and they want to know if they should use a FOR or a WHILE loop, then the best way to respond is not to tell students what to do but rather to lay out the pros and cons of each approach and let them choose.
It gets very tricky when we get to the last two types.
I let the following basic philosophy guide me: I don’t answer functional questions on labs during lab sessions or on homework while the homework is still not yet turned in. Once the lab or homework is over, then I’ll usually answer directly. But otherwise, my goal is to guide students into turning their functional question into an interpretive question. I do this through a series of Polya-like questions to the students that flows a little something like this (click to enlarge):
This is less complicated than it looks. Basically, if a student asks a functional question, I first see if the student’s done what they’re asking before. If so, they go refresh their memories. If not, they look it up in an appropriate help file until they find something that looks like what they want. Then they play with it for a minute or two to get the basic idea. Then, by that point, they either know what they’re supposed to do, or else they have a deeper, more cognitively complex question to ask, not What do I type in to do this? but Why does this work the way it does? In a freshman-level class like this one, any time I can get students to elevate themselves from functional questions to interpretive/clarifying questions, I consider it a win.
What students get out of this process is the ability to move beyond needing the professor to tell them what to do. They become self-feeders. This is important because the professor is not going to be there when they really need this stuff, two or three courses down the line or when they’re out on the job (for which they were hired because they, and nobody else around them, has these kinds of computer skills). They are getting the ability to learn on their own, which is what I consider really to be the single, primary life skill.
Unfortunately students tend to resist this process. It is not what they are used to. They are used to teachers telling them the answers to their questions, regardless of what kind of question it was, and to them a failure of a teacher to give a straight answer to their questions is tantamount to either incompetence or indifference. So this process requires a constant P.R. effort and constant clarifying about why we do things this way. And that P.R. effort doesn’t always work. I still have students who complain that I don’t answer their questions; who feel belittled when they identify that they’ve seen a command before and are asked to go back and review it; who feel questions are pointless because I’m just going to ask them more questions in return.
These are freshmen, used to a transactional model of education predominant in American high schools. The fact that this model — the teacher tells the students what to do; students follow teacher’s directions; students get good grades — is the predominant one is a serious problem in our schools, but that’s another issue. Whatever the case may be, I am getting these folks in the final four years of their formal schooling (for the most part) and if I don’t get them thinking on their own, they will crash and burn in the real world.
And I think that even if these students go on never to use MATLAB again after graduation but have a well-practiced and fluid ability to learn new and complicated things on their own, I consider that the biggest win of all. And it’s a good reason to take the MATLAB course in the first place.