1.  Definitions
                              A.  Introduction & Concepts
                              B.  Object-orientation vs. structured thinking
                              C.  Constructs: classes, objects, messages, encapsulation,
                                    objects, abstract/concrete classes
                              D.  Structure: inheritance, aggregation, generalization
                              E.  Abstraction, collections
                              F.  Messages vs. subroutine calls
                              G.  Object orientation benefits & barriers
                              H.  Model overview and interrelationships
                               I.  UML: what, why, history, scope
                               J.  UML: views, categories, diagrams, model elements
                                    (relationship, behavioral), adornments, metamodel
                              K.  Object-oriented development process
                              L.  Course notation conventions

2.  Defining the Application Domain
                              A.  Criticality of domain definition and project scope
                              B.  Defining: technical and business objectives, project
                                    constraints, critical success factors
                              C.  Event list for scoping the project
                              D.  External and internal-temporal events; event table
                              E.  Scoping the domain with Classes
                              F.  Defining domain business rules
                              G.  Actors, actor classes, actor catalog
                              H.  Preliminary technical and application architecture
                                    definition; infrastructure components
                               I.  Incremental project delivery

3.  Domain/Use Case Analysis
                              A.  Use case: introduction and usage
                              B.  Visual and text documentation of use cases
                              C.  Decomposing a use case
                              D.  Actors and use cases
                              E.  Use case generalization
                              F.  UML use case ‘uses’ and ‘extends’ stereotype
                              G.  Use case variations
                              H.  Use cases and business and temporal events
                               I.  Quality testing with scenarios

4.  Class/Object Model
                              A.  Extracting classes from use cases
                              B.  Responsibility driven design with CRC technique
                              C.  Format of CRC ‘card’
                              D.  Responsibilities and collaborations
                              E.  CRC process and validation
                              F.  Quality testing with CRC card design
                              G.  Class/object model: determining methods and attributes
                              H.  UML Class/object model notation
                               I.  Associations: multiplicity, constraints, recursion, roles,
                                   ordering, association class, navigability, dependencies,
                                   refinement
                               J.  Inheritance: abstract classes, disjoint subclass, multiple
                                    inheritance
                              K.  Mapping business rules to class/object model
                              L.  UML constraints (business rules)
                              M. UML generalization constraints: overlapping, disjoint,
                                    (in)complete
                              N.  Design by contract business rules
                              O.  UML’s OCL (Object Constraint Language) overview
                              P.  Class interfaces
                              Q.  Multiple & dynamic classification
                              R.  Aggregation and composites
                              S.  Overriding & delegation
                              T.  Design issues
                              U.  Class/object model validation

5.  Dynamics Model
                              A.  Sequence diagram
                              B.  Collaboration diagram
                              C.  State and objects; state rules
                              D.  Events and objects
                              E.  Object life cycle
                              F.  Statechart diagram and nested/superstates
                              G.  When to use statechart diagrams
                              H.  Activity diagram; swimlane activity diagram
                               I.  Validation: class/object and dynamics models

6.  Interface Model
                              A.  GUI interaction and events
                              B.  Events and GUI event queue
                              C.  Object-oriented user interface design process
                              D.  Three schema architecture for oo interface design
                              E.  MVC architecture
                              F.  Mapping from business to interface classes
                              G.  Extending the Use Case model for GUI design
                              H.  User task analysis techniques
                               I.  Actor profiling
                               J.  Prototyping the user interface
                              K.  GUI style guides and tips

7.  Design/Architecture
                              A.  Need for design
                              B.  Architecture Explained
                              C.  Coupling and cohesion
                              D.  Partitioning & object-oriented architectures
                              E.  Application architecture: 7 generic types
                              F.  Service-based architecture
                              G.  Design features impacting partitioning
                              H.  Partitioning strategies for design feature
                               I.  UML packages, package nesting and architectural
                                    mapping
                               J.  UML stereotypes
                              K. Object-oriented features of RDBMS
                              L.  Object to relational mapping: wrapping to relational
                                    database, mapping inheritance, container classes and
                                    lists to relational databases
                              M.  Usage analysis for design and partitioning
                              N.  UML component diagram
                              O.  UML deployment diagram
                              P.  Components: industry view
                              Q.  Reuse
                              R.  Patterns overview: purpose and origins
                              S.  Causes of redesign
                              T.  Catalogued patterns
                              U.  Example patterns
                              V.  Looking for patterns for design
                             W.  Object-oriented methodologies and process patterns
                              X.  Object-oriented project heuristics