Greg's suggestions for reviewing 1. read the lecture and section notes -- these are the key sources of information. If there's something that's even remotely fuzzy, ask Greg about it. 2. create exercises for yourself or better yet, with a study partner. * 42 problems -- particularly involving state, streams, and higher-order functions. One example we went over yesterday is this one: (if (= (greg) 42) 0 (greg)) Define greg so that this evaluates to 42. Another one we did was: ((greg) (greg)) * box-and-pointer diagrams -- if I give you a diagram of some (mutable) lists as laid out in memory, can you write some Scheme code that will realize those lists? If I give you Scheme code, can you show the box-and-pointer diagram of the data structures it will generate? The goal of all of this is to make sure you understand how Scheme works -- that you have the correct model of evaluation. 3. You can ignore parsing. What you should take away from this is (a) using higher-order functions to factor out code, and (b) using higher-order functions to generate code. 4. You should understand the concepts of OO (e.g., classes, objects, inheritance, subtyping) but need not worry about how to realize these things in PLT-Scheme. Typical questions: What is the difference between a class and an object? Why is inheritance useful? etc. 5. review problem sets and projects.