* Basics of (especially "functional"-style) programming: including pattern matching, recursive definitions, abstract datatypes, **modularity, separating interfaces from implementation**
* The syntax and proof theory of the untyped lambda calculus; at least some discussion of its semantics
* Different **evaluation-order strategies** for formal systems, different "normalizing" properties
* Basics of (especially "functional"-style) programming: including pattern matching, recursive definitions, abstract datatypes, **modularity, separating interfaces from implementation**
* The syntax and proof theory of the untyped lambda calculus; at least some discussion of its semantics
* Different **evaluation-order strategies** for formal systems, different "normalizing" properties