ML (CAML dialect) or Haskell or some other functional language; lambda-calculus and combinators; abstraction and higher-order functions; lazy and eager evaluation; types, polymorphism, and type inference; Equations and pattern matching; SECD machine/G machine; denotational semantics of functional languages; implementing functional languages.