Section Materials

Jan 10: Intro to Scheme
Evaluating atoms and lists. Bindings. The list function, single quote notation, cons, car/cdr. Exercises in constructing and extracting pieces of lists.
Jan 17: Scheme and functions
Anonymous functions. Higher-order functions. map, filter, and reduce. Exercises using recursion over lists and higher-order functions.
Jan 24: Scheme wrapup (XML-like queries)
XML and document markup languages. The equivalence of XML and Lisp/Scheme s-expressions. Extended example of recursive data structure manipulation in Scheme: a simple query function that extracts subtrees from a (XML-like) semistructured document tree. Some sermonizing.
Feb 7: ML and types
ML, patterns, type inference, type synonyms and datatypes.
Feb 14: ML module system and wrapup
Principles of module systems, the ML module system, mutual recursion, currying. (Note: We actually spent most of this section talking about the upcoming ML project, not on the material on these handouts.)
Feb 20: Smalltalk intro (slide versions are linked from this page)
Smalltalk core expression language: bindings, expressions, closures, and a few objects. We also covered Keunwoo's Squeak environment slides.
Feb 27: Smalltalk collections
Smalltalk idioms for abstract base classes. Two alternative designs of lists.
March 7: Review: message sends and super; also, Why programming languages? (Acrobat, gzip'd PostScript)
The differing semantics of ordinary and super sends. A short polemic on the value of a diverse linguistic diet.