Spring 2013Class
Place: EE 003 Time: MW 2:30-3:50 pm Mailing list: cse501a_sp13@uw.edu Discussion board: https://catalysttools.washington.edu/gopost/board/vsmenon/32536/
Instructors
Vijay Menon (vsm at cs dot washington dot edu) Preston Briggs (preston dot briggs at gmail dot com) Office: Seig 127D Office Hours: by appointment
Teaching Assistant
Enquire within. CSE 501 is a graduate-level course on the implementation of programming languages. We will focus on optimizing compilers and runtime systems and cover a broad range of topics including program representation, data-flow analysis, classical optimizations, code motion, register allocation, profile-guided optimization, garbage collection, memory models, software transactional memory, dynamic language runtimes. Please see the syllabus for a more precise list.
Our overall objective is to present these topics from a researcher's perspective and to prepare students for research in this area. There are no required texts for this class. We will instead work from original research papers. Please see the syllabus for the required reading for each lecture.
For those interested in supplemental material, we suggest:
- Keith Cooper & Linda Torczon, Engineering a Compiler, Morgan Kaufmann.
- Steven Muchnick, Advanced Compiler Design Implementation, Morgan Kaufmann.
- Aho, Lam, Sethi, & Ullman, Compilers: Principles, Techniques and Tools, 2/E Addison-Wesley.
- Randy Allen & Ken Kennedy, Optimizing Compilers for Modern Architectures, Morgan Kaufmann.
- Michael Wolfe, High Performance Compilers for Parallel Computing, Addison-Wesley.
- Hank Warren, Hacker's Delight, Addison-Wesley.
- David Padua, et al., Encyclopedia of Parallel Computing, Springer.
Course work for this class will be a combination of questions (and participation) from the required reading and programming assignments. Grades will computed as follows:
- 20% : reading questions
- 80% : programming assignments
Reading Questions For each lecture, we give a few supporting papers. The lectures will assume that students have read the papers before class. In order to reinforce that and in order to make the lectures more effective in deepening your understanding of the material, we have institute a "reading questions" requirement. For each lecture, answer the following question to the discussion board:
What in the reading was most confusing? If you can, articulate a question about it. If nothing was confusing, what further questions does this reading raise for you?
Ideally, the questions will elicit some discussion. Good discussion will do good things for your grade. We'll make some time during each lecture to address the questions. Questions should be posted by midnight the night before the lecture.
There will be three programming assignments over the course of the quarter. Students may work individually or in groups of two (advice from former students is to choose a partner who agrees with you in terms of programming language). There will be five slip days over the course of the quarter. Slip days are counted in 24-hour increments and are assessed to both partners.
We will be using the Start compiler and runtime for programming assignments. Each programming assignment will take Start Intermediate Form as input and may be implemented in your choice of language. We would like to thank Martin Burtscher, Kathleen Fisher, Kathryn McKinley, and Keshav Pingali for graciously allowing us to adapt their course materials to create this course.
|
|