This document provides an introduction to compiler construction. It outlines the objectives of understanding how to build a compiler, use compiler construction tools, and be familiar with concepts like virtual machines, grammars, and optimization techniques. It defines compilation as translating a program to a semantically equivalent target language and interpretation as performing operations implied by a source program. The analysis-synthesis model and how it is used in compilers and other tools is described. The phases of a compiler from preprocessing to code generation are outlined.