CS 4430 Compilers I

Syllabus

Overview:    The compiler is the programmer's most important tool. It gives the programmer the freedom to write practical programs in a high-level programming language while still achieving good execution times and efficient use of space. In this course, we study the principles underlying the design of most compilers, and we will actually write a simple compiler. The course topics will span formal foundations to modular software development. Compilers are fundamentally translators from a human-readable language into a machine-readable language. The principles and programming techniques that are required for implementing this translation process involve ideas from symbolic computation, data structures and algorithms, automata theory, and formal semantics.

Textbook:    Fischer & Le Blanc
    Crafting a Compiler with C
    Benjamin/Cummings, 1991
       

Prerequisites:    CECS 126 and MATH 226

Topics:    1. Lexical Syntax & Scanners                               (2weeks)
    2. Grammatical Structure & Parsing                (3 weeks)
    3. Typechecking                        (1 week)
    4. Intermediate Code Generation                (4 weeks)
    5. Code Optimization                        (3 weeks)
    6. Run-time System Design                    (2 weeks)

Prepared by:    Bill Harrison

Date:    September 2004

 Introduction to the
translation of programming languages by means
of interpreters and compilers. Lexical analysis,
syntax specification, parsing, error-recovery,
syntax-directed translation, semantic analysis,
symbol tables for blockstructured languages,
and run-time storage organization. Prerequisite: CS 3270 and MATH 2320.