Differences between revisions 1 and 8 (spanning 7 versions)
Revision 1 as of 2014-01-22 00:41:14
Size: 1288
Editor: khellman
Comment:
Revision 8 as of 2022-09-23 12:23:44
Size: 1882
Editor: khellman
Comment: Tweaks to learning goals
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
'''CSCI498 --- COMPILER DESIGN''': An introductory course to the design and construction of compilers. Topics include scanning (lexical analysis), parsing, translation, intermediate representation, and target creation. Some simple optimization techniques may be covered as well. '''CSCI498 --- COMPILER DESIGN''': An introductory course to the design and construction of compilers. Topics include scanning (lexical analysis), context free grammars, recursive descent (top-down) parsing, LR (bottom up) parsing, syntax directed translation, syntax trees, expression trees, parse trees, intermediate representation, register allocation and target code generation. Students will construct their own tool chain for compiling a simple language, tracking the relevant course topics as they are covered.
Line 7: Line 7:
Computer Organization (CSCI341) and Software Engineering (CSCI306).
Computer Organization (CSCI341), Software Engineering (CSCI306) and Intro to Linux (CSCI274).
Line 10: Line 11:
The objectives of this course are to introduce students to theory and tools behind language compilers. Upon completion of this course, you should know: The objectives of this course are to introduce students to theory and tools behind language compilers. Upon successful completion of this course,  the student will have practiced and improved their ''coding, code review, communication and collaboration skills''; and be knowledgeable of:
Line 12: Line 13:
 * The theory of lexical analysis, regular expressions, deterministic finite automata (DFAs), non-deterministic finite automata (NFAs), and how to use scanner generators (`flex`).
 * The theory behind parsing, the generation of parse trees, and their translation to abstract syntax trees (ASTs).
 * The implementation and use of symbol tables.
 * AST translation to intermediate representations (IR).
 * IR translation to machine code.

Students will work in groups to implement a compiler from scanner to machine code.
 * The theory of lexical analysis, regular expressions, deterministic finite automata (DFAs), non-deterministic finite automata (NFAs), and how to use scanner generators (eg `flex`).
 * The fundamental principles of context free grammars as well as their associated attributes and properties.
 * Constructs for expressing operator precedence and associativity in context free grammars, as well as how language ambiguities are detected and worked around by modern compiler tools.
 * The theory and implementation of top-down and bottom up parsing, the generation of parse trees, and their translation to abstract syntax trees (ASTs).
 * The evaluation of program statements at the CPU op-code and register level.

Course Description

CSCI498 --- COMPILER DESIGN: An introductory course to the design and construction of compilers. Topics include scanning (lexical analysis), context free grammars, recursive descent (top-down) parsing, LR (bottom up) parsing, syntax directed translation, syntax trees, expression trees, parse trees, intermediate representation, register allocation and target code generation. Students will construct their own tool chain for compiling a simple language, tracking the relevant course topics as they are covered.

Computer Organization (CSCI341), Software Engineering (CSCI306) and Intro to Linux (CSCI274).

Learning Goals

The objectives of this course are to introduce students to theory and tools behind language compilers. Upon successful completion of this course, the student will have practiced and improved their coding, code review, communication and collaboration skills; and be knowledgeable of:

  • The steps taken by most compilers to translate a program listing to either another language or target code for a machine.
  • The theory of lexical analysis, regular expressions, deterministic finite automata (DFAs), non-deterministic finite automata (NFAs), and how to use scanner generators (eg flex).

  • The fundamental principles of context free grammars as well as their associated attributes and properties.
  • Constructs for expressing operator precedence and associativity in context free grammars, as well as how language ambiguities are detected and worked around by modern compiler tools.
  • The theory and implementation of top-down and bottom up parsing, the generation of parse trees, and their translation to abstract syntax trees (ASTs).
  • The evaluation of program statements at the CPU op-code and register level.

ExecutiveSummary (last edited 2022-09-23 12:23:44 by khellman)