# Avoiding difficulties when teaching with metaphors

It is said that metaphors can do more harm than good, and I agree that other methods should be developed, like the "notional machine" idea. However, computer science is not like anything else, because it is a constructed reality. It therefore seems like the best way to teach it is to show students how a new concept is similar to or related to things they are already familiar with.

What do you do to work around the the problems of using metaphors to teach, such as students' cultural divergence (and therefore ability to understand the metaphor)?

• Everything is a construction, even mathematics (angles of a square do not necessarily add up to 360°) and physics (f=ma is not always true). They are all constructed in a culture and environment. Also there are few new ideas in computer science: I used to think it was all invented in the 1960s, but then I read [a summary of] the letters of Ada of Lovelace (the first computer programmer). Jul 9, 2017 at 9:45
• @richard I'm sorry but $\sum \vec{F}\, = \,m \vec{a}$ is always true, if you make relativistic fixes to $\vec{F}$. Jul 9, 2017 at 10:48
• I'm voting to close (more as the fifth vote than as a mod with binding-ness). I see at least four questions here, all of which I find worth asking but in separate questions. There's the issue of analogies, the difference in cultural reference points, the lamentation over older references not being understood, the accelerated pace of cultural change (a debate in and of itself possibly). All of these have their place on here in some way, just not in the same question. I suggest narrowing/rephrasing to make Ellen's answer on-topic then asking the others separately. Jul 9, 2017 at 17:01
• Ellen's and Buffy's answers are both about metaphor, so that's a logical direction to take this question
– Ben I.
Jul 9, 2017 at 17:38
• @nocomprende Focus just on the very last sentence, which gets at the crux of the issue: the generational gap between teacher and students. I might tweak it as follows: "What do you do to work around different frames of cultural reference?" Less is more. The commentary that leads to this point might in fact point more to answer than to the actual question. Jul 11, 2017 at 4:56

I think you pretty much need to use metaphor/analogy initially. The students need a hook to get called into the game. You make a good point, though, about finding metaphors that work with the generation of students you are teaching. It isn't so much a problem if you teach the same things (same sort of things even) over many years as you can evolve along with your students.

One Pedagogical Pattern is Consistent Metaphor, which suggests that the parts of the thing being taught needs to map onto the parts or elements of the metaphor. This may be easiest if you use a Physical Analogy (another pedagogical pattern) as the parts of the analogy object are often pretty obvious.

But without metaphor you are pretty much limited to technical detail, which can be hard to visualize and map to a mental model.

However, every metaphor has limits. You need to make the students aware of the limits. This is how A is like B. This is how A is NOT like B. Equally important, or students can go astray.

• Wow, a list of Pedagogical Patterns! Who knew? Thanks!
– user737
Jul 8, 2017 at 23:53
• Actually a community of maybe 40 people from all over the world. Some more active currently than others. Jul 9, 2017 at 0:10

I love to make jokes and allusions. Here are some examples of ways I handle my increasing age difference from my students:

Explaining the reference

When describing how assembly language programmers compete to shave instructions off an operation (such as calculating absolute value), I tell students about the old game show Name That Tune and sometimes even show them a clip.

Challenging students to recognize the allusion

After teaching students about big-endian and little-endian, I ask if anyone recognizes where the references is from. If a student successfully guesses Gulliver's Travels (from the terms or from the images I include), they get a prize. If not, I explain.

Learning students' culture

As a sample app from my mobile development course (to demonstrate design docs), I designed a variant on Pokemon Go where students get and evolve professors by meeting with them. I paid someone on Fiverr to create Pokemon-like images of me.

Create memes

Students seem to enjoy memes. Here are some that I've created.

This one is about L2 caches:

• @nocomprende See this classic paper. cs107e.github.io/readings/holywars.pdf Jul 13, 2017 at 20:18
• @nocomprende it was an argument (war) about eggs, and how to eat them. The whole story is about how it is totally irrelevant. Just the same as it is in computing. It only make a difference, when you start writing bad code: that accesses large objects (bigger than a byte), one byte at a time. Instead of looking at the lower/upper byte, we should look at the lest significant byte. When we send it over the wire, we need to agree, lsb first or last. (as I write this I wonder if memory mapped files could be a problem.) Jul 28, 2017 at 9:34
• @nocomprende I saw one computer system that had what I called weird endian. It had 16bit ints in one endian. Then combined these to make 32bits in the other endian. If people did that irl, we would think them mad. — richard 07-28-2017 = 28-07-2017, we need to come to an agreement no this, we need a standard (2017-07-28). Jul 28, 2017 at 9:44