This course will study program representation, analysis, and transformation. Many program-manipulating and -processing tools are based on some or all of these key techniques, including compilers, static analysis and bug-detection tools, optimizers for various query and related languages, partial evaluators, program specializers, and other software engineering tools. This course will study the key principles of these techniques, and it will apply these principles in practice through the course project.
None required, but here are some suggestions:
To post to the mailing list, send email to cse501@cs.washington.edu.
To browse the threaded archives, go to http://mailman.cs.washington.edu/mailman/private/cse501/2006q1/thread.html. Note: in order to access the archives, you need your list password, which is not the same as your CSE password. In order to get your password, you need to go to the bottom of the listinfo page, and use the "unsubscribe or edit options" form. On the resulting page, there's a button for sending you a password reminder.
The Whirlwind compiler, the project infrastructure, is written in Diesel. Diesel is a locally developed, purely object-oriented language. It is closely related to Cecil, an earlier locally developed, purely OO language.