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
Current Weekly Schedule

Texts

Required
  • Parsons, Thomas W. 1992. Introduction to Compiler Construction. New York, New York: W.H. Freeman and Company, ISBN 0-7167-8261-8.
    Note: this texbook is best found online, used.
Recommended (not available from bookstore - but also online)

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). Assignments are due before 11:59pm on the due date; 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.

The Vision Statement of the Computer Science and Information Systems majors states that our students are distinctive by: "Bringing a Christ-centered worldview to our increasingly technological world." As one step towards the fulfillment of this objective, each semester, we will identify an influential Christian writing to be read and reflected upon by students in our classes throughout the term. This will be treated as an official component of every course and will be uniquely integrated and assessed at our discretion, generally as a component of the quiz grade. See the semester's reading schedule. In addition, regular meetings will be scheduled throughout the semester that can be attended for Chapel credit.

It is my hope that students will not view this as one more task to complete, but as a catalyst for continued discussion ultimately leading to a deeper walk with Christ.

The chief end of man is to glorify God, and enjoy Him forever.
(Westminster Confession)

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
This page was last updated .
For questions or comments about this page, please email the webmaster.