CSCI 253  Object-Oriented Design
Class schedule: 7:10pm - 9:40pm, Wednesday, Tompkins 201
Office hours: before class by appointment (703.622.2315)

Please click here to subscribe to the class mailing list

 

syllabus

textbook

Useful Books

Lecture Notes

Related Links

 

Syllabus: html pdf

 

Required textbook: Erich Gamma (deceased), Richard Helm (deceased), Ralph Johnson, John M. Vlissides. (deceased)  (The Gang of Four): Design Patterns: Elements of Reusable Object-Oriented Software

 

Useful books:

Horstmann, Cay S.: OO Design & Patterns
Cooper, James W: The Design Patterns Java Companion
 

 

Lecture:

Date


 

Lesson

Notes

Homework

Homework due date

1/17/07

Lesson 1

Introduction to CSCI 253 (pdf)
Introduction to topic (pdf)
Java review - Part A (pdf)
Java review - Part B (pdf)

 

 

1/24/07

Lesson 2

Introduction to OOD (pdf)

   

1/31/07

Lesson 3

Java review - Part C (pdf)
Frameworks and Patterns (pdf)

   

2/7/07

Lesson 4

Singleton Pattern (pdf)
Factory Method Pattern (pdf)
Abstract Factory Pattern (pdf)
Builder Pattern (pdf)
Prototype Pattern (pdf)
Creational Patterns (pdf)

Homework 5

2/14/07

2/14/07

Lesson 5

Creational Patterns discussion

Homework 5

 

2/21/07

Lesson 6

Adapter Pattern (pdf)
Bridge Pattern (pdf)
Composite Pattern (pdf)

   

2/28/07

Lesson 6

Decorator Pattern (pdf)
Façade Pattern (pdf)
Flyweight Pattern (pdf)
Proxy Pattern (pdf)
Structural Patterns (pdf)

Homework 7

3/7/07

3/7/07

Lesson 7

Structural Patterns discussion

Homework 7

-

3/21/07

Lesson 8

Chain of Responsibility Pattern (pdf)
Command Pattern (pdf)
Interpreter Pattern (pdf)
Iterator Pattern (pdf)

Homework 8

3/28/07

3/28/07

Lesson 9

Mediator Pattern (pdf)
Memento Pattern (pdf)
Observer Pattern (pdf)
State Pattern (pdf)

Homework 9

4/4/07

4/4/07

Lesson 10

Strategy Pattern (pdf)
Template Method Pattern (pdf)
Visitor Pattern (pdf)
Behavioral Patterns (pdf)

Homework 10

4/11/07

4/11/07

Lesson 11

Behavioral Patterns discussions

Homework 11

4/11/07

4/18/07

Lesson 12

A review of the patterns

Homework 12

4/18/07

4/25/07
5/2/07

Presentations

All students are expected to be present and all work must be submitted by midnight

-

-

5/9/07

Final

(There will be no final exam!)

 -

-

 

Lesson 1 Introduction (Chapters 1 and 2 and Appendix A)

Overview of the course
Why study OOD
Java Review

Homework #1: (there is no homework assignment)

<Back>

 

Lesson 2 Introduction to Object-Oriented Design

(summary - to be supplied)

 Homework #2: (there is no homework assignment)

<Back>

 

Lesson 3 Classes, Frameworks and Patterns

Java Review (continued)
Frameworks
The GCB application framework
Communications.java
InputField.java
ListEntry.java
ListHead.java
ListObject.java
ListObjectHead.java
MainGUI.java
SolicitGUI.java
StateMachine.java
StateMachineTimer.java
StateVariable.java
Trace.java
Patterns

Homework #3: (there is no homework assignment)

<Back>

 

Lesson 4 Creational Patterns (Chapter 3)

Discussion of each of the Creational Patterns
Singleton - unique instance of the class
Factory Method - build the object from set of classes
Abstract Factory - build the object from a set of Factory Methods
Builder - build the object from a set of objects
Prototype - build clones of an object
Review related links

Homework #4: (there is no homework assignment)

<Back>

 

Lesson 5 Discussion of Creational Patterns (The Design Patterns Java Companion - Chapter 1)

Java Companion

Homework #5: (in class discussion)

  1. (Cooper) Consider a personal checkbook management program like Quicken. It manages several bank accounts and investments and can handle your bill paying. Where could you use a Factory pattern in designing a program like that?
  2. (Cooper) Suppose are writing a program to assist homeowners in designing additions to their houses. What objects might a Factory be used to produce?
  3. (Cooper) If you are writing a program to track investments, such as stocks, bonds, metal futures, derivatives, etc., how might you use an Abstract Factory?
  4. (Cooper) Some word-processing and graphics programs construct menus dynamically based on the context of the data being displayed. How could you use a Builder effectively here?
  5. (Cooper) Not all Builders must construct visual objects. What might you use a Builder to construct in the personal finance industry?
  6. (Cooper) Suppose  you were scoring a track  meet, made up of 5-6 different events? Can you use a Builder there?

<Back>

 

Lesson 6 Structural Patterns (Chapter 4)

Adapter Pattern - Adapting an existing interface to an existing client
Bridge Pattern - Set of implementations using the same interface
Composite Pattern - Hierarchy of implementations (objects) with same interface
Decorator Pattern - Hierarchy with differences
Facade Pattern - Easy interface to a complex problem
Flyweight Pattern - Set of singletons
Proxy Pattern - Different implementations for same object
Review related links

Homework #6: (there is no homework assignment)

 

Lesson 7 Discussion of Structural Patterns (The Design Patterns Java Companion - Chapter 4)

