Subject: 
              C++ course
        Date: 
              Mon, 08 Mar 1999 14:25:44 -0500
        From: 
              Torre Wenaus 
 Organization: 
              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            --