Introduces the theory and practice of programming
language translation. Topics include compiler design, lexical analysis,
parsing, symbol tables, declaration and storage management, code generation,
and optimization techniques.
1. The aim of this Course is to show how to apply the
theory of language translation introduced in the prerequisite courses to build
compilers and interpreters.
2. It covers the building of translators both from
scratch and using compiler generators. In the process, the Course also
identifies and explores the main issues of the design of translators.
3. The construction of a compiler/interpreter for a small
language is a necessary component of this Course, so students can obtain the
4. Discuss the effectiveness of optimization techniques.
5. Explain the impact of a separate compilation facility
and the existence of program libraries on the compilation process.
6. Explain the concept of an abstract data type, and
recognize the importance of typing for abstraction and safety.
1. Explain the structure of compilers
the basic techniques used in compiler construction such as lexical analysis,
top-down, bottom-up parsing, context-sensitive analysis, and intermediate code
3. Explain the basic data structures used in compiler
construction such as abstract syntax trees, symbol tables, three-address code,
and stack machines
Design and implement a
compiler using a software engineering approach.