Sections covered since first midterm:

2.3-2.3.3
2.4-2.4.3
2.5-2.5.2
3.1
3.2-3.3.4
3.4

Note: We also covered 3.5-3.52 (streams) but streams will not
be on the second midterm. They will be on the final exam.

2.3-2.3.3
symbolic data
quotation
differentiation example
representing sets

2.4-2.4.2
multiple representations
tagged data
data-directed programming
table of operations
packages
apply-generic
message-passing

2.5-2.5.2
generic operations
coercion

3.1
local state variables (bank account examples)
message-passing
random number generator
Monte Carlo simulation
imperative programming

3.2-3.3.4
environment model of evaluation
environment
frames
bindings
enclosing environment (environment a frame points to)
one binding shadows another binding
rules for evaluation
use of frames to hold local state variables
effect of internal (nested) definitions
mutators
mutable data
sharing and identity
queues
deques
representing tables
memoization
digital circuit simulation
primitive function boxes
wires
agenda
time segments

3.4
concurrency
serializer
mutex (mutual exclusion)
semaphore
test-and-set!
deadlock