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 --