ACMPLDI'97 Tutorials

Sunday, 15 June 1997

There will be three half-day tutorials, two in the morning and one in the afternoon, organized into a "research-oriented" track (Track I) and a "teaching-oriented" track (Track II). Note that the afternoon tutorial is part of both tracks.

You may register for a half-day or a full-day of tutorials. In addition to the breaks, the morning tutorials include breakfast and the full-day tutorials include both breakfast and lunch.

Track ITrack II
Morning Efficient Implementation of Object-Oriented Languages
-- Craig Chambers
Teaching Object-Oriented Programming: Practical Examples Using C++ and Java
-- Owen L. Astrachan
Afternoon The Java Programming Language: Present and Future
-- Guy L. Steele Jr.
08:00 -- 08:30 Breakfast
08:30 -- 12:00 Morning tutorials (20 min break at 10:10)
13:30 -- 17:00 Afternoon tutorial (20 min break at 15:10)

Tutorial Program Chair

Linda Torczon (

Morning Tutorial (Track I)

Efficient Implementation of Object-Oriented Programming Languages

Craig Chambers


How are object-oriented languages implemented? What features of object-oriented languages are expensive? What optimizations have been developed to make object-oriented languages more efficient? In this tutorial I aim to answer these questions. I will begin by identifying the main features of object-oriented languages that are difficult to implement efficiently. The remainder of the tutorial will present three classes of implementation techniques. First, I will describe run-time system techniques such as virtual function dispatch tables (including complications due to multiple inheritance and virtual inheritance) and inline caches. Second, I will describe static analyses that seek to identify at compile-time the possible classes of message receivers, in order to reduce or eliminate the overhead of dynamic binding. Third, I will discuss ways in which dynamic execution profiles can be exploited to complement static analysis techniques. I will present empirical measurements of the effectiveness of many of these techniques, as implemented in the Vortex optimizing compiler, for large benchmarks written in C++, Java, Modula-3, and Cecil.

Who Should Attend

Those interested in understanding the state-of-the-art in implementing, analyzing, and optimizing object-oriented languages and those who want to understand the performance ramifications of the main features of object-oriented languages.

Speaker Bio

Craig Chambers has been researching object-oriented language design and implementation since 1987, with publications in PLDI, OOPSLA, ECOOP, PEPM, ISOTAS, and TOPLAS on the topic. He developed the first efficient implementation of the Self language, and he is the designer of the Cecil language and heads the Vortex optimizing compiler project. Chambers received his S.B. from MIT in 1986 and his Ph.D. from Stanford in 1992. He is currently an Assistant Professor of Computer Science and Engineering at the University of Washington.

Morning Tutorial (Track II)

Teaching Object-Oriented Programming: Practical Examples Using C++ and Java

Owen L. Astrachan


Object-oriented languages, concepts, and programming are being used at all levels in academic and industrial settings. Using object-oriented concepts requires more than a language, it requires a different way of thinking about and attacking programming and teaching and learning about programming. Both C++ and Java can be used at all levels, though each language has idiosyncrasies that affect how object-oriented programming and concepts are taught. We will examine how C++ and Java can be used in teaching about programming and object-oriented concepts. We will illustrate concepts including classes, encapsulation, inheritance, references, and patterns using examples that show the strengths (and weaknesses) of each language. Examples will show how an object-oriented approach can improve on the imperative approach traditionally taught using languages like Pascal and C.

Who should attend

Those interested in teaching and learning about object-oriented programming and how to use object-oriented languages and concepts in teaching programming. No experience with either C++ or Java is assumed, although a reading knowledge of C (or C++ or Java) will be helpful.

Speaker Bio

Owen L. Astrachan, A.B., 1978 Dartmouth College; M.A.T., 1979, M.S. 1989, Ph.D., 1992, Duke University, is Associate Professor of the Practice of Computer Science at Duke University and Director of Undergraduate Studies in the Computer Science Department. He is the author of A Computer Science Tapestry: Exploring Computer Science and Programming with C++ (McGraw-Hill) and Principal Investigator in two NSF educational projects: "The Applied Apprenticeship Approach: An Object-Oriented/Object-Based Framework for CS2" and "CURIOUS: Center for Undergraduate Education and Research: Integration through Performance and Visualization". In 1995 he received Duke's Robert B. Cox Distinguished Teaching in Science award.

Afternoon Tutorial (Track I & II)

The Java Programming Language: Present and Future

Guy L. Steele Jr.


Java is a small, simple, object-oriented programming language that is now widely used on the World Wide Web. Java allows a Web user to access programs: a mouse click in a Java-capable browser can retrieve a program to be executed on the local machine. Java manages to go a long way with a fairly small set of concepts: primitive values, objects, references, methods, classes, interfaces, class loaders, and a security manager. We will survey these concepts with an emphasis on the more unusual ones and how they all fit together.

Enough time has passed that various proposals have emerged for extensions to the Java language. These include nested classes, parameterized types, enumeration types, operator overloading, additional numeric types (such as intervals and complex numbers), and means for returning more than one value from a method. We will examine some of these and discuss (in fairly objective terms, we hope) their advantages and disadvantages.

Who should attend

Those interested in using the Java programming language and those interested in the problems of programming language design.

Speaker Bio

Guy L. Steele Jr., Distinguished Engineer, Sun Microsystems Laboratories. A.B., 1975, Harvard College; S.M., 1977, and Ph.D., 1980, M.I.T. Assistant professor, Carnegie-Mellon University, 1980--1984. Senior scientist, Thinking Machines Corporation, 1985--1994. ACM Grace Murray Hopper Award, 1988; AAAI Fellow, 1990; ACM Fellow, 1994. Co-designer (with Gerald Jay Sussman) of the Scheme dialect of Lisp. Member (at various times) of standards committees X3J13 (Common Lisp), X3J3 (Fortran), and X3J11 (C). Co-author (with Samuel Harbison) of C: A Reference Manual (Prentice Hall). Author of Common Lisp: The Language (Digital Press). Co-author of The High Performance Fortran Handbook (MIT Press). Co-author of The Java Language Specification (Addison-Wesley).
Return to PLDI'97 homepage.
PLDI'97 Tutorials / Young-il Choo / Last modified: Wed Apr 16 09:50 1997