CMPS 4500 Compiler Design
Catalog Description
CMPS 4500 Compiler Design (4 units)
An introduction to compiler design and construction. Coverage includes lexical, syntactic and semantic analysis, top-down and bottom-up parsing, code generation, and error detection. Theoretical topics include finite and push-down automata. Students will implement a compiler front-end. CMPS 3500 or permission of instructor.
Prerequisites by topic
Programming language formal grammars
Units and Contact Hours
4 semester units. 3 units lecture, 1 unit lab.
Type
Elective for CS.
Required Textbook
Compilers: Principles, Techniques, and Tools (2nd edition) by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman
Recommended Textbook and Other Supplemental Materials
None.
Coordinator
Donna Meyers
Student Learning Outcomes
This course covers the following ACM/IEEE Body of Knowledge student learning outcomes:

CC-AL: Algorithms and Complexity
CE-PL: Programming Languages

ABET Outcome Coverage
The course maps to the following program/student outcomes for Computer Science (CAC/ABET) and Computer Engineering (EAC/ABET):

(CAC PIb1): Identify key components and algorithms necessary for a solution.
Assessed by final project.
(CAC PIi1): Program in a suitable computer language.
Assessed by final project.

Lecture Topics and Rough Schedule

Introduction to Compilers week 01
Syntax-directed Translation
week 02
Lexical Analysis
week 03
Regular Languages
week 04
Finite Automata
week 05
Syntax Analysis & Context-Free Languages
week 06
Semantic Analysis & Context-Sensitive Languages
week 07
LL Parsing
week 08
Push-down Automata
week 09
LR Parsing
week 10
Syntax-directed Definitions
week 11
Intermediate Code Generation for Expressions
week 12
Intermediate Code Generation for Flow-Control
week 13
Backpatching for LR Parsers
week 14
Intermediate Code Generation for Function Calls
week 15

Grading Policy
                                    A   93%
                                    A-  90%
    10 HW/Labs...15%                B+  87%
    Project......60%                B   83%
    Final Exam...25%                B-  80%
                                    C+  77%
                                    C   70%
                                    C-  65%
                                    D+  60%
                                    D   50%
                                    D-  40%
                                    F  below 40% 
Estimated ABET Category Content
Algorithms and Complexity: 2 Credit Hours
Programming Languages: 3 Credit Hours
Prepared By
Donna Meyers, June 2014.
Approval
Approved by CEE/CS Department, June 2014.
Effective Fall 2013