CSSE 404: Compiler Construction
Rose-Hulman Institute of Technology
Computer Science and Software Engineering Department
Syllabus
Winter 2019/20
Course catalog description
Theory and practice of programming language translation. Lexical
analysis, syntax analysis, parser generators, abstract syntax, symbol
tables, semantic analysis, intermediate languages, code generation,
code optimization, run-time storage management, error
handling. Students will construct a complete compiler for a small
language.
Prerequisites
- CSSE 232: Computer Architecture I (This course gives you an idea of how
low-level languages and machines work.)
- CSSE 304: Programming Language Concepts (This course gives you
experience with language processors and with writing a syntax-driven
interpreter.)
- CSSE/MA474: Theory of Computation (This course introduces you to
FSMs, REs, CFGs, and PDAs which central to understanding compiler
front-end tools.)
Learning Outcomes
Students who successfully complete this course should be able to:
- Implement a compiler for a common subset of language features.
- Explain instruction selection.
- Explain register allocation.
- Explain common control flow.
- Explain type checking.
- Explain garbage collection.
- Explain procedures and calling conventions.
- Explain dynamic typing
- Explain high-level optimization (inlining, constant folding, copy
propagation, etc.)
- Explain raison d'etre of compilers and common high level
programming language constructs.
Instructor
Michael Wollowski
Textbook
- Required:
- Highly recommended: Compilers:
Principles, Techniques, and Tools 1st Edition by Aho, Sethi,
Ullman. This original "Dragon" book is a classic in the field. It is
a bit dated, but has the theory we want. This text is on reserve at
the Logan Library. In the schedule, we will refer to it as Dragon.
Grading
- Term project. A significant term programming project completed by
students working in pairs. Students implement a compiler for a
significant portion of Racket. A portion of the project will be driven
by individual teams.
- Take-home final.
- Project demonstration. A demonstration of the programming
project intended to demonstrate understanding of the implemented
compiler.
- In-class presentation. A short (approx. 15 minute) presentation about
some language extension or compiler optimization.
- Paper presentation. Pairs of students will study and lead the
discussion of key papers related to compilers.
- Paper review. All students are expected to review the papers and
participate in class discussions. We will review about five papers.
- Worksheets. In-class worksheets.
- Assignments. Assignments designed to learn aspects of the materials.
I plan to use the weighting scheme shown in the table below when
assigning grades.
Weight | Criterium
|
---|
55% | Project
|
10% | Take-home final
|
20% | Assignments/Worksheets
|
10% | Class presentations
|
5% | Class participation
|
Late Policy
Students who struggled in this class in the past largely did so
because they fell behind on the initial stages of the project. The
project is almost completely cummulative; failure to complete one
stage will prevent completion of subsequent stages. The late policy is
designed to encourage you to submit work on time, while still giving
credit for work completed somewhat late.
Your earned score on project milestones will be subject to the
following multipliers:
Time Handed In | Grade Multiplier
|
On time | 100%
|
< 24 hours late (1 day) | 90%
|
< 36 hours late (1.5 days) | 80%
|
< 48 hours late (2 days) | 70%
|
< 72 hours late (3 days) | 50%
|
< 96 hours late (4 days) | 25%
|
≥ 96 hours late (4 days) | 0%
|
Integrity
The
Institute policy on academic misconduct states that:
"Rose-Hulman expects its students to be responsible adults
and to behave at all times with honor and integrity."
Exam and homework will be done on an individual basis. The simple rule of thumb for individual work is:
Never give or use someone else's code or written answers,
unless it is a team assignment and the person is on your team.
Such exchanges are definitely cheating and not cooperation. The
departmental statement on academic honesty has more detailed
advice.
Plagiarism or cheating will result in a grade of an "F" in the
course and they will also be report to the Dean of Students.