Metaphors for LLMs

Due: Wed Apr 1 (no joke!) by 11pm

Overview

Metaphors are a tool for conveying the essence of a thing in terms of the features of another. For example:

The key thing about metaphors is that they are not exactly true. Something about the original is lost. (For instance, you can store money in a bank, where it can grow; neither is true of time.) But they help us relate things that are new to us, especially ones that are abstract, in terms of things that are familiar, and usually concrete. That is, they are intended to be learning aids. In class, for instance, we've used the metaphor that a coding agent is a “flaky compiler”.

Assignment Tasks

Task 1: Propose two different metaphors for coding agents:

The goal of this exercise is for you to think about what you see as the salient features of coding agents, and to map them onto something else. The learning here lies in you selecting the salient features, so you should do this assignment on your own, without AI assistance. We expect it might take a while to come up with a first metaphor; then you might get a few more; and then it will take a while to sort through them and think them through. Don't outsource this to AI — this is where your learning happens! If you feel you have multiple good ones and really can't pick, feel free to submit multiple.

Your work should go into a file named METAPHORS.md that you'll put in the repo for this assignment. Please label them as “For First-Year Students” and “For Elder Non-Programmers”.

We're putting these in repos because, as you might guess, in the next assignment you will peer review each other's metaphors.

Criteria

A good metaphor (a) captures salient features of coding agents, (b) leveraging features of something the audience understands, while (c) limiting the questions and incorrect concepts that get invoked. Your peers will assess all three of these criteria.