PLDI'99 Tutorial Program

May 1, 1999

1999 ACM SIGPLAN Conference on
Programming Language Design and Implementation

Sponsored by ACM SIGPLAN in cooperation with ACM SIGSOFT

Title
Instructor
Time
An Introduction to Design Patterns John Vlissides 8:30am-noon
The Trimaran Compiler Research Infrastructure Ben Goldberg
Krishna V. Palem
John C. Gyllenhaal
Vinod Kathail
8:30am-noon
1:30pm-5:00
Steven Lucco 1:30pm-3:30
Programming Languages and Mobile Code Security Edward Felten 4:00pm-6:00

 

An Introduction to Design Patterns
John Vlissides

Abstract

Designing object-oriented software is hard, and designing reusable object-oriented software is even harder. Experience shows that many object-oriented systems exhibit recurring structures or design patterns of communicating and collaborating objects that promote extensibility, flexibility, and reusability. This course describes a set of fundamental design patterns and, through a design scenario, demonstrates how to build reusable object-oriented software with them. The course covers the roles design patterns play in the object-oriented development process: how they provide a common vocabulary, reduce system complexity, and how they act as reusable architectural elements that contribute to an overall system architecture.

Speaker Bio

John Vlissides is a researcher at the IBM T.J. Watson Research Center in Hawthorne, NY. He has practiced object-oriented technology for over a decade as a designer, implementer, researcher, lecturer, and consultant. His research interests are in object-oriented design tools and techniques, application frameworks and builders, object-oriented visualization, and tools for user interface development. Before joining IBM Research, John was a graduate student and postdoctoral scholar in the Computer Systems Laboratory at Stanford University. There he co-developed InterViews, an influential set of libraries and tools for developing graphical applications. John's recent work has been on design patterns and visualizing the behavior of object-oriented programs. John has authored or co-authored several books, including Design Patterns: Elements of Reusable Object-Oriented Software, Pattern Hatching: Design Patterns Applied, and Object-Oriented Application Frameworks; and he is co-editor of Pattern Languages of Program Design 2. He is also Consulting Editor of Addison-Wesley's Software Patterns series. John has published numerous technical papers and is a columnist for the C++ Report.

 

The Trimaran Compiler Research Infrastructure
Ben Goldberg, Krishna V. Palem, John C. Gyllenhaal and Vinod Kathail

Abstract

Trimaran is a collaborative effort between the CAR group at Hewlett Packard Laboratories, the IMPACT project at the University of Illinois and the ReaCT-ILP project at New York University. The Trimaran web page is http://www.trimaran.org. The Trimaran System is an integrated compilation and performance monitoring infrastructure. The architecture space that Trimaran covers is characterized by HPL-PD, a parametrized processor architecture supporting novel features such as predication, control and data speculation and compiler controlled management of the memory hierarchy. Trimaran also consists of a full suite of analysis and optimization modules, as well as a graph-based intermediate language. New program optimizations and analysis modules can be easily added, deleted or bypassed, thus facilitating compiler optimization research. Similarly, computer architecture research can be conducted by varying the HPL-PD machine via the machine description language HMDES. Trimaran also provides a detailed simulation environment and a flexible performance monitoring environment that automatically tracks the machine as it is varied. This in-depth tutorial covers all aspects of using and modifying Trimaran, and will include demonstrable examples of the system in operation. This tutorial will be of particular interest to researchers investigating compiler optimizations for instruction level parallel architectures.

Speaker Bios

Benjamin Goldberg is an Associate Professor in the Computer Science Department of the Courant Institute of Mathematical Sciences, New York University. He received a B.A. in Mathematical Sciences from Williams College (1982), and an M.S.(1984) and Ph.D. (1988) in Computer Science from Yale University. Professor Goldberg's primary research interests lie in the development of languages and systems for parallel computing. To date he has concentrated on the use of sophisticated compilers and run-time mechanisms for efficient sequential and parallel execution of very high level programming languages. He has published a large number of papers in computer science journals and proceedings of refereed symposia, and has served on multiple program committees for compiler and programming languages conferences, including PLDI. He has also served as a Visiting Professor at the Institute National de Recherché en Informatique et en Automatique (INRIA) in Rocquencourt, France.

