|
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 |
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.
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.
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.
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.
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.
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.
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.
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.
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.
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. last updated by Barbara Ryder at 6:00pm on January 18, 1999
Frameworks and Component Languages
Jim Rhyne
Speaker Bio
Design and Efficient Implementation of Virtual Machines
Steven Lucco
Speaker Bio
Programming Languages and Mobile Code Security
Edward Felten
Speaker Bio
Back
to Top