CS 342 Lecture -*- Outline -*- * Programming lessons LISP: how to write recursive functions base, inductive case make program structure match structure of data CLU: the utility of data abstraction information hiding (keep rep details in their place) think about types Prolog: run-time efficiency isn't the only thing want to write programs efficiently too constructive definitions can be turned into programs Smalltalk: the power of polymorphism (message passing and subclasses) want to define a general vocabulary for organizing ADTs Scheme: never write the same thing twice a motto for programmers applications: the subroutine abstract algorithm the abstract data type abstract data inheritance abstract data defn. polymorphism (message passing) abstract algorithm