This document provides lecture notes on compiler design. It discusses the structure of a compiler including phases like lexical analysis, syntax analysis, intermediate code generation, code optimization, code generation, table management and error handling. It also discusses different types of translators like compilers, interpreters and preprocessors. Finally, it discusses the evolution of programming languages, classification of languages and applications of compiler technology.