Instructor: Suresh Jagannathan
Hours: Tuesday, Thursday
3
- 4:15 pm
SC
102
Registered students are expected to participate heavily in class
discussions. Each student must present a critical analysis of a paper
(or
set of related papers).
Participation:
25%
Scribe:
25%
Paper Presentation: 50%
Class participation is self-explanatory. For the seminar to
be successful, it is critical that all
students participate actively in discussions.
A scribe will be appointed at the beginning of each class. The role
of the scribe is to take copious
notes of the lecture, and to translate these notes into html format for distribution
on the course
web page. The scribe should feel free to talk to the lecturer about
the class, and to clarify points
not clearly stated during the class. The notes should be presented cogently
and cohesively, and should
be more than a simple rehash of the lecture.
Each student will be assigned a paper (or a set of related papers).
The student will be expected to
present a synopsis of the paper, along with supporting reference material
when warranted. For example,
a given paper may make assumptions presented in another paper. Students
should present this other paper a
s a supporting reference. While it is not expected that students will
need to do an in-depth study of all
related work, they should have a fairly deep grasp of the material, and be
able to satisfactorily answer
reasonable questions posed by the class. Most importantly, the presentation
should strive to be
an inquiry into the material, rather than a simple rehash of the paper's contents.
Students will be allowed to work in groups if they wish. The expectation
on the quality of the
presentation will be correspondingly higher.
Lecture 1: August 19,2002. Overview
Lecture 2: August 22,2002: Lambda calculus and the SECD machine
Reference: The Mechanical Evaluation of Expresssions
Peter Landin
Computer Journal, vol. 6, pp 308-320, 1964
The Next 700 Programming Languages
Peter Landin
Communications of the ACM, vol. 9, pp 157-166, 1966
Lecture 3: August 27,2002: Introduction to combinators
and the SKI machine
Reference: A New Implementation Technique for Applicative Languages
David Turner
Software Practice and Experience, vol. 9, pp 31-49, 1979
Lecture 4: August 29,2002: Minimal CPS algorithm and intro to Rabbit and Orbit
Lecture 5: September 3, 2002: Closure Passing and the Transformational Compiler
Lecture 6: September 5,2002: (cont)
Lecture 7: September 10,2002: Essence of Compiling with Continuations
Lecture 8: September 12,2002: (cont)
Lecture 9: September 17,2002: A systematic study of Functional Language Implementations
Lecture 10: September 19,2002: (cont)
Lecture 11: September 23,2002: Efficiently Computing SSA Form
Lecture 12: September 26,2002: Efficiently computing SSA form (cont)
Lecture 13: October 1,2002: Array SSA form and its use in Parallelization
Lecture 14: October 3,2002: A Simple Graph-based Intermediate Representation
Lecture 15: October 10,2002: A New Algorithm for Partial Redundancy Elimination based on SSA Form
Lecture 16: October 15,2002: Using Static Single Assignment for Flow-Insensitive Pointer Analysis
Lecture 17: October 17,2002: Equivalence between SSA and CPS
Lecture 18: October 22,2002: Storage Shape Graphs
Lecture 19: October 24,2002: Value Dependence Graph
Lecture 20: October 28,2002: Cps Transformation of Flow Functions
Lecture 21: November 12, 2002: TIL and TAL
Lecture 22: November 14 ,2002: TIL and TAL (cont)
Lecture 23: November 19, 2002: Type-Preserving Compilation of Featherweight Java
Lecture 24: November 21, 2002: (cont)
Lecture 25: November 26, 2002: Swift
Lecture 26: December 3, 2002: A Calculus for Compiling and Linking Classes
Lecture 27: December 5, 2002: Vortex: An Optimizing Compiler for Object-Oriented Languages