Subject: C++ course Date: Mon, 08 Mar 1999 14:25:44 -0500 From: Torre WenausOrganization: Brookhaven National Laboratory To: porter@bnl.gov, perev@bnl.gov, Pavel Nevski , Yuri Fisyak , Valery Fine , Claude Pruneau , Lidia Didenko , Mike LeVine , Tonko Ljubicic , Markus Schulz , landgraf@bnl.gov, Brian Lasiuk , Thomas Ullrich , David Zimmerman , Patricia Fachini Hi, the C++ course will be Mon-Fri Mar 15-19 B.118 conference room 8:30am - 5:00pm (probably) I've received course material in PDF. I'll get it printed up for people this week. You can see it on the web, on the computing internal page. The instructor is Robert Martin, head of the company. Resume at http://www.oma.com/Brochure/Resumes/rmartin.html There are a couple of links to articles by him on the comp help page: http://www.rhic.bnl.gov/STAR/comp/train/WhyC++.txt http://www.rhic.bnl.gov/STAR/comp/train/OODesignPrinciples.txt I have a copy of his book (although it's at home; you'll have to remind me to bring it in if you want to have a look). In the past, at least, he has distributed copies of his book to course attendees. The program for the course (from the OMA web site www.oma.com) is below. I see that Steven Gowdy of BaBar has written a C++ course http://www.ph.ed.ac.uk/~gowdy/Courses/C++/ based on his experience and the courses (including 2 Robert Martin courses) he has taken; you may want to have a look at that. - Torre Day 1 -- Introduction and Review Overview of Design Patterns. The Tools of Software Design Decomposition Cohesion Coupling Static (Dependency) Structure Dynamic (Behavioral) Structure The Principles of Structured Software Analysis and Design Functional Decomposition Entity Relationship Modeling Structured Design Structured Programming The Principles of Object Oriented Analysis Real-World Decomposition Behavioral Decomposition The Principles of Object Oriented Design Principle #1: The Open-Closed Principle Principle #2: The Liskov Substitution Principle Principle #3: The Dependency Inversion Principle Principle #4: The Reuse/Release Equivalency Principle Principle #5: The Common Closure Principle Principle #6: The Common Reuse Principle Principle #7: The Acyclic Dependencies Principle Principle #8: The Stable Dependency Principle. Principle #9: The Stable Abstractions Principle. Day 2 -- Advanced C++ New advanced features C++ Exceptions New Memory Management features C++ Namespaces Run Time Type Identification (RTTI) New Casts enum overloading Other New Language Features explicit bool mutable C++ Idioms and Patterns Orthodox Canonical Class Form Clone - Factory Method Assignment via placement new No Derivatives Day 3 -- Patterns What is a Design Pattern? Patterns for Managing Dependencies Abstract Server AdaptedServer Abstract Client Adapted Client Strategy Template Method - Write a Loop Once Observer Envelope-Letter Bridge Intelligent Children Stairway to Heaven Visitor Acyclic Visitor RTTI Visitor Patterns for Creating Objects Factory Prototype Day 4 -- More Patterns Patterns for Reuse and Interface Compatibility Decorator Facade Proxy-Surrogate Patterns for Controlling Behavior and Structure Command Composite Mediator Rungs of a Dual Hierarchy Patterns for Accessing Containers Iterator Iterable Container Query SelectiveIterator Association Combination Iterator Patterns for Finite State Machines State Two Level FSM Three Level FSM Day 5 -- Application Paradigms Representational Applications Multiprocessing Applications -- Torre Wenaus, BNL wenaus@bnl.gov 516-344-4755 Fax 516-344-4206 -- -- STAR Experiment, RHIC@BNL Computing and software project leader -- -- B. 510A Room 1-175 http://www.rhic.bnl.gov/STAR/computing.html -- -- http://www.wenaus.com/torre.html --