A study of the principles that govern the design and implementation of programming languages. Topics include language structure, data types, and control structures. Programming projects will familiarize students with features of programming languages through their implementation in interpreters.