Compilers and their construction are a core discipline in computer science, melding an exciting theory of language recognition and computability with a compelling practical application. Although the term compiler is most often applied to a computer program that converts a high-level programming language into machine instructions for a target platform, the term more generally denotes the transformation of one language (or its representation) into another.
This course aims to give you a solid foundation in the theory of compiler construction as well as the experience of building a compiler. Much of what you have learned about algorithms and data structures will come to bear as you study and implement the various components of a compiler. In a sense, compiler construction is a showcase for many other disciplines of computer science.
McMillan G052, 4-5:30 PM, Monday and Wednesday
I do not take attendance, but you are responsible for all material presented in class, and I do not generally follow a script or textbook.
|Instructor:||Ron Cytron (firstname.lastname@example.org)|
|Office Hours|| Monday and Wednesday, 3-4
walk-in, or by appointment
|Assistant:||Tyler Reeves (email@example.com)|
|Textbook, available in the campus bookstore:||Fischer, Cytron, and LeBlanc, Crafting a Compiler, 2010|
|Alternate textbook||Aho, Lam, Sethi, Ullman: Compilers: principles, techniques, and tools, Second Edition, Addison-Wesley, 2007 (affectionately called "The Dragon Book")|
|The library will have on reserve a copy of the notes from which I lecture (400 pages).||Other material may be distributed as needed.|
|Supplementary notes (164 pages) are available online.||Cytron: Compiler Construction PLDI Tutorial Notes, 1994.|
I will loan these out overnight until a week before an exam, when they will be placed in the library for two-hour checkout.
Information on programming tools, including JFlex and JavaCUP will be available online.
Any assignment turned in for this couse is subject to the
statement of academic integrity.
Collaboration details for this course can be found here. Honor and integrity rank prominently among the essential attributes of a scholar.
On the date that an assignment is due, said assignment must be submitted by the beginning of class.
15-minute service guarantee: Should you run into trouble while working on a machine problem, I offer you the following guarantee. Within 15 minutes of my receiving a complete description of your problem committed and pushed in your repository, by e-mail, or in person, I promise to have your problem solved, or you get a small (but nourishing) package of M&Ms.
Lateness policy: Assignments are due as advertised; late work is not accepted.
|Exam 1||20%||There will be two in-class exams. Although books and notes may be used, all work turned in must be done in-class. Extra-credit earned on the final project may be applied to any exam grade.|
|Machine Problems:||45%||Six machine problems will be assigned. Four of these contribute directly to the final project.|
Our project involves the translation of a Java-like language into
a high-level interpretable language. This project emphasizes
syntactic and semantic analysis, symbol table management,
and straightforward code generation.
The final project is graded on code quality, correctness of translation, and documentation. Your code is expected to be reasonably written, documented, and tested, in a manner that brings honor to CSE431.
|Course Participation:||5%||If we do the studio style meetings this semester, then this part of your grade will be determined from your consistent participation in studio. Otherwise, it will be based on participation in class.|
|Stock solutions for the four machine problems contributing to the final project will be made available. Students who do not earn a "B" or better on the relevant machine problems are expected to make up this deficiency by extra credit on the final project.|
Last modified 08:48:02 CST 18 January 2017 by Ron K. Cytron