unit -*- Outline -*- * introduction motivation for the course * xml (used 2005) comparision on Scheme and XML * designing-a-langauge (used 2001-2004) we design a language together basic parts of a langauge: computation, abstraction, combination * Functional programming (in Scheme) ** basics basic concepts, tools for writing symbolic programs (Little Schemer, SICP 1) ** flat-recursion flat recursion over lists (Little Schemer, SICP 1) ** scheme-procedures procedures as data in Scheme ** syntax-abstraction syntactic sugars, more of Scheme ** induction-recursion induction and recursion in programming (EOPL 1.1-1.2) ** scope scope, lambda calculus, lexical addresses (EOPL 1.3) ** data-abstraction data abstraction, inductive data (EOPL 2.1-2.2.1) abstract syntax (EOPL 2.2.2) alternative representations of data (EOPL 2.3) ** programming-help ideas to help make writing programs go faster * Language Essentials ** interpreters simple interpreters (EOPL 3.1) front ends (EOPL 3.2), conditionals (EOPL 3.3) local bindings (EOPL 3.4) procedures and closures (EOPL 3.5) recursion (EOPL 3.6) variable assignment (EOPL 3.7) statements (EOPL 3.9) ** parameters call by value, call by reference, lazy evaluation (EOPL 3.8) ** aop aspect-oriented programming, used in Spring 2004 ** types typed langauges, typing rules (EOPL 4.1), type checking (EOPL 4.2), enforcing data abstraction (EOPL 4.3) type inference (EOPL 4.4) ** object-oriented class and objects, inheritance, implementations (EOPL 5) ** oo-types types for OO languages, a type checker (EOPL 6) * summary-review summary of course, course evaluations