Compiler construction is one of the cornerstones of the building of computer science. The foundations of compiler theory, techniques and practices used in compiler construction are actively evolving since early sixties till nowadays and are still of permanent interest in academia and industry.

In this course we will thoroughly consider some fundamental aspects of compilers and related areas such as formal grammars and parsing models, language design principles and analyses of programming languages’ semantics. Also we will discuss practical techniques in scanning, parsing, semantic analyses for various source languages, code generation and optimization approaches for different target architectures. We will consider some successful examples of real modern compilers and try to apply interesting compilation techniques in a few practical tasks.

The primary focus of this course is exposing the students to the fundamental concepts of compiler construction and of practical aspects and techniques in processing modern programming languages, rather than teach them to use a specific language, a particular tool or technology.