This course will introduce the basic concepts of compiler design and implementation. Topics include lexical analysis, various types of parsers, intermediate and code generation and code optimization. The material will be presented from an implementation point of view rather than a formal approach. The best way to learn about compilers is to build them!