(Cooper examples)
Select one of the seven patterns listed below for discussion in class
Use as the object of the discussion the examples for the patterns in the Cooper examples found on the his web site Design Patterns
The discussion should include:
1. Why the example is good (or bad)?
2. Clearly describe how the example uses the pattern, or why it does not use the pattern.
3. Describe (show) how the code fits together.
4. Show the working example (execute the compiled code)

Homework #7: (in class discussion)

  1. (Cooper) Adapter Pattern example
  2. (Cooper) Bridge Pattern example
  3. (Cooper) Composite Pattern example
  4. (Cooper) Decorator Pattern example
  5. (Cooper) Facade Pattern example
  6. (Cooper) Flyweight Pattern example
  7. (Cooper) Proxy Pattern example
     

<Back>

 

Lesson 8 (Chapter 5)

Chain of Responsibility Pattern
Command Pattern
Interpreter Pattern
Iterator Pattern

Homework #8: (in class discussion)
(continued from lesson 7)

<Back>

 

Lesson 9 (Chapter 5)

Mediator Pattern
Memento Pattern
Observer Pattern
State Pattern
 

Homework #9: (in class discussion)
(continued from lesson 7)

Outline of "your framework)
"Your framework" is supposed to solve some general problems that you encounter when you program.  It is a tool kit that you use whenever you code a new application or component.  It is your personnel programming widget.
1. What are the problems that "your framework" will address?
2. What are the patterns that you feel are appropriate for each problem?
3. What is the example you will use to demonstrate "your framework"?

Four individuals should choose one of the four patterns discussed in lesson 8 and perform an analysis of the example from Cooper's zip file (see lesson 7).

<Back>

 

Lesson 10 (Chapter 5)

Strategy Pattern (pdf)
Template Method Pattern (pdf)
Visitor Pattern (pdf)
Behavioral Patterns (pdf)

Homework #10: (in class discussion)
Four individuals should choose one of the four patterns discussed in lesson 9 and perform an analysis of the example from Cooper's zip file (see lesson 7).  (Two individuals will have done a presentation in both lesson 9 and lesson 10.)

<Back>

 

Lesson 11 (Chapter 5)

Select two of the eleven patterns listed below for discussion in class
Use as the object of the discussion the examples for the patterns in the Cooper examples found on the his web site Design Patterns
The discussion should include:
1. Why the example is good (or bad)?
2. Clearly describe how the example uses the pattern, or why it does not use the pattern.
3. Describe (show) how the code fits together.
4. Show the working example (execute the compiled code)

Homework #11: (in class discussion)

  1. (Cooper) Chain of Responsibility example
  2. (Cooper) Command example
  3. (Cooper) Interpreter example
  4. (Cooper) Iterator example
  5. (Cooper) Mediator example
  6. (Cooper) Memento example
  7. (Cooper) Observer example
  8. (Cooper) State example
  9. (Cooper) Strategy example
  10. (Cooper) Template Method example
  11. (Cooper) Behavioral example
     

<Back>

 

Lesson 12 (Chapters 3, 4, and 5)

Review of the patterns
Six Creational patterns
Seven Structural patterns
Eleven Behavioral patterns
Select three of the twenty-four patterns (one from each category) for discussion in class
Use as the object of the discussion the examples for the patterns in the Cooper examples found on the his web site Design Patterns
The discussion should include:
1. Why the example is good (or bad)?
2. Clearly describe how the example uses the pattern, or why it does not use the pattern.
3. Describe (show) how the code fits together.
4. Show the working example (execute the compiled code)

Homework #12: (in class discussion)

  1. (Cooper) Creational pattern
  2. (Cooper) Structural pattern
  3. (Cooper) Behavioral pattern

<Back>

 

Research project

Research paper:

The research paper is to be 10 to 20 pages describing your personal framework.  The paper should be divided into standard sections (introduction, body, and conclusion).  The introduction should give an overview of the framework objectives and salient problems that are addressed in the framework.  The body of the paper should address the roots of the framework (problems and impetus), the use of the framework, and classes that are defined.   The body should also give an example of use of the framework in a working application.  The conclusion should address its scope and limitations. 

 

Research report:

The research report should be a presentation of 30 minutes or less.  If possible, a demonstration of the framework should be given, or screen shots.  The presentation will be given on the last class and will replace the final exam.  The research report is independent of the research paper.  (The paper cannot be read as the report.)

<Back>

 

Related Links:

CSCI 253 Glossary
Federal Government Glossary
OSI Reference Model
The Internet Engineering Task Force
Connected: An Internet Encyclopedia
RFC Editor
CERT Coordination Center

Design Patterns Tutorial
The Design Patterns Java Companion
CS 242: Developing Object-Oriented Software with Patterns and Frameworks

Other Pattern URLs
http://www.exciton.cs.rice.edu/JavaResources/DesignPatterns/
Design Patterns: Elements of Reusable Object-Oriented Software
Object Oriented Software Development (2006-2007) [SSEL]
CMSC491D Design Patterns In Java
Design Pattern : Java examples (example source code) Organized by topic
Java World Design Patterns
Java Developers Journal - Design Patterns
Java World Composite Pattern
The Decorator Pattern
The Mediator Pattern Can Organize an Object-Oriented Application
Using the Strategy Design Pattern for Sorting POJOs
The Template Method Pattern
CS 635 Advanced Object-Oriented Design & Programming
Effective OO Programming
Visitor Pattern

<Back>

 

This web page format is compliments of a prior student Yang Dong (last update by George Blankenship on April 04, 2007)