A survey of language classes, such as imperative, functional, logic, concurrent and object- oriented paradigms, as well as their run-time structures. The student will gain experience writing programs in a variety of languages and develop an appreciation of the strengths and weaknesses of each language. Includes historical precedents and current trends in design and philosophy of languages. Formal approaches to defining the syntax and semantics are used to describe the fundamental concepts underlying programming languages. Prerequisite(s): COSC 244. As needed.