|
||||
Object Technology for Scientific ComputingA course designed for scientists, engineers, and managers of scientific computing projectsBy: David Butler, Paul Dubois and Bertrand Meyer ScopeScientific computing is the original application area of computers and remains one of the most important. From meteorology to plasma physics, environmental protection, nuclear energy, genetic engineering, network optimization, and many other fields (including, increasingly, advanced financial applications), scientific applications are ever larger, more ambitious, more complex, and more necessary. Object technology is recognized as one of the required tools in tackling these ever growing demands. Only recently, however, have object-oriented methods started to be applied on a large scale to scientific applications; still foremost in the minds of scientists, engineers and their managers are the traditional concerns of performance and scalability. The scientific programming community often perceives existing courses on object technology as geared towards other fields -- Management Information Systems, GUI, systems programming, embedded applications, general-purpose tools -- and not adapted to their needs. This course was designed for scientific developers and its presenters speak the language of scientific computing. The course is language- and tool-independent and presents the key concepts of object technology and their application to scientific computing. It includes a considerable amount of practical advice and lessons from both successful developments and failed projects in the scientific field. The course has been successfully presented a number of times to a large US government agency and is now available to other institutions. Course material and case studyThe course material distributed to each participant includes about 800 slides and a set of supporting articles, as well as a copy of the 1300-page Jolt-award-winning book Object-Oriented Software Construction. The course includes a case study enabling the participants to study the design issues associated with a significant development, and see the object-oriented approach applied in real life to scientific applications. Principal topicsA non-exhaustive list of topics covered includes: Introduction: the evolution of scientific computing; software engineering needs of scientific applications; the management perspective; lifecycle models for scientific applications; the role of reuse; using and building reusable components. Object-oriented concepts and techniques: abstract data types, classes, objects, genericity, single and multiple inheritance, memory management issues, Design by Contract. Examples from scientific applications. Dealing with legacy software in an O-O world. A review of technologies: object-oriented languages and environments and their application to scientific computing (C++, Java, Eiffel); scripting languages and the steering of scientific applications (Python, Perl, Tcl); object-oriented databases; object request brokers, CORBA, COM. Parallel computation frameworks. Choosing implementation technologies. An object-based approach to Fortran 95: using modules and user-defined types; dynamic memory management; namespaces. To what extent can modern Fortran be used to implement O-O principles? Possibilities and limitations. Techniques for large scientific projects: understanding how scientific programs are born, grow and die. Isolating components. Using Steering to prevent aging and enable users. Advice on non-language issues. Case histories: "Everybody write a subroutine", "The object maniac", "Non-programmers write large code" etc. Architectural principles for large scientific projects Modern views of software architecture. Virtual machines. Taking advantage of components. Composition, adaptation, reconfiguration. The role of interfaces. Designing reusable software: principles of component designing. Option-operand principle. Command-query principle. Naming. Frameworks. Making reuse succeed. Designing mathematical classes: specificities of math software. Language role. Making things easy. Accuracy. Scaling. From functional to O-O architecture; examples: integrator classes, eigensystems, Fourier transforms. Example inheritance hierarchies; making the best use of inheritance. Tuning the classes. Libraries and resources (C++, Eiffel, Fortran, Java). Commands and queries. Parallel computation. Expert capability classes. Mathematical framework design: conventional vs. object implementations of numerical components. Levels of abstraction. Examples: 2D scalar fields, equations. PrerequisitesThis course is intended for scientists, engineers and managers involved in scientific computing. Some software engineering or object technology background will be useful, but is not required. Course sessionsThis course is available in-house, in the US and abroad, for groups of twelve or more participants. The normal session length is 5 days, including the case study and extensive interaction periods. For dates and availability please contact ISE Training at:
ISE Building, 270 Storke Road, second floor Goleta, CA 93117 USA Telephone 805-685-1006 Fax 805-685-6869 E-mail training@tools-conferences.com. About the instructorsThis course has been prepared by three experts combining unique experience in scientific computing and object technology. David Butler is Founder and President of Limit Point Systems, specializing in systems for processing scientific data. He has a PhD in Physics and twenty years' experience in research and development of software for a broad range of scientific applications, including 13 years applying object technology. His research has focused on development of fiber bundle data models and their application to O-O frameworks for scientific computation, visualization, and data management. He is a member of the Data Models and Formats committee of the Department of Energy's ASCI initiative (Advanced Strategic Computing Initiative) set up to define an advanced data model for scientific computing. Paul Dubois has a PhD in Mathematics from UC Davis and spent six years in postdoc and teaching positions. He then spent eight years developing algorithms for large codes and helping users with mathematical libraries, and co-developed a new comprehensive magnetic fusion code. He was for twelve years in charge of the computer science team for a very large Fortran application in inertial confinement fusion. He has wide experience in building large simulations with multiple physics packages For seven years has edited the "Scientific Programming" department, now in IEEE Computing in Science and Engineering (formerly Computers and Physics). Bertrand Meyer is President of Interactive Software Engineering and Professor (adjunct) at Monash University. His scientific programming experience was acquired at Électricité de France, where he set up a software engineering group and helped introduce the first Cray in Europe to its user community. He is the author of nine books and numerous papers, and has directed the design of the Eiffel method, language, environment and basic libraries, as well as a number of applications. He is Editor of the Prentice Hall O-O Series and the Component and Object Technology Department of Computer (IEEE). He is a graduate of École Polytechnique and ENST, holds a MS in Computer Science from Stanford University and a PhD from the University of Nancy.
|