Concepts of high-level programming language design are explored in detail. Cadets will examine the fundamental issues of programming language design and use this knowledge as a framework for comparison of different high-level languages. Cadets will study the imperative, functional, object-oriented, concurrent, and logic programming language paradigms. They will program in a variety of languages such as C++, LISP, PROLOG, and Java.