CS 541 units -*- Outline -*- * Introductory ** introduction what the course is about used in '91 and '92, and '96-98, '99, '02, '04-05 in '93 and '94 was replaced by student discussion and presentations in '95 student presentations were spread out throughout the semester ** domain-specific used as introduction in Fall '99 ** general-review what is a programming langauge, review of general terms used in '90 and '91 ** concepts-paradigms based on Watt's book of the same title used in '93 ** expressive-power what is meant by expressive power, can it be formalized? used in '90-92, '03 * paradigms a tour of the major paradigms ** functional might also want lambda calculus or type checking here omitted in Fall '97 in favor of haskell/introduction.txt, only sampled in Fall '99, Fall '03, Fall '05 *** scheme as intro to functional programming, dialect of LISP used in '90-'91 *** standard-ML as intro to functional programming includes concrete data used in '92-'95 *** haskell as intro to functional programming includes concrete data used in '96-99, '02, '03, '05 *** haskell-dsl used in 1999 *** functional-advanced functional programming techniques not covered above: streams and lazy data structures, reasoning used in '92-'95, '03, sampleed in Fall '05 ** object-oriented *** smalltalk used in '90-92, '94-99, and '02, '03 *** object-oriented-types used in '03 *** c++ used in '93 *** object-oriented-design larger design issues, pragmatics used in '93-97, '02, '03 *** multi-methods an interesting research topic used in '95, '97, '98 *** java used in Fall '97-98, and a bit (exceptions) in '02 and '03 *** javaBeans used in Fall '98 *** scala used in Fall '05 *** object-oriented-static-analysis planned for Spring '97 *** object-oriented-semantics formal semantics of message passing and inheritance used in '90-92 ** Aspect-oriented in '02 and '03, '04, '05 *** aspectj includes motivation for AOP and both dynamic and static crosscutting used in '02 and '03, '04, '05 *** aop-semantics based on our research work used in '03, '04 ** declarative overview of various forms of declarative languages, used in '90-'92 *** prolog used in '91 and more fully in '92; now obsoleted by lambda-prolog *** lambda-prolog used in '93, '94-95, '97, and Fall '04 *** obj3 used in '90 ** parallel-processing used in '92 *** distrib used in '93 *** sr the SR distributed programming language used in '93 * Semantics ** syntax for students who haven't had syntax in 531 used in '93 ** Structure of typed programming languages units based on Schmidt's book used in '96 *** corelang *** abstraction *** parameterization *** qualification *** records-lambda ** Static semantics used in '91-92 ** axiomatic-sematics pre and postconditions, the language Euclid, Hoare logics used in '90 ** types basics, data abstraction, polymorphism, type reconstruction module types used in '92 and somewhat in '93 sml-type-inference.txt replaced this in '94-'95 ** Dynamic semantics used in '90-92 and '94-95 *** operational-semantics relation to compilers, rewrite rules, terminal transition systems used in '90-92 only as a homework in '93 extensively augmented and used in '94-95, '97 *** denotational-semantics fundamentals, domains, small examples **** state mutation in objects and the store omitted in 1994-95, as covered by mini-Cecil in denotational-semantics **** lambda-calculus simply typed lambda calculus, untyped lambda calculus, used in '90-93, and '03, '04, '05 mostly covered in discussions of SML and \Prolog in 1994-95 **** fixed-points semantics of recursive definitions, continuity, fixed points revised in 1994-95, but not used **** naming environments, modules, scope rules used in '90-92 **** control control constructs, call/cc, continuations, streams used in '90-92 *** algebraic semantics equational logic and multi-sorted algebras (see also obj3) planned for but not used used in '94 *** action-semantics planned for but not used in '94 * summary-review * course-evaluations