Formal definitions and theory of programming languages. Specifying, verifying and reasoning about programs. Language processors (interpreters, type-checkers, translators) in a formal framework.