Analogies in the Classroom

By Dave Reed
I don’t know about you, but when I teach I am constantly using analogies to relate computing concepts to real-world experiences the students are familiar with. Some of these are pretty standard and well known among CS teachers.
For example, when I want to make the distinction between classes and objects, I relate the class to a blueprint for a house and objects as particular houses built using that blueprint. Similarly, I relate a class variable to a safety deposit box that all instances of the class have a key to.
Sometimes my analogies border on the bizarre. For example, in my programming languages class this week I compared different memory management schemes to squeezing toothpaste out of a tube. Most people just squeeze the tube in the middle. This is analogous to a garbage collection approach: it is fast and usually produces toothpaste, but occasionally you use up the paste near the top and have to take the time to flatten it out (i.e., perform garbage collection). For the brand of toothpaste I use, there are instructions on the tube (yes, an algorithm for dispensing toothpaste) that tell you to squeeze from the bottom and roll up the tube as you go. This is analogous to a reference count approach: it takes a little longer, but it ensures that toothpaste will come out as long as any is left in the tube.
What analogies do you use when you teach? Which ones work particularly well? Which ones sounded good in theory but flopped in practice? Inquiring minds want to know.
Dave Reed
CSTA Board of Directors

10 thoughts on “Analogies in the Classroom

  1. I really like that toothpaste one! Very memorable!
    Some analogies I use:
    Hard Drive:RAM :: File Cabinet:Desk
    Constructors:Life Givers
    Mutators:TMNT (Teenage Mutant Ninja Turtles)
    Accessors:Doctors XRay Machine
    Class Interfaces:Instructions/Requirements/Rules
    That’s all I can think of off the top of my head, though I know I use many more.

  2. It’s an obvious one, but… the internet is like the telephone network. Despite being an obvious parallel, it serves as a useful mapping of prior knowledge for novices.
    wired computer: wired handset
    wireless computer: wireless handset
    ISP: phone company
    DNS: phonebook
    DNS lookup: directory assistance
    Reverse DNS: reverse directory lookup
    IP address: phone number (one computer can have multiple IP addresses and one house/person can have multiple phone numbers; one IP address might be load balanced to multiple computers and one phone number might ring multiple phones)
    Ports: extensions
    LAN: PBX/internal company phone system
    RJ45: RJ11
    DoS: busy signal
    Collision: party line in use by more than one person
    Multicast: conference call
    Router/Switch: switchboard
    and so on.

  3. Borrowed from Henry Neeman (UOklahoma)… jigsaw puzzles and parallel processing. (sorry if I don’t do this justice)
    puzzle: problem space
    box of pieces: shared memory/storage
    person working on puzzle: CPU/core (multiple people == multicore)
    when two people reach into the box at the same time: resource contention
    when you separate out a portion of the pieces (“you find the edges”/”you take this quadrant”): divide/parallelization
    when you knit together solved parts of the puzzle: combine
    puzzles that have well defined areas: easily parallelizable problems
    …and all of the implied network, architecture, resource, overhead, etc. issues that obtain.

  4. On net neutrality: Consider the case where Panasonic brand TVs are the only sets you can legally buy in your town/state/country. Panasonic decides to buy ABC and systematically begins adding static to all channels except ABC stations, and builds into their TVs automatic DVR of all ABC stations, but blocks DVR of any other stations.
    Not so far fetched, when Comcast buys NBC Universal or the Advanced Access Content System (AACS)/HDMI specification prohibits composite out. [http://hardware.slashdot.org/story/10/02/19/1936209/2010-mdash-the-Year-AACS-and-HDMI-Kill-Off-HD-Component-Video]

  5. Great examples of analogy! I really like it!
    Recently I started posting interestnig analogies I found on the web on blog.ygolana.com. I thought it could be a good idea to create a place where people can help each other to find useful analogies so I created a simple site (www.ygolana.com) Check it out!

  6. Lol, I like the toothpaste example. To teach I like to give the analogy of a jar, like you pour water [knowledge] into the soil, [student’s brain], which in turns becomes fertile… That’s learning in action!

  7. That’s a really good approach. You say it sounds bizarre, but I think the toothpaste analagy is a really good one. I’ve just completed an undergraduate degree in computing, and I think a lot of professors struggled to either convey things well, or spark any interest in some of the subjects. Let’s face it, computing can be a dry subject, so anything to make it more manageable to comprehend is very very welcome!

  8. You have a very personal and specific method of teaching your students. It is obvious that you love what you do, hence you came up with this kind of arrangement. If you believe that the method described helps kids then it is all for the best I think.

  9. Hi Dave. Here are a few analogies that I use in teaching introductory Java..
    indeterminate loop situation…a carpenter hammering a nail into a board. It may take one swing, three swings, or more depending on the hardness of the wood, the length of the nail, the weight of the hammer, etc.
    Determinate loop situation: your high school phys.ed. teacher tells you to “drop and give me 20 push-ups!”.
    Methods being placed on the call stack: a method is like a plate that is put on the stack of plates you find at the end of the buffet table. As more calls are made, more plates are placed on the stack. When the top most method (plate) finishes its code, it is popped off the stack.

Leave a Reply