CSE 423: Compiler Writing

Professor: Clinton Jeffery Lecture Meets: TR 12:30-1:45pm in Cramer 239 and on zoom
Lab Meets: W 2:00-2:50pm in Cramer 239 and on zoom
Office: Cramer 230 Office Hours: W 1:00-2:00, and by appointment. Some office hours may be superceded by department obligations; it is prudent to confirm availability in advance by e-mail.
Phone: 208-310-6773 Web: http://www.cs.nmt.edu/~jeffery/courses/423/
E-mail:clinton.jeffery@nmt.edu   Required Text: Thain, Introduction Compilers and Language Design, 2nd edition.
Prerequisites:   CSE 324, 326, 342, 344 Recommended Text: Jeffery, Build Your Own Programming Language, 2nd edition, Packt
Corequisite: CSE 331 Recommended Text: Levine, Flex+Bison, O Reilly

Course Description and Goals

From the Catalog: Implementation of compilers for higher level computer languages including: parsing, symbol table management, code emission, and code optimization. Each student implements a small compiler and designs an optimizing compiler as a substantial portion of the course grade. Individual and group projects. Practice in developing software requirement, specification, design, and test plan documents.

Goals include: learn how to write and connect a scanner, parser, semantic analyzer and code generator into a simple working compiler. Learn notations and tools used by developers of compilers. Understand symbol tables and type checking. Know primary challenges associated with code generation.

Attendance and Grading

Attendance is required. I may or may not take attendance each session. The grading will be proportioned as follows: 50% for homeworks/quizzes, 25% for the midterm exam, 25% for the final exam. Expect course content to be added on-line as we go. Check the course web page for updates at least once a week.

Exams, Homeworks, and Quizzes

We will have exams and homeworks. Read the assigned text chapters. Exams test your mastery of concepts; homeworks allow you to demonstrate that you can put ideas into practice.

Student Outcomes

This course develops student proficiency and assesses student outcomes in areas such as the following:

Policy Statements

Cheating in all forms is strictly forbidden, with severe penalties. For homeworks you are required to work alone unless the assignment states explicitly otherwise. You are encouraged to seek assistance from your instructor on-line or in person. You may discuss assignments with classmates, but Do Not Share Code, except where requested/required for completion of group/team assignments.