Statement of Course Outcomes


Course Number: CS 516


Course Name: Compiler Design


Course Coordinator: David Klappholz


Graduate or Undergraduate Equivalent: CS 494

 

Catalog Description: Lexical analysis; syntax analysis; symbol table construction; semantic analysis; syntax-directed translation; dataflow analysis; liveness analysis; and register allocation. The emphasis in this course is on the integration of the various parts of a compiler. Each student writes a complete compiler for a small, but substantial, language. Prerequisite: CS 510 or equivalent.


Course Outcomes


Each course outcome is followed in parentheses by the Program Outcome to which it relates.


CS 516 Compilers

 

Goals: Students who successfully complete this course will:

 

Objectives: Students who successfully complete this course will be able to:

 


1. [parse tree construction] construct a parse tree, or explain why no parse tree exists, given a BNF grammar and a string over the appropriate alphabet (cs-discrete-math)(is-discrete-math)(cys-discrete-math)

 

2. [lexical analyzer implementation] implement a lexical analyzer from a specification of a language’s lexical rules (cs-problem-solving, cs-requirements)(is-problem-solving, is-requirements)(cys-problem-solving, cys-requirements)

 

3. [eliminate square and curly brackets] translate a BNF grammar that uses “[ ]” notation and “{ }” notation into an equivalent grammar with no such notation (cs-discrete-math)(is-discrete-math)(cys-discrete-math)

 

4. [compute FIRST set] compute the FIRST set for a BNF grammar (cs-discrete-math, cs-problem-solving)(is-discrete-math, is-problem-solving)(cys-discrete-math, cys-problem-solving)

 

5. [compute follow set] compute the FOLLOW set for a BNF grammar (cs-discrete-math, cs-problem-solving)(is-discrete-math, is-problem-solving)(cys-discrete-math, cys-problem-solving)

 

6. [determine FIRST intersect FIRST constraint satisfaction] determine if a BNF grammar satisfies the constraint on intersection of FIRST sets required for single-symbol-lookahead, top-down, lookahead parsing (cs-discrete-math, cs-problem-solving)(is-discrete-math, is-problem-solving)(cys-discrete-math, cys-problem-solving)

 

7. [determine FIRST intersect FOLLOW constraint satisfaction] determine if a BNF grammar satisfies the constraint on intersection of FIRST and FOLLOW sets required for single-symbol-lookahead, top-down, lookahead parsing (cs-discrete-math, cs-problem-solving)(is-discrete-math, is-problem-solving)(cys-discrete-math, cys-problem-solving)

 

8. [check for left recursion] determine if a BNF grammar satisfies the constraint on left recursion for single-symbol-lookahead, top-down, lookahead parsing (cs-discrete-math, cs-problem-solving)(is-discrete-math, is-problem-solving)(cys-discrete-math, cys-problem-solving)

 

9. [fix simple constraint violations] fix simple violations of constraints that preclude single-symbol-lookahead, top-down, lookahead parsing (cs-discrete-math, cs-problem-solving)(is-discrete-math, is-problem-solving)(cys-discrete-math, cys-problem-solving)

 

10. [construct parser] design and implement a single-symbol-lookahead, top-down, lookahead parser from a BNF grammar (cs-problem-solving, cs-requirements)(is-problem-solving, is-requirements)(cys-problem-solving, cys-requirements)

 

11. [design symbol table] design a symbol table format for the language defined by a BNF grammar (cs-problem-solving, cs-requirements)(is-problem-solving, is-requirements)(cys-problem-solving, cys-requirements)

 

12. [implement symbol table construction] enhance the parser to construct a symbol table as it parses an input (cs-problem-solving, cs-requirements)(is-problem-solving, is-requirements)(cys-problem-solving, cys-requirements)

 

13. [formulate semantic tests] determine the specific semantic tests, e.g., type analysis, to perform on an input to the parser for a BNF grammar and enhance the parser to perform that analysis (cs-problem-solving, cs-requirements)(is-problem-solving, is-requirements)(cys-problem-solving, cys-requirements)

 

14. [implement semantic testing] enhance the parser to perform semantic tests as it parses an input (cs-problem-solving, cs-requirements)(is-problem-solving, is-requirements)(cys-problem-solving, cys-requirements)

 

15. [design code generator] design a syntax-oriented translation, into a specified intermediate code language, for the high-level language defined by a BNF grammar, and enhance the grammar’s parser to perform that translation. (cs-problem-solving, cs-requirements)(is-problem-solving, is-requirements)(cys-problem-solving, cys-requirements)

 

16. [implement code generator] enhance the parser to perform translation into the intermediate code language as it parses an input. N.B. the code generator need not generate target code from source code containing procedure/function calls as that has been found to be too much for a single-semester course, (cs-problem-solving, cs-requirements)(is-problem-solving, is-requirements)(cys-problem-solving, cys-requirements)


17. [construct dynamic run-time stack] draw the dynamic structure of the run-time stack when target code containing procedure/function calls is executed. (cs-runtime)(cys-runtime)

 

18. [Apply code optimizations] apply simple intermediate code optimizations (as time permits) , (cs-problem-solving, cs-requirements)(is-problem-solving, is-requirements)(cys-problem-solving, cys-requirements)