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 |