Languages and Compilation

All programming languages are based on theoretical principles of formal language theory. In this module, students take a deep dive into formal languages representation and grammars, and how relate to programming language compilers and interpreters.

Students will study formal language syntax and semantics, phrase structure grammars and the Chomsky Hierarchy. They will learn how to classify languages and explore the concepts of ambiguity in Context Free grammars and its implications. In particular, they will learn about the compilation process including lexical analysis and syntactic analysis, recursive descent parsers, and semantic analysis. Finally, students get to investigate the synthesis phase, where intermediate representations, target languages, and structures lead to code generation. In the School, we blend lectures with small group lab sessions where students gain hands-on experience of applying such theory.