The module describes the structure of a typical compiler. The phases of compilation, from lexical analysis to code generation and simple optimisation, and the main techniques used in each phase will be covered. Some modern developments will be discussed.