The class meets three times a week, with two lectures and one section. Most classes will consists of lecturing, but we will also have discussions. Please attend all lectures, since the material is not based on any particular text.

Catalog Description

Introduction to Compiler Construction: Fundamentals of compilers and interpreters; symbol tables, lexical analysis, syntax analysis, semantic analysis, code generation, and optimization for general purpose programming languages. No credit to students who have taken 413. Credits: 4.

Here is a more specific list of potential topics that will be covered in this quarter's 401:

  • Interpreters
  • Closures and scoping
  • Control abstractions and their implementations
  • Parsing and syntax-directed translation
  • Compilation of regular expressions
  • Domain-specific languages
  • Data abstraction
  • Types and static analysis
As this class is evolving, the list of topics might change over the quarter.


The official prerequisites are CSE 332 (data abstractions) and CSE 351 (hardware/software interface). That also implies CSE 311, which is a prerequisite for CSE 332. Although not formally required, background from CSE 331 (software design & implementation) is useful for any large project, including the one in this course.

As this class will consist of team-based project assignments, it would be good to have prior background in working with teams (or are willing to learn the art of team work!).

Grading and Exams

  • Homework assignments: 20%
  • Programming assignments: 30%
  • Final project: 15%
  • Midterm exam: 15%
  • Final quiz: 15%
  • Class participation: 5% (participating in lectures, sections, discussion boards, etc)
Please note that these breakdowns are preliminary as this class is constantly evolving and we reserve the rights to change them.

Late Policy

We expect you to turn in all work on time, and will only grant exceptions to medical emergencies (doctor's note required), or legitimate academic reasons (e.g., presenting at a conference, family emergencies; note that job interviews are not legitimate excuses). Please contact the instructors to discuss your situation. Otherwise, we will take off 15% for each 24-hour period that your assignment is late, and will not grade your assignment if it is turned in after 72 hours (i.e., 3 days) when it was originally due.

Collaboration policy

You are encouraged to discuss the content of this course with anyone you like. Unless otherwise stated, each homework and programming assignment is to be done individually. The project is to be done in a group of up to three students. If two teams pick the same project, we expect each team to produce original work different from that of other teams. Feel free to look-up any information on the web that you may find useful in completing the assignments and project.

Computer use policy

Some excerpts from the campus policies. Take them seriously: "You must use all UW [computing] resources in strict accordance with local, state, and federal laws. These laws cover such areas as illegal access to computer systems, networks, and files; copyright violations; and harassment issues... Software and information resources provided through the university for use by faculty, staff, and students may be used on computing equipment only as specified in the various software licenses. Unauthorized use of software, images, or files is regarded as a serious matter and any such use is without the consent of the University of Washington...If abuse of computer software, images, or files occurs, those responsible for such abuse will be held legally accountable."

Academic integrity

Any attempt to misrepresent the work you submit will be dealt with via the appropriate University mechanisms, and your instructor will make every attempt to ensure the harshest allowable penalty. The guidelines for this course and more information about academic integrity are in a separate document. You are responsible for knowing the information in that document.