CS221/321 Lecture 12 November 29, 2011 Possible Bonus Topics For the last lecture, we can discuss one of the following * Continuations * Objects * Type inference ====================================================================== Course Summary -------------- What have we learned about programming languages? * Careful, incremental development of basic concepts. simple arithmetic expressions -- a (seemingly) trivial language SAE let: local variables, bindings, scope, free and bound variables substitution, free variable capture environments [SAEL] functions: abstraction and application [Fun] conditional expressions (boolean values, relational operators) recursive functions (e.g. factorial) the Y combinators types: basic types, type checking (TFun) * Inductive proof techniques What have we not learned? * Lots of details about lots of "real" languages. * Have not surveyed various "programming paradigms" (except the "functional programming" paradigm). No object-oriented, no logic programming, etc. ====================================================================== Advertisement: Type Systems course, Winter 2012, 10:30-11:50am, TTh Build on CS221/321 by exploring: more concepts of types and operational semantics, with applications to the design of 1) Object-oriented languages 2) Modern support for modularity and abstraction in programs