CSIS 480 - Principles of Compiler Design
Course Description
-
An introduction to the design and implementation of programming
language translators. Theoretical aspects of language design and
translation are discussed and practically demonstrated by
developing a working compiler.
Note: although not technically required as prerequisites, it is
strongly recommended that students take CSIS 420 - Structures of Programming Languages and
especially CSIS 360 - Computer
Architecture & Assembly Programming the previous fall.
Instructor
- Dr. David M.
Hansen
Texts
-
- Required
-
- Parsons, Thomas W. 1992.
Introduction to Compiler Construction.
New York, New York: W.H. Freeman and Company,
ISBN 0-7167-8261-8.
- Recommended
-
- Aho, A.V., and Ullman, J.D. 1995.
Foundations of Computer Science C Edition.
New York, New York: W.H. Freeman and Company,
ISBN 0-7167-8284-7.
Objectives
-
- Students will understand the phases of the compilation
process and be able to describe the purpose and implementation
approach of each phase.
- Give students practical exposure to aspects of theoretical
computer science including Languages, Grammars, and Machines.
- Exercise and reinforce prior programming knowledge with
a non-trivial programming project to construct a compiler.
Lexical analysis, parsing, and intermediate code-generation
will be completed.
Course Organization
- This course will emphasize both theory and practice,
challenging both your intellectual and programming
skills.
The course involves a significant
programming project -
implementing a compiler for a simple programming language.
The project will build the compiler as a series of phases
and you must keep pace with the project in order to be
successful in this course. The project draws heavily on
much of what you have learned thus far and will stretch
your programming skills. You are free to choose the language
you will use for the programming project. We will be generating
code for the
Java virtual machine.
The course will include regular homework and programming
assignments (please see my comments on collaboration and
programming). There will be
NO CREDIT given for late assignments (without
an excused absence) - turn in as much as you can.
Reading assignments should be completed
before the lecture covering the material.
Not all reading material will be covered in the lectures,
but you will be responsible for the material on homework
and exams.
Quizes over the assigned reading
may be given at any time.
If you have specific physical, psychiatric, or learning disabilities and
require accommodations, please contact the Disability Services Office as
early as possible so that your learning needs may be appropriately met.
You will need to provide current documentation of your disability to the
Disability Services Office. For more information, go to
ds.georgefox.edu
or contact Rick Muthiah, Dean
of the Center for Teaching and Learning (ext. 2314)
Grading
- Grading Scale
The final grade will be based on:
Tentative Schedule
-
| Lectures |
Topic |
Reading |
Project |
| 3 |
Introduction |
CC 1 |
|
| 1 |
Lexical Analysis |
CC 2.1 |
|
| 1 |
Symbol Tables |
CC 8.1 |
|
| 3 |
Regular Expressions |
CC 2.6 & 3.1.6, FoCS 10.5 |
Symbol Table |
| 7 |
Finite State Automata |
CC 2.3-2.5, 2.7-2.10, FoCS 10 |
|
| 4 |
Grammars |
CC 3.1, FoCS 11.1-11.3 | Lexical Analyzer |
| 1 | Midterm Exam |
|
|
| 6 |
Top-Down Parsing |
CC 3.2-3.5, FoCS 11.4-11.9 |
|
| 6 |
Intermediate Representation |
CC 5 |
Parser |
| 3 |
Optimization |
CC 6 |
|
| 3 |
Code Generation |
CC 7 |
|
| 4 |
Bottom-Up Parsing |
CC 4 (skim 4.3) |
Code Generator |