Credit(s):3 An introduction to the specification, design, and analysis of programming languages. Topics include syntax, operational semantics, type systems, type safety, lambda calculus, functional programming, polymorphism, side effects, and objects.