CSE 231: Advanced Compilers

Course Syllabus


In this course, we will explore the basic techniques that are the cornerstone of a variety of program analysis tools, including optimizing compilers, just-in-time compilers, program verifiers, bug fingers, code refactoring tools, garbage collectors, and runtime monitoring systems. These techniques may come in handy, no matter what field of CS you end up working in.

At the same time, you will get a feeling for what research is like in the area of program analysis and compilers by reading research papers, and getting your feet wet in a small research project. If you haven't picked an area of research to work in, being exposed to some research will help you make a better decision. If you have already picked an area of research to work in, seeing what research is like in other fields of CS will broaden your perspective.


Your grade will be determined as follows:


The course project will allow you to get a feel for what research is like. For the project, you will explore some research question related to program analysis/optimization, either by reading papers and writing a report (done individually) or by exploring a research topic as a project (done in groups). In exceptional cases, you may work by yourself for a project, but you have to talk to me about it beforehand. A project/reading proposal will be due a few weeks into the class, and there will be several milestones along the way, to make sure that you are making good progress. A presentation or report will be due at the end of the quarter. You will also have to checkin with the instructor and/or TA at several points throughout the quarter. If there is any way of incorporating your current research into the course project, I encourage you to do so.

Course Topics