We collected and organized the following 57 notional machines:
| PL | NM |
| array |
clothesline |
| array element |
clothespin |
| element index |
label on the pin |
| element value |
paper sheet in the pin |
| PL | NM |
| array |
row of spaces in a parking lot |
| array element |
car |
| element index |
space number in lot |
| element value |
specific car in a specific value |
| PL | NM |
| array |
stack of boxes |
| array element |
box |
| element index |
number on each box |
| element value |
post-it in box |
| PL | NM |
| array |
row of students |
| array element |
student (standing in a row) |
| element index |
relative position of the student, start with 0 |
| element value |
nationality of student |
| PL | NM |
| processor |
teacher |
| instruction |
action taken by teacher, reported in list |
| canvas |
drawing area on sheet of paper |
| PL | NM |
| local variable |
box with label at bottom of a frame labeled with function name |
| parameter |
box with label at the top of a frame labeled with function name |
| variable in main |
box with label in a frame called main |
| PL | NM |
| call stack |
stack of papers |
| stack frame |
sheet of paper |
| local variable |
line of text on a sheet |
| call |
push a sheet on top of the stack |
| return |
pop the top sheet off the stack |
| PL | NM |
| method call |
solid arrow from caller activation to callee activation |
| method return |
dashed arrow from callee activation to caller activation |
| activation |
tall box along lifeline from call arrow to return arrow |
| object |
box at top and lifeline down |
| thread |
line through all calls and returns from start to finish of diagram |
| PL | NM |
| statement |
rectangular node |
| control-flow between statements |
arrow from node to node |
| method entry |
round 'e' node at top |
| method exit |
round 'x' node at bottom |
| PL | NM |
| ... |
... |
| if condition |
diamond-shaped node |
| condition outcome |
label on an arrow coming out of a condition (e.g., true, false) |
| PL | NM |
| ... |
... |
| switch condition |
diamond-shaped node with multiple arrows leaving |
| switch cases |
label on arrows coming out of a switch (including 'default') |
| PL | NM |
| ... |
... |
| || in condition |
'false' arrow to extra diamond node |
| && in condition |
'true' arrow to extra diamond node |
| PL | NM |
| ... |
... |
| back edge |
arrow pointing to a node that came prior in the flow (introducing a cycle) |
| while-, do-while-, for-loop |
cycle in the graph |
| PL | NM |
| control flow |
arrows, superimposed on the code |
| expression |
rectangular outline around expression, superimposed on the code |
| PL | NM |
| ... |
(all aspects from 1-Static Structure) |
| instruction execution |
add current step number to arrow leading in, then execute by adding to or looking up information in memory table, expression evaluator, or output areas |
| expression evaluation |
copy expression, substitute values, and evaluate it in expression evaluation area |
| variable declaration |
find first blank column in memory table and add name of variable in first row; value added underneath if initialised |
| variable assignment |
find variable in the memory table, strike through existing entry, and add entry to row below. |
| conditionals and loops |
evaluate control expression to 'True' or 'False', then follow relevant labelled control path to next instruction |
| PL | NM |
| expression |
tree of nodes linked together |
| operator |
green node |
| operand |
hole in a node where a child node can be attached |
| subexpression inside expression |
subtree connected to a node's hole |
| type of subexpression |
blue tag above subexpressions's root node |
| numerical literal |
tree node labeled with the number |
| variable |
tree node labeled with name of variable of a numeric type |
| unary arithmetic operator (+, -) |
tree node with operator in front of a hole |
| binary arithmetic operator (+, -, *, /, %) |
tree node with operator between two holes |
| PL | NM |
| ... |
(all aspects from 1-Arithmetic) |
| Boolean literal |
leaf tree node labeled with true or with false |
| variable |
leaf tree node labeled with name of variable of type boolean |
| unary negation operator (!) |
tree node with operator in front of a hole |
| binary logical operator (|, &, ||, &&) |
tree node with operator between two holes |
| PL | NM |
| ... |
(all aspects from 2-Logic) |
| null |
tree node containing 'null' |
| this |
tree node containing 'this' |
| instantiation |
tree node with 'new', class name, and a parentheses containing comma-separated holes for constructor parameters |
| variable |
tree node containing name of variable of an Object type |
| instance field access |
tree node containing a hole, a dot, and a field name |
| instance method invocation |
tree node with a hole, a dot, and parentheses containing comma-separated holes for method parameters |
| class field access |
tree node containing class name, a dot, and a field name |
| class method invocation |
tree node with class name, a dot, and parentheses containing comma-separated holes for method parameters |
| PL | NM |
| ... |
(all aspects from 3-Objects) |
| array allocation |
tree node with 'new', element type, and [hole] for each dimension |
| array length |
tree node with a hole and '.length' |
| array element access |
tree node with a hole, and [hole] |
| PL | NM |
| ... |
(all aspects from 4-Arrays) |
| binary comparison operator (==, !=, <, <=, >=, >) |
tree node with operator between two holes |
| ternary conditional operator (?:) |
tree node with a hole for the condition, '?', a hole for the then-value, ':', and a hole for the else-value |
| PL | NM |
| function |
black box |
| parameters |
arrow into the box |
| return value |
arrow out of the box |
| PL | NM |
| function |
cell transforming input to output |
| PL | NM |
| function |
tank |
| parameters |
hoppers on top of tank |
| return value |
output pipe on bottom of tank |
| PL | NM |
| grammar rule |
a train track with a start and an end |
| parsing or generating |
pushing a train engine through the train track |
| terminal symbol (in a grammar rule) |
tunnel representing a terminal symbol, generating or recognizing the text with which it is labeled |
| non-terminal symbol (in a grammar rule) |
tunnel representing a non-terminal symbol, invoking the rule mentioned on its label |
| sequence |
track segment going from one tunnel to the next |
| selection |
two switches to split and join the track, requiring the train engine to decide which track to take |
| repetition |
two switches allowing the train engine to go back and repeat a part of the grammar multiple times |
| PL | NM |
| HashSet |
Box of hanging folders |
| bucket |
Single file folder |
| key |
Piece of paper in a file folder |
| value |
N/A (HashSet, not HashMap) |
| add(key) method |
Find correct folder, check if the folder already contains the key by comparing the key to all contents of the folder |
| PL | NM |
| list |
stack of boxes on a pallet |
| list element |
box on the stack |
| [ |
top of the stack |
| ] |
pallet |
| PL | NM |
| Boolean value |
domino piece (standing, or fallen) |
| or operation |
two joining lines of dominos |
| xor operation |
two lines of dominos like in left image |
| and operation |
two lines of dominos like in right image |
| function argument |
first domino piece in a line |
| function return value |
last domino piece in a line |
| PL | NM |
| method call |
dance to another location |
| return address |
dance back to the previous location |
| PL | NM |
| class |
natural language description of methods and their behaviors (on sheet of paper) |
| object |
student |
| method call |
verbal request made to student |
| actual argument |
stated as part of verbal request |
| return value |
verbal response from student |
| PL | NM |
| memory cell |
seat |
| value |
student or number given to student |
| address |
established by counting off |
| offset |
number of seats between two targets |
| segment |
front, middle, or back of the room |
| PL | NM |
| Object |
Type written and underlined in a rectangle |
| variable |
variable name followed by a small box |
| int |
number written in a small box |
| reference |
arrow originating from a small box |
| null |
X written in a small box |
| local variable |
free floating |
| instance variable |
shown inside an object |
| PL | NM |
| int |
number written on paper in a small blue pocket |
| int array |
sequence of int variables |
| variable |
variable name followed by a small box |
| stack frame |
rectangle with the method name written on the side containing all local variables |
| reference |
pocket containing a remote control with a ribbon to the referent |
| null |
empty pocket with an X shown in the back |
| PL | NM |
| ... |
(all aspects of Physical Java 1) |
| object |
a small stuffed animal with a resemblance to the name of the object |
| instance variables |
(not represented) |
| PL | NM |
| ... |
(all aspects of Physical Java 1) |
| object |
object type written/underlined in a rectangle |
| int |
number written in a small box |
| instance variables |
shown in an object |
| PL | NM |
| ... |
(all aspects of Physical Java 3) |
| reference |
arrow originating from a small box |
| null |
X written in a small box |
| PL | NM |
| ... |
(all aspects of Physical Java 4) |
| local variable |
free floating variable |
| stack frame |
(not represented) |
| PL | NM |
| ... |
(all aspects of Physical Java 2) |
| variable type |
sticky note with the name of the type next to the pocket that holds the reference |
| parent reference |
a remote control that only has buttons corresponding to the things that the parent object knows how to do. |
| child object |
a stuffed animal that - as a child - 'does what it wants' and not necessarily what the parent would do. |
| PL | NM |
| procedure |
worker who knows how to do a particular job |
| procedure call |
calling the name of the worker, so that he starts doing his particular job |
| procedure input |
giving information to the worker (telling them in their right ear) |
| procedure implementation |
instructions for the worker on how to do their job |
| procedure effect |
how the worker affects the world |
| procedure result |
what the worker speaks to the worker on their left |
| PL | NM |
| processor |
file clerk |
| instruction |
action taken by file clerk (e.g., read info off a card) |
| PL | NM |
| stack frame |
red rectangle, with method name and line number in left compartment, boxes for paremeters and local variables in right compartment |
| object |
purple rectangle, with class name in left compartment, boxes for instance variables in right compartment |
| array |
blue rectangle consisting of boxes for elements |
| static fields |
yellow rectangle, with class name in left compartment, boxes for class variables in right compartment |
| variable |
box inside a rectangle |
| reference value |
solid arrow pointing to a rectangle |
| primitive value |
value written inside a box |
| callee-caller relationship |
dashed red arrow from callee stack frame to caller stack frame |
| PL | NM |
| memory |
table of identifer and value |
| instruction |
update of state according to defined rules |
| variable |
entry in the table |
| conditional |
conditional evaluator (flag) that affects the 'program counter' |
| control flow |
program counter that identifies next line to get executed and is updated according to a set of rules |
| PL | NM |
| ... |
... |
| method table |
table of identifier and starting line |
| scope |
'sub-table' area in the memory |
| parameter |
entry in the memory sub-table of a function call |
| PL | NM |
| ... |
... |
| heap |
object table of address and value |
| reference |
addresss used as a value (denoted in <...>) |
| object |
entry in object table with address and value |
| PL | NM |
| ... |
... |
| method |
entry in the table of sub-routines |
| object |
entry in object table with address and value(s) |
| PL | NM |
| frame |
group of elements with function name |
| parameter |
labeled box inside frame |
| local variable |
labeled box inside frame |
| PL | NM |
| object |
person |
| method call |
verbal request to next person in line |
| return value |
verbal response from next person in line |
| base case |
(action of) last person in line |
| recursive case |
(action of) all but last persons in line |
| linked list |
line of persons (e.g., waiting in amusement park, or row in classroom) |
| PL | NM |
| object |
red rounded rectangle, with class name containing instance variables |
| instance variable |
box inside object, with name, type, value |
| PL | NM |
| stack |
one side of the drawing (labeled stack), containing zero or more stacked 'stack frame' rectangles |
| stack frame |
grey rectangle, with method name, containing local variables and parameters of the method |
| local variable |
box inside stack frame, with name, type, value |
| parameter |
box inside stack frame, with name, type, value |
| PL | NM |
| ... |
(all aspects of 1 - Objects and 2 - Stack Frames) |
| reference value |
arrow from a variable rectangle (anywhere, i.e., in the stack or the heap) to an object rounded rectangle |
| null value |
a ground symbol (i.e., the absence of an arrow) |
| PL | NM |
| ... |
(all aspects of 1 - Objects, 2 - Stack Frames, 3 - References) |
| array |
red rounded rectangle on the heap, labeled with array type |
| array element |
a field in the array, with index, type, and value |
| array length |
a field in the array, with name 'length' and type int, and a value corresponding to the number of elements |
| PL | NM |
| variable |
typed box/memory location |
| statement |
changes a memory location |
| object |
collection of boxes in memory |
| method |
changes an object |
| PL | NM |
| variable |
parking space |
| value |
vehicle |
| type of variable |
vehicle size/shape/constraint on parking space |
| type of value |
type of vehicle |
| PL | NM |
| Variable |
Box |
| access |
opening box, accessing topmost post-it |
| rename variable |
new name on box |
| assign (list) |
new name also on box |
| assign simple value |
second box with same post-it |
| PL | NM |
| variable |
clothespin |
| variable name |
label on the pin |
| value |
paper sheet in the pin |
| PL | NM |
| variable |
pigeon hole in shelf |
| variable name |
label attached to the pigeon hole |
| value |
note inside the pigeon hole |
| PL | NM |
| variable |
table heading |
| value |
last element listed in the column |
| PL | NM |
| literal string |
pronounce each character in string |
| variable |
pronounce 'the variable' and give its whole name |