The document provides an overview of compilers and their organization. It discusses how compilers translate human-oriented programming languages into machine languages. The main sections describe what compilers do, including the machine codes and target code formats they generate. It also distinguishes between compilers and interpreters. Other sections cover the syntax and semantics of languages, and the typical organization of a compiler into a front-end and back-end. The front-end performs analysis and the back-end performs code generation. Key compiler components like scanners, parsers, type checkers and code generators are also introduced.