I went through the lecture slides and jotted down some notes on anything that I was still confused about.  Please feel free to comment on, answer the questions in, or added on to this list of questions:

Lecture 3:
slide 17:
Problem: In class, Prof. Jagannathan challenged us to come up with a case where the BFH fails.
Solution (?): given the bool and color datatypes, supply the following patterns:
p1 = (x, red)
p2 = (false, blue)
p3 = (true, green)

The tree generated by the BFH will have 10 nodes.
The optimal tree has 8 nodes.

Is this due to the prescence of variables in the bool position?

Lecture 4:
slide 26: Could “fn f => (f(13), f(true))” work if we could promise that the f passed in will always be over type variables, not concrete types?  Is this the kind of power that explicit type variable systems (which he refers to on slide 9) have?

slide 36:
Question posed: “What about lists?”
Answer (?): A box just a pointer, so we would just make a pointer to the list, similar to how we box other non-word-sized data structures

Lecture 7:
slide 10: Question posed: “How might we identify loops in Core-ML?”
Answer (?): Label any recursive call as effectively being a loop

Lecture 8:
slide 11: Shouldn’t the third line of the first example be:
“in if b then g(13, k) else g(15, k’)” ?

Lecture 10:
slide 3: Given that direction is a component of program analysis, how can flow-independent analysis exist?

~Bill Harris