This document provides an overview of compiler design. It describes the different phases of a compiler including lexical analysis, syntax analysis, and code generation. It also outlines the overall architecture of a compiler, discussing the analysis and synthesis phases. The document is intended for students interested in learning the basic principles of compilers.