
Studies the principles of programming languages with an emphasis on programming language implementation and compiler design.
Includes various techniques for describing and defining a language, as well as techniques for implementing compilers.
It will also touch on how programming languages are designed, programming language semantics, and why there are so many different kinds of programming languages.