This course introduces the student to the methods and techniques involved in translating high level languages such as PASCAL and C into executable machine code. Topics include study of lexical scanning, parsing, symbol table construction, object code generation, and optimization. The students will write a compiler for a substantial subset of the PASCAL or C language. Graduate students will complete a more comprehensive compiler and present a research project which investigates some topic beyond those covered in the course.