In Ways of Knowing, Brian Frank discusses his use of undergrad TAs in an intro physics course. In particular, he has noticed that some of the undergrads have a difficult time with thinking conceptually about physics, though they can choose and solve the appropriate quadratic equations. For a TA in an algebra-based physics class, the mathematical skill is less useful than the ability to apply and explain the concepts.
The particular example he gives is
A bowling ball is dropped from a height of 45m, taking 3 seconds to hit the ground. How fast is it moving the very moment before it hits the ground? The problem is intended to draw out the following answers and arguments, which we hash out.
10 m/s, because all objects fall at the same rate
15 m/s because you can calculate the velocity as 45m/3s = 15 m/s
30 m/s because it gained 10 m/s in each of the 3 seconds
Other more idiosyncratic answers come up as well, but not with high frequency.
He talks about a TA who solved the problem by applying the appropriate formula for the motion of a falling object and solving the quadratic equation. This would be a perfectly acceptable approach on a quiz or exam, but does not provide the TA with a good way to explain the concept to students. (The problem is set up to be amenable to mental math, by rounding g from 9.8 m s–2 to 10 m s–2.)
He found that students who had taken physics from him, rather than from his colleagues, had an easier time grasping the conceptual approaches he was teaching, even if they were matched in their ability to do the computational problems on standard physics exams.
I pointed this post out to my son, since he is planning to volunteer this year as a teaching assistant for a Python class (not for me, but for a different instructor). The example above is not directly relevant to what he’ll be doing as a TA (Python and physics differ in many ways), but we discussed the general principles.
We came up with the following relevant ideas:
- Avoid too much detail. There are often general, powerful methods that seem straightforward to those familiar with them, but which are mystifying to beginners. Some of the nicest features of Python are not the first things taught, for good reasons.
- Look for misunderstandings of simple models. It isn’t enough just to be good at the subject—one also has to look for the simple models that can be used to get a beginner past misconceptions.
Physics education research has been looking at student misconceptions and mental models for decades now, and instructional techniques have been developed and tested specifically for their ability to break down misconceptions and help students build correct mental models.
Research in programming instruction is still in its infancy, and tends to concentrate more on teaching techniques (like peer instruction and paired programming), order of topics (objects first vs. objects last, recursion before iteration, …), or programming language choice (Pascal, C, Java, Scratch, Python, …) rather than on the mental models and misunderstandings that block individual learning.
- Pay attention to how the teacher teaches. There will probably not be any Python taught in this intro course for middle and high school students that my son is not already very familiar with. But that doesn’t mean that there is nothing for him to learn. Since he grasps programming concepts quickly and intuitively, he has not had to struggle with learning them and may not have an appreciation for the difficult task of getting beginners to grasp concepts that he sees as obvious. Watching how the teacher tries to construct useful (but possibly simplified) models for the students will help him improve his work as a TA.
- Pay attention to the students’ mistakes. A lot of the work of a teacher or TA is debugging student mental models. As teachers, we don’t have direct access to the models inside the students’ heads, and so have to infer them from the programs students write. It is very tempting to debug the student programs for them, showing them how to correct the mistakes in the program, but it is not our goal to produce correct programs for these easy exercises, but to produce students who can generate correct programs. When students make a mistake, we need to find out why and figure out how to correct the mistake in their mental model, so that they can find and correct the mistake in their program themselves.
Note: some mistakes are not mental model mistakes, but just typos that are hard to spot, because we see what we intended to put, rather than what is actually there—for that sort of mistake, it is fine for a TA to point to the typo. I’m talking more about the sort of mistake that results from an incompletely understood concept.
I think that being a TA as a junior in high school will be valuable experience for my son, and we’ll probably have several late-night discussions this year about teaching programming. I’ll try to record the substance of those discussions in this blog, so that others can chime in and correct any mistaken notions that I inflict on my son.