CSC 251. Principles of Compiler Design. Programming language translation, lexical analysis, syntax analysis including LR, LALR, and predictive techniques. Semantic analysis including semantic specification. Code generation and optimization including control and data flow analysis. Storage management. Error detection and recovery. Prerequisite: CSC 151 or CSC 201. Graded: Graded Student. Units: 3.0.