CS 342 units -*- Outline -*- * introduction motivation for the course * basic-interpreter The basic evaluator: syntax, data structures, name management, input, environments, eval. * Larger-Values ** lisp recursion, recursively-defined data structures, dynamic memory allocation, garbage collection, relational database example. ** apl array operations, using expressions instead of statements, histogram example. * Object-Oriented Programming ** clu data abstraction, mutation, polynomial example type checking, exception handling. ** smalltalk message passing, inheritance, discrete-event simulation example, uniformity. * Logic Programming ** prolog relational programming, logical and procedural interpretations, difference lists, blocks world example, comparison with logic. * Functional-Programming ** scheme lambda, static vs. dynamic scoping, higher-order functions, continuations, own variables, term-rewriting example. ** ml type inference, polymorphism. ** sasl functional programming, lazy evaluation, infinite data structures, boolean satisfiability and reachability examples. SASL vs. Scheme. ** functional-programming ** lambda-calculus equational theory. * Implementation (may omit) ** compilation stack allocation, displays, downward funargs. ** memory management mark and sweep, semi-space garbage collection. * review implications for design, future directions.