Marvin Minsky, the person who came up with the idea of frames, defines a frame as follows:
A frame is a data structure for representing a stereotyped situation, like being on a certain kind of living room, or going to a child's birthday party. Attached to each frame are several kinds of information. Some of this information is about how to use the frame. Some is about what one can expect to happen next. Some is about what to do if these expectations are not confirmed.
Frames are very much like semantic nets, i.e. frames form a hierarchical network of nodes and relations, where the nodes higher up in the hierarchy represent general concepts while the nodes lower in the hierarchy represent more specific variations of the general concepts. (Remember the inheritance hierarchy ?) However, the similarity ends here.
Each node is defined by a set of attributes, which are also called slots. The attributes describe whatever the node represents, e.g. Color: Red, Shape: Sphere, etc. The values of these attributes can either be stated explicitly, or a method can be defined for determining the value from other information. Other methods can also be defined so that they are executed when different conditions about the value are met (i.e. the value has changed, the value needs updating, etc.)