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 concepts from some or all of the imperative, functional, object-oriented, concurrent, and logic programming language paradigms.