A comparative study of programming languages, with emphasis on
underlying issues in language implementation. Detailed study
of features and concepts of both conventional imperative
languages, including object-oriented languages,
and less conventional paradigms, including functional
programming. Emphasizes ``hands on'' experience in using
various languages, and working with implementations of simplified
languages that illustrate the concepts under study.