- Marc Snir: Computer Architectures and Programming Models for Scalable Parallel Computing. 1

- Dror E. Maydan, Saman P. Amarasinghe, Monica S. Lam: Array Data-Flow Analysis and its Use in Array Privatization. 2-15
- Siddhartha Chatterjee, John R. Gilbert, Robert Schreiber, Shang-Hua Teng: Automatic Array Alignment in Data-Parallel Programs. 16-28
- Qi Ning, Guang R. Gao: A Novel Framework of Register Allocation for Software Pipelining. 29-42

- Martin Odersky, Dan Rabin, Paul Hudak: Call by Name, Assignment, and the Lambda Calculus. 43-56
- Stephen Weeks, Matthias Felleisen: On the Orthogonality of Assignments and Procedures in Algol. 57-70
- Simon L. Peyton Jones, Philip Wadler: Imperative Functional Programming. 71-84

- G. Berry, S. Ramesh, R. K. Shyamasundar: Communicating Reactive Processes. 85-98
- Atsushi Ohori, Kazuhiko Kato: Semantics for Communication Primitives in an Polymorphic Language. 99-112
- Damien Doligez, Xavier Leroy: A Concurrent, Generational Garbage Collector for a Multithreaded Implementation of ML. 113-123

- Julia L. Lawall, Olivier Danvy: Separating Stages in the Continuation-Passing Style Transformation. 124-136
- Mitchell Wand: Specifying the Correctness of Binding-Time Analysis. 137-143
- John Launchbury: A Natural Semantics for Lazy Evaluation. 144-154

- John C. Reynolds: An Introduction to Logical Relations and Parametric Polymorphism - Tutorial. 155-156

- Martín Abadi, Luca Cardelli, Pierre-Louis Curien: Formal Parametric Polymorphism. 157-170
- Peter W. O'Hearn, Robert D. Tennent: Relational Parametricity and Local Variables. 171-184
- Jon G. Riecke, Ramesh Subrahmanyam: Algebraic Reasoning and Completeness in Typed Languages. 185-195

- Nils Klarlund, Michael I. Schwartzbach: Graph Types. 196-205
- Robert Harper, Mark Lillibridge: Explicit Polymorphism and CPS Conversion. 206-219
- Xavier Leroy: Polymorphism by Name for References and Continuations. 220-231

- Jong-Deok Choi, Michael G. Burke, Paul R. Carini: Efficient Flow-Sensitive Interprocedural Computation of Pointer-Induced Aliases and Side Effects. 232-245
- Kwangkeun Yi, Williams Ludwell Harrison III: Automatic Generation and Management of Interprocedural Program Analyses. 246-259
- Harini Srinivasan, James Hook, Michael Wolfe: Static Single Assignment for Explicitely Parallel Programs. 260-272
- Arun Lakhotia: Constructing Call Multigraphs Using Dependence Graphs. 273-284

- Kim B. Bruce: Safe Type Checking in a Statically-Typed Object-Oriented Programming Language. 285-298
- Benjamin C. Pierce, David N. Turner: Object-Oriented Programming without Recursive Types. 299-312
- Harry G. Mairson: A Constructive Logic of Multiple Subtyping. 313-324
- Daniel Leivant: Stratified Functional Programs and Computational Complexity. 325-333

- Kim Marriott, Peter J. Stuckey: The 3 R's of Optimizing Constraint Logic Programs: Refinement, Removal and Reordering. 334-344
- Eric Villemonte de la Clergerie: Layer Sharing: An Improved Structure-Sharing Framework. 345-358
- Annalisa Bossi, Michele Bugliesi: Differential Logic Programming. 359-370

- Ali-Reza Adl-Tabatabai, Thomas R. Gross: Evicted Variables and the Interaction of Global Register Allocation and Symbolic Debugging. 371-383
- Samual Bates, Susan Horwitz: Incremental Program Testing Using Program Dependence Graphs. 384-396
- Dhananjay M. Dhamdhere, Uday P. Khedker: Complexity of Bidirectional Data Flow Analysis. 397-408

- Tobias Nipkow, Christian Prehofer: Type Checking Type Classes. 409-418
- Dexter Kozen, Jens Palsberg, Michael I. Schwartzbach: Efficient Recursive Subtyping. 419-428
- Simon J. Gay: A Sort Inference Algorithm for the Polyadic Pi-Calculus. 429-438

- Zhong Shao, Andrew W. Appel: Smartest Recompilation. 439-450
- Michael Codish, Saumya K. Debray, Roberto Giacobazzi: Compositional Analysis of Modular Logic Programs. 451-464
- Maria Virginia Aponte: Extending Record Typing to Type Parametric Modules with Sharing. 465-478
- Shinn-Der Lee, Daniel P. Friedman: Quasi-Static Scoping: Sharing Variable Bindings Across Multiple Lexical Scopes. 479-492

- Charles Consel, Olivier Danvy:
Tutorial Notes on Partial Evaluation.
493-501
The last years have witnessed a flurry of new results in the area of partial evaluation. These results include: (1) a better understanding of the underlying mathematical principles, (2) better strategies for implementing partial evaluation systems, and (3) new extensions that widen the range of applications and thus should broaden the community of users. This tutorial surveys the field, presents a critical assessment of the state of the art, and explores promising directions where partial evaluation can be used. Concrete examples are given, using our binding-time based partial evaluator for Scheme programs, Schism.

- G. Ramalingam, Thomas W. Reps:
A Categorized Bibliography on Incremental Computation.
502-510
In many kinds of interactive systems (e.g., systems for computer-aided design, language-sensitive editors, word processors, spreadsheets, ...) as well as in other contexts, modifications of the input data are to be processed immediately so as to have immediate effect on the output. Because small changes in the input to a computation often cause only small changes in the output, the challenge is to compute the new output

*incrementally*by updating parts of the old output, rather than by recomputing the entire output from scratch - in other words, to make use of the solution to one problem instance to find the solution to a ``nearby'' problem instance. Incremental computation techniques may also be used in ``non-interactive'' contexts, such as optimizing compilers. This tutorial will survey the body of work that exists on this subject.