Krishna Palem leads the Real-time Compilation Technologies and Instruction Level Parallelism (ReaCT-ILP) laboratory. He has been on the Faculty of Computer Science in the Courant Institute of Mathematical Sciences, NYU, since September 1994. Prior to this, he was a research staff member at the IBM T. J. Watson Research Center, and an advanced technology consultant on compiler optimizations at the IBM Santa Teresa Laboratory working on parallel and optimizing compiler technologies. The ReaCT-ILP project is aimed at developing programming tools and compiler optimizations for rapid prototyping of embedded applications on hardware with instruction-level parallelism, as well as on reconfigurable targets. A significant portion of this work is aimed at programming support for embedded applications. In these areas, he has corporate awards for excellence from Hewlett-Packard, IBM and Panasonic. He has and continues to chair symposia, edit and guest edit journals and lecture internationally on the areas of his research interest. He will be a Schonbrunn Visiting Professor at the Hebrew University of Jerusalem during part of the 1998-99 academic year.

John C. Gyllenhaal is currently a Visiting Research Assistant Professor in the Center for Reliable and High-Performance Computing in the Coordinated Science Lab at the University of Illinois at Urbana-Champaign. He pursued his undergraduate studies at the University of Arizona in Tucson, Arizona, where he received his B.S. degree in Electrical Engineering in 1991. He continued his studies in Electrical Engineering at the University of Illinois at Urbana-Champaign. In the spring of 1992 he joined the Center for Reliable and High-Performance Computing as a member of the IMPACT project directed by Professor Wen-mei Hwu. He completed his M.S. degree in Electrical Engineering in 1994 and his Ph.D. degree in 1997. His research interests include instruction-level parallelism, optimizing compilers, binary reoptimization, machine description languages, high-speed Java execution, and performance evaluation tools for high-performance computer architectures.

Vinod Kathail is a Project Scientist in the Compiler and Architecture Research group at HP Laboratories. Since joining HP, he has been working on ILP architectures and compilers. He was a key contributor in the development of the Explicitly Parallel Instruction Computing (EPIC) that is the basis for IA64 and is the primary author of the HPL-PD architecture report. He leads HP Labs Trimaran effort. He has been the chief architect of the Elcor compiler, which constitutes most of the machine-dependent part of the Trimaran infra-structure, and has been managing its development since its inception. He holds 7 patents and has numerous research publications in the areas of VLIW architectures and compilers, dataflow architectures and functional languages. Vinod received his B.Tech degree from MACT, Bhopal, his M.Tech from IIT, Kanpur, and his Sc.D. in computer science from MIT, Cambridge. His research interests include EPIC architectures and compiler technology, automatic synthesis of application-specific processors for embedded computing, and programming languages and their implementations.

 

Frameworks and Component Languages
Jim Rhyne

Object-oriented (OO) languages revitalized the notion of software frameworks as a way of expressing stereotypical application structures. In framework based development, parts of the framework are used as is, while other parts are specialized by the developer to provide behavior that is not part of the framework or to override standard behavior that is part of the framework. Frameworks are not patterns, though they may be used to help implement patterns, along with delegation and other programming strategies. Frameworks became relatively common in User Interface programming. UI tools, such as visual builders, rely heavily on these frameworks when they generate code. More recently, frameworks have emerged which support the development of transacted OO applications on so-called "application servers". IBM's Component Broker has such a framework; another framework is defined by the Enterprise Java Bean specification. There are two significant challenges posed by framework based development: (1) defining and evolving the framework without destroying applications written to prior versions of the framework; (2) guiding the developer through the sequence of tasks required by the framework. The first of these challenges is largely unsolved and thought to be infeasible in its most general form. The tutorial will concentrate on ways to evolve frameworks in specific ways that minimize the impact on the applications. The second challenge has been met with particular solutions for both Component Broker and Enterprise Java Beans. The tutorial will show examples of tools that exemplify both solutions and discuss the development strategy embedded in the tools. It remains to be seen whether there are other particular solutions which guide and assist the developer who must work within the confines of a framework.

Speaker Bio

Jim Rhyne is one of the senior technical architects for IBM's Component Broker application server product. He is currently responsible for development tools for this product. Jim joined IBM in 1977 in the Research Division. In 1994, he left IBM Research to work on development tools in IBM's Software group. He holds a Ph.D from the University of Texas.

 

Design and Efficient Implementation of Virtual Machines
Steven Lucco

In February 1958, a paper describing the "Universal Computer-Oriented Language (UNCOL)" was published in Communications of the ACM. In modern parlance, this paper described a virtual machine, an intermediary between the statements and operators of high-level programming languages and the register numbers and opcodes of native machine programming languages. During the forty years since then, the programming language community has articulated many benefits to virtualized program execution, including whole program optimization, targeting of diverse processors, and insertion of meta-capabilities such as debugging, fault tolerance, and performance monitoring. However, only in the past decade have hardware and software advances enabled the development of practical runtime systems for virtual machine languages--systems that approach or even exceed the performance of programs compiled directly to the native machine. This tutorial will describe the history of virtual machines and their runtime systems, provide context for the current generation of systems, and illustrate the role of virtual machines as Internet infrastructure. The bulk of the tutorial will focus on design tradeoffs and implementation techniques for constructing efficient virtual machine systems. We will examine several research and industrial virtual machine systems and describe in detail the impact of their design on their capabilities and performance. Specific topics will include just-in-time compilation, program compression, and bytecode verification. This tutorial is aimed for those interested in mobile code, network computing, virtual machine design, virtual machine implementation and programming language runtime systems.

Speaker Bio

Steven Lucco has researched programming language runtime systems since 1985, with publications on the topic in PLDI, POPL, SOSP, OOPSLA, and ICDCS. In February 1994, he co-founded Colusa Software in Berkeley, California. In August 1995, Colusa shipped Omniware, a high-performance, language-independent virtual machine system. In February 1996, Colusa joined forces with Microsoft to develop virtual machine technology for the Internet and to incorporate that technology into the Windows operating system. Dr. Lucco received a B.S. in 1985 from Yale College, and a Ph.D. in 1994 from the University of California, Berkeley. From 1994-1996, he was an assistant professor of Computer Science at Carnegie Mellon University as well as chief technical officer at Colusa Software. Currently, he is a senior researcher at the Microsoft Bay Area Research Center.

 

Programming Languages and Mobile Code Security
Edward Felten

This tutorial will examine the role of programming language methods in computer security, especially for mobile code systems like Java and JavaScript. These systems use programming language methods, rather than the usual memory protection methods, to separate mutually untrusting software components from each other. In this tutorial, we will examine methods of enforcing separation between untrusting components, including load-time type checking, proof-carrying code, and value labeling. We will discuss the limits of these separation techniques for enforcing security, and survey some ways of augmenting the separation methods to build secure systems. Finally, we will explore how the use of programming language technologies for security enables new types of software to be practical.

Speaker Bio

Edward W. Felten is Assistant Professor of Computer Science, and Director of the Secure Internet Programming Laboratory, at Princeton University. His research interests include computer security, mobile code security, operating systems, and distributed computing. He has written several papers on mobile code security, especially relating to Java, and is co-author with Gary McGraw of the book Securing Java: Getting Down to Business with Mobile Code. He received his Ph.D. in Computer Science from the University of Washington in 1993.

 

Back to Top

 

last updated by Barbara Ryder at 6:00pm on January 18, 1999