A study of the principles of the design and implementation of higher-level programming languages. Topics include syntax, semantics, implementation issues, and specific features and strengths of languages. Alternative paradigms for describing computation are also covered. Students are introduced to the theoretical foundations of these paradigms and are given an opportunity to write programs in each of the paradigms. Prerequisites: ◆ CS 341 - Data Structures.