511 Multi-stage Programming (MWF 10:00AM - 10:50AM, 4 Credits) Instructor: Walid Taha As the commercial production of software systems moves toward being a traditional industry, automation will necessarily play a more substantial role in this industry, just as it plays a key role in the production of traditional commodities such as garments, automobiles, chemicals, and electronics. Today, there is wide interest (both in industry and in academia) in automated software generation. This course introduces multi-stage programming, an enabling technology for effective yet highly reliable program generation systems. In addition to providing the usual constructs of a general-purpose language, multi-stage languages internalize the notions of runtime program generation and execution. This provides the programmer with the essence of state of the art program generation methods, such as partial evaluation and program specialization, both of which have been shown to lead to dramatic resource-utilization gains in many applications. Such applications range from implementations of domain-specific (or "little") languages to high-performance operating systems. Multi-stage languages make it possible to write generic and highly-parameterized programs that do not pay unnecessary runtime overheads. The course will include an overview of the applications of these languages, their theoretical foundations, and implementation issues. We will begin with a survey of various examples of successful automatic program generation techniques, and then move to a more in-depth treatment of multi-stage languages. The main implementation of a multi-stage language that we will use will be MetaOCaml, but students are also encouraged to explore other systems, such as 'C and Tempo. Course work will involve weekly assignments, a term project, a midterm, and a final exam. Additional information: A preliminary version of the course web-page can be found at: http://www.cs.rice.edu/~taha/teaching/02F/511/ Undergraduate and graduate students interested in research projects on this topic are particularly encouraged to audit this course.