As of Nov. 8, here is what we have done this term. GRAMMARS Parse trees Ambiguity Abstract syntax SYNTACTIC SUGAR Program equivalence PROGRAM INVARIANTS Run time assertions Proof rules TYPES Guaranteeing safety and security Type checking Structural equivalencce vs name equivalence of types Data representation in memory SCOPE Static scope vs dynamic scope Representing scope using environments in an interpreter Representing scope using static links in activation records RUNTIME VALUES Primitive values Reference (heap-allocated) values and assignments Functions (methods, objects) as values Parameter-passing ML As a meta-language in which all the above concepts are represented ------------------------------------------------------------------------ We have 7 more lectures and 3 more homeworks. I will use the remaining lectures and homeworks to review the old material and then re-visit it in the context of Java (Ch. 6 and 7). One lecture (Nov. 16) will be used for a second (optional) midterm: Nov 9: Review Nov 11: Review Nov 16: No lecture (midterm); Homework due Nov 18: Start Java Nov 23: Java ; Homework due Nov 30: Java Dec 2: Java ; Homework due