Wentworth Institute of Technology

Computer Science Department

Semester Year

 

Comp603 Compiler Design

 

Instructor:

Department Office:

Dr. Karina Assiter

Dobbs

Dobbs 3-303

 

617.989.4835

assiterk@wit.edu

 

 

 

 

Office Hours:

TBD

 

 

 

 

Please select the area of your interest:

 

 

Course Description

Required Text

Course Goals/Learning Objectives

Suggested Readings

Credit Hours

Assignments/Submitted Work/Late Work Projects

Meeting Times

Attendance Policy

Pre-requisite/Co-requisite

Grading and Student Evaluation System

Topics

 

 

 

 

 

Course Description

This course covers the principles and techniques used in the design of compilers. Compilers are the programs that translate code written in higher-level languages such as C++ into executable code. Topics include lexical and semantic analysis, parsing, translation, code generation and optimization.

 

 

Back to top

 

 

Course Goals and Learning Objectives

Students will be:

·         Competent in programming language design and implementation.

·         Aware of concepts of abstract language classification, context free grammars, symbol tables, code optimization and parsing techniques.

·         Understand language and parsing topics covered in pre-requisite courses, such as programming languages, Introduction to Algorithms and Discrete Mathematics.

·         Competent in large-scale software planning and design.

·         Competent in communicating and negotiating on a team-based project.

 

 

Back to top

 

 

Credit Hours

4

 

 

Back to top

 

 

Meeting Type and Duration

 

Class Type

Hours

Recitation

3

Lab

2

 

Back to top

 

 

Pre-requisite/Co-requisite

  • Comp433 -  Assembly Language
  • Comp310 - Object-Oriented Data Structures
  • Comp501 - Introduction to Programming Languages


Students must have successfully completed the prerequisite(s) in order to take this course.

 

 

Back to top

 

 

Required Text

 

 

 

Back to top

 

 

Suggested Readings

  • Algorithms for Compiler Design, O.G. Kakde, Laxmi Publications, 2003.
  • Engineering a Compiler, K.D. Copper & Linda Torczon, Elsevier 2004.
  • Programming Language Processors in Java, D.A. Watt & Deryck F. Brown, Pearson Education Limited, 2000.

 

 

Back to top

 

 

Attendance Policy

Regular attendance at every class is expected, and anyone who fails to meet this requirement may be requested to withdraw from Wentworth. In addition students with poor attendance may be withdrawn from the class with a grade of "WA". The attendance policies are more fully explained in the Wentworth Catalogue. You are responsible for all material given in class as well as in assigned readings.

 

Back to top

 

 

Assignments/Submitted Work/Late Work

The course will consist of designing a compiler (a large program) to translate programs written in a class-specified language to executable code. Therefore, assignments for the course will be the results of the completed phases of the project:

1.      Language specification

2.      Lexical Analyzer (depends on language specification)

3.      Syntactic Analyzer (depends on lexical analyzer)

4.      Semantic Analyzer. (depends on Syntactic analyzer)

5.      Code Generation  (depends on Semantic analyzer)

6.      Interpretation (depends on code generation)

Each phase of compiler design depends on the results of the previous phase so it is imperative that students submit assignments ON TIME.

 

Back to top

 

 

Grading and Student Evaluation System

  • Language Specification - 10%
  • Lexical Analyzer - 15%
  • Syntax Analyzer - 15%
  • Semantic Analyzer - 15%
  • Code generator – 15%
  • Interpreter – 10%
  • Exams (2) - 20%

 

Back to top

 

 

Topics

 

 

Week

Topics

Readings

1

Introduction

 

2

Language Specification

 

3

Syntactic Analysis

 

4

    Lexical Analysis

 

5

    Grammers

 

6

    Parsing

 

7

Semantic Analysis  (contextual Analysis)

 

8

    Code Structure

 

9

    Type checking

 

10

    Storage management

 

11

Code Generation

 

12

Interpretation    

 

13

Error Handling

 

14

Code Optimization

 

 

 

 

 

Back to top