CS 541 - Compiler Design

Bulletin Description

Intermediate aspects of a compilation process with an emphasis on front-end issues. Practical issues in using compiler writing tools. Code generation for expressions, control statements and procedures (including parameter passing). Symbol tables, runtime organization for simple and structured variables. Using compilers and translators for automation (filters, programs writing programs).

Prerequisites

CS 441 or consent of instructor.

Expected Preparation

Students should be adept in programming in a modern programming language and have knowledge of machine organization.

Student Learning Outcomes

Successful students will learn:

  1. How to specify lexical and syntactical structure of languages.
  2. How to use regular patterns.
  3. How to use parsing techniques.
  4. How to design and implement translators.
  5. How to use tools to generate lexical analyzers and parsers.
  6.  How to organize runtime storage for static and dynamic objects.
  7. How to generate intermediate code for basic language constructs.
  8. How to use parsing and translation techniques for automation of computing tasks.

Measures

Direct Measures:

Students are evaluated on their work that includes programming project, homework assignment and exams. Students receive back all of their work with comments to indicate problems and point out correct or better solutions. Sample solutions and typical errors are discussed in class.

Indirect Measures:

These eight specific tasks will be used to measure students as applied to a three part project that creates a comprehensive compiler (lexer, parser, and code generation), homework assignments, and exams and/or a final examination. All the topics combined with a substantial programming project and other assignments will provide the student with the formative feedback about the development of their skills and knowledge.

Syllabus Information

Possible Textbook:

Compilers: Theory and Practice,
Aho, Sethi, Ullman,
Addison-Wesley, 1990