carolyn@uunet.UU.NET (Carolyn Carr) (04/19/91)
***ATTENTION: We encourage walk-in attendance! On-site registration to the C++ Tutorial Program and Technical Sessions will be held at the Conference Registration Desk on: Sunday, April 21, 4:00pm - 9pm Monday, April 22, 7:30am - 6pm Tuesday, April 23, 7:30am - 6pm Wednesday, April 24, 7:30am - 5pm This conference will be held at: Sheraton Washington Hotel 2660 Woodley Road at Connecticut Avenue, NW Washington, D.C. 20008 (202)328-2000 For registration and additional information please contact: USENIX Conference Office 22672 Lambert Blvd., Suite 613 El Toro, CA 92630 Phone: 714/588-8649 FAX: 714/588-9706 ******************************************************************** C++ TUTORIAL PROGRAM Monday - Tuesday, April 22-23, 1991 Washington, D.C. **************************************************************** Tutorial Code: M1 Title: An Introduction to C++ (for C Programmers) Instructor: Robert Murray, AT&T Bell Laboratories; Editor, The C++ Report Intended audience: Program designers and developers with a good knowledge of C. Knowledge of C++, data abstraction, or object-oriented programming is not required. Course Description: A survey of the main features of C++ (including version 2.1) will be presented, along with some short examples that show how to use the features effectively. Most use of C++ falls into one of three flavors: - a better C, - data abstraction, - and object-oriented programming. We will examine these flavors, starting with the features and paradigms that are closest to C, and progressing to the more ambitious (and potentially more powerful) features. The tutorial does not attempt to exhaustively cover every single feature of the language. Instead, it will concentrate on small examples that demonstrate the most important concepts, including the design of a simple (but useful) String class. A firm understanding of these concepts will give students what they need to begin developing real C++ programs. We will also discuss the relationship between C++ 1.2, C++ 2.1, and ANSI C. About the author: Rob Murray is a Supervisor in the Software Systems Department, AT&T Bell Laboratories. His job responsibilities include giving presentations on C++ to research and development organizations across Bell Labs, investigating advanced C++ compilation techniques, and developing reusable C++ components and tools. He has presented C++ tutorials at USENIX conferences since 1987. Tutorial Code: M2 Title: C++ Programming Style Instructor: Tom Cargill, Consultant Intended Audience: The tutorial will be of value to programmers who are starting to program in C++, or have a reading knowledge, and are looking for guidance on how to use its features in practice. Knowledge of C++ language basics is assumed. If need be, advanced language features are clarified briefly. The material is code intensive, for programmers who like to read and understand programs. Course Description: C++ supports programming-in-the-large, allowing relationships between different parts of a program to be described. The scope of C++ programming style therefore goes beyond the issues of traditional programming-in-the-small, such as indentation and the use of goto. This tutorial examines the use of language features that often confuse a novice, including (multiple) inheritance, virtual functions, constructors, destructors, function and operator overloading, default arguments and static members. Unwarranted use of the more powerful features leads to cluttered programs that are harder to comprehend, and in some cases less efficient, than more straightforward alternatives. In this tutorial we examine, and then simplify, a number of programs. The techniques range from simple rules of thumb about constructors to transformations that remove redundant inheritance. We read programs, discuss their organization and use of C++, critique the design, redesign where necessary, and then recode. The discussion ranges from questions of data abstraction and object-oriented design to the expression of a given design in C++. Design and coding style guidelines are distilled from the examples. About the author: Tom Cargill started programming in C++ when the language was called "C84," at the Computing Science Research Center, AT&T Bell Labs, Murray Hill, NJ. He wrote one of the first major C++ programs, a family of portable, distributed debuggers. He has continued to use C++, presenting his experience in papers and tutorials at numerous technical conferences. Teaching C++ courses regularly, Tom is the author of Addison-Wesley's TEC C++ course. Currently a software consultant, based Colorado, he he holds a Ph.D from the University of Waterloo. Tutorial Code: T1 Title: Library Design and Management in C++ Instructor: Dr. James M. Coggins, Computer Science Department University of North Carolina at Chapel Hill Intended Audience: C++ programmers who are ready to begin developing class libraries for their own use, especially for scientific and engineering applications. Course Description: C++ provides several desirable code packaging mechanisms. We still require decision criteria for designing the architecture of class libraries (i.e., "What are the Objects?") along with management strategies for accessing and maintaining the libraries. This tutorial presents a decision criterion for identifying appropriate class definitions based on a particular "separation of concerns" objective. One consequence of this design criterion is that the library's clients can contribute early and effectively to the design process. A strategy for managing the library's resources will be presented. This strategy, in use in academia and industry, is based on commonly available UNIX utilities such as make and RCS. The strategy minimizes the overhead required in client programs to engage the library's capabilities and to simplify library maintenance. The afternoon session will begin by explaining what C++ offers to scientific and engineering programming, stating the case for considering a switch from FORTRAN to C++ and offering alternatives for managing that conversion for individual programmers and for whole shops. Libraries for scientific and engineering applications often depend on a few crucial insights about the nature of their target domains. Examples of such key insights will be offered from the fields of dynamic simulation, medical image processing and analysis, parallel computing, telecommunications, scientific data visualization, fluid dynamics, and computer graphics, including user interfaces. About the author: Dr. Coggins teaches Software Engineering, Image Processing and Pattern Recognition, and Computer Vision and Graphics at UNC-Chapel Hill. Dr. Coggins is a columnist for the international newsletter, the C++ Report, and was a member of the program committee for the 1990 USENIX C++ Technical Conference. Besides frequent presentations on C++ and library design in industry and academia, he has published articles on library design and management strategies in the 1990 USENIX conference, the C++ Report, and the C++ Journal and SIGPLAN Notices. Tutorial Code: T2 Title: Using C++ Effectively Instructor: Andrew Koenig, AT&T Bell Laboratories Intended audience: The speaker intends to be comprehensible to people who have previously taken Rob Murrary's "Introduction to C++," and who are also experienced programmers in some other language (not necessarily C). People who have programmed in C++ for some time also benefit fromt the tutorial. They certainly will see things they have seen before, but often these are shown in a new light. Course description: The tutorial emphasizes "how to use C++" well," rather than "what are the features of C++." Based on a detailed look at several programming examples, we discuss strategy and techniques in writing C++ programs. Topics include: - writing classes whose objects behave as values - controlling memory allocation through use counts - writing object-oriented programs - function objects and related techniques - C++ traps and pitfalls About the author: Andrew Koenig is a member of the Software Systems Department of AT&T Bell Laboratories, where most recently he participated in making AT&T's C++ 2.0 product ready for release. He has written several C++ library packages now in use inside AT&T, contributes a regular C++ column for the Journal of Object-Oriented Programming, and is author of C Traps and Pitfalls. Tutorial Code: T3 Title: Decomposition/Generalization Methodology for C++ Programs Instructor: Vaclav Rajlich, professor, Department of Computer Science, Wayne State University Intended audience: The tutorial will be of value to programmers, system analysts, and managers who have at least a reading knowledge of C++, and are looking for guidance how to use its features. Advanced language features are clarified briefly. Course description: This tutorial introduces a methodology, called Decomposition/Generalization, for top-down development of object oriented systems. The methodology is a variant of stepwise refinement extended to object oriented systems and the C++ language. The course utilizes several examples to illustrate the methodology. The Decomposition/Generalization methodology alleviates the difficulty of "finding the right objects". It is compared to several other object oriented methodologies, in particular Coad/Yourdon, Booch, and Object Oriented Structured Design. About the author: Vaclav Rajlich has published numerous papers in software methodologies and tools. He has been particularly interested in methodologies for object-based languages (Ada) and object oriented languages (C++). He is a professor and former chairman of the Department of Computer Science at Wayne State University. Before that he was with the University of Michigan in Ann Arbor. _____________________________________________________________________ For registration and additional information please contact: Judy DesHarnais USENIX Conference Office 22672 Lambert Blvd., Suite 613 El Toro, CA 92630 Phone: 714/588-8649 FAX: 714/588-9706 ********************************************************************** C++ TECHNICAL PROGRAM Wednesday and Thursday, April 24 -25, 1991 Washington, D.C. ********************************************************************* Wednesday, April 24 8:45am Keynote Address C++ + Persistence != An Object-Oriented DBMS David DeWitt (University of Wisconsin) Abstract Currently, a number of companies and research projects are building systems that add persistence to C++ in order to provide a solution to the database needs of both VLSI and mechanical CAD systems and software development environments. This talk will contrast the different strategies being pursued and will examine the advantages and disadvantages of each approach. Biography David J. DeWitt is a faculty member of the Computer Sciences Department at the University of Wisconsin. He is currently a member of the Technical Advisor Board for Objectivity and the Parallel Processing Advisor Board for NCR. Over the past 5 years he has managed the EXODUS extensible database system project at Wisconsin which is attempting to address the problems posed by emerging applications of database system technology including GIS, CAD/CAM, and scientific applications. The tools provided by EXODUS include E, a persistent version of C++, the Exodus Storage Manager for storing persistent objects, and the extensible, object-oriented DBMS, EXTRA and EXCESS. 10:15am Break 10:45am Experience Chair: Doug Lea The Interaction of Pointers to Members and Virtual Base Classes in C++ Randall Meyers (Digital Equipment) Problems Involved in Extending Classes in C++ Martin Carroll (AT&T Bell Laboratories) Automatic Detection of C++ Programming Errors: Initial Thoughts on a lint++ Scott Meyers, Moises Lejter (Brown University) 12:15pm Lunch 1:30pm Class design Chair: Jim Waldo The Features of the Object-oriented Abstract Type Hierarchy (OATH) Brian Kennedy (Texas Instruments) The Separation of Interface and Implementation in C++ Bruce Martin (Hewlett-Packard) Signature-Based Polymorphism for C++ Elana Granston (Illinois at Urbana-Champaign) Vincent Russo (Purdue University) 3:00pm Break 3:30pm Panel: How Useful is Multiple Inheritance in C++? Chair: Andrew Koenig Panelists: Tom Cargill, Keith Gorlen, Rob Murray, Mike Vilot 6:00pm USENIX reception ********** Thursday, April 25 *********** 8:30am Environments Chair: Jonathan Shopiro Copying Garbage Collection in C++ Daniel Edelson, Ira Pohl (UC Santa Cruz) Type Identification in C++ Dmitry Lenkov, Shankar Unni, Michey Mehta (Hewlett-Packard) Representing Semantically Analyzed C++ Code with Reprise David Rosenblum, Alexander Wolf (AT&T Bell Laboratories) 10:00am Break 10:30am Concurrent and Distributed Applications Chair: Rob Seliger Porting and Extending the C++ Task System with the Support of Lightweight Processes Philippe Gautron (Rank Xerox France and LITP) Concurrent Real-Time Music in C++ David Anderson, Jeff Bilmes (UC Berkeley) DVOPS - A Tool for Developing Communication Protocols and Distributed Applications Juha Koivisto, Juhani Malka, James Reilly (Technical Research Center of Finland) 12:00 Lunch 1:30pm Class Libraries Chair: Keith Gorlen Experiences in the Design of a C++ Class Library Mary Fontana, Martin Neath (Texas Instruments) Pragmatic Issues in the Design of Flexible Libraries for C++ Douglas Hahn, Neil Soiffer (Tektronix) A Network Toolkit Walter Milliken, Gregory Lauer (BBN) 3:00pm Break 3:30pm Applications Chair: Vince Russo An AWK to C++ Translator Brian Kernighan (AT&T Bell Laboratories) A Class Library for Solving Simultaneous Equations Christopher Van Wyk (Drew University) LogiC++: An Integrated Logic and Object-Oriented Programming Language Shanun-inn Wu (University of Minnesota) ***** For registration and additional information please contact: Judy DesHarnais USENIX Conference Office 22672 Lambert Blvd., Suite 613 El Toro, CA 92630 Phone: 714/588-8649 FAX: 714/588-9706