The University of Chicago
Department of Computer Science

CSPP 51023 Course Syllabus
Winter 2004

Instructor:       Mark Shacklette
Office:            Ryerson 150
Office Hours:   Monday 3:30 - 5:30 pm

email:    mark@cs.uchicago.edu (read hourly or so)
       mshack@post.harvard.edu (read daily or so)

 Teaching staff:

Teaching staff:

J. Mark Shacklette, mark@cs.uchicago.edu

TAs: Lead TA:  Eric Crane, ecrane@cs.uchicago.edu
Assistant TAs:  David Press (dmp@cs.uchicago.edu), Mindy Shi (shi@cs.uchicago.edu)

Office Hours TBD.


Course Home Page: http://www.cs.uchicago.edu/~mark/51023/

 
 
 
SUBJECT COURSE TITLE TIME BUILDING
324 51023 OO Architecture, Design, Methodology 5:30 - 8:20 Mondays Ryerson 277

 

I. TEXT AND MATERIALS
 

Texts: Required

Design Patterns, Gamma, et. al., Addison Wesley, 1995, ISBN: 0201633612

Object Solutions, Grady Booch, Addison Wesley, 1996, ISBN:  0805305947

Software Architecture:  Perspectives on an Emerging Discipline, Shaw & Garlan, Prentice Hall, 1996, ISBN: 0131829572

The Unified Modeling Language User Guide , Grady Booch, et. al., Addison Wesley, 1999, ISBN: 0201571684

Texts: Recommended

Developing Software with UML, Bernd Oesterich, Addison-Wesley, 1999, ISBN: 0201398265

Developing Object Oriented Software, OOTC, Prentice Hall, 1996, ISBN: 0137372485

Object-Oriented Software Engineering, Ivar Jacobson, Addison Wesley, 1992, ISBN: 0201544350

The Unified Modeling Language Reference Manual , James Rumbaugh et. al., Addison Wesley, 1991, ISBN: 020130998X

The Unified Software Development Process , Ivar Jacobson et. al., Addison Wesley, 1999, ISBN: 0201571692

Surviving Object-Oriented Projects, Alistair Cockburn, Addison Wesley, 1998, ISBN: 0201498340

UML Distilled,  Martin Fowler et. al., Addison Wesley, 1999, ISBN: 0201325632

Object-Oriented Analysis and Design, Grady Booch, Benjamin Cummings, 1994, ISBN: 0805353402

Software Project Management, A Unified Framework , Walker Royce, Addison Wesley, 1998, ISBN: 0201309580

Use Case Driven Object Modeling with UML , Doug Rosenberg, et. al., Addison Wesley, 1999, ISBN: 0201432897  

Object Oriented Design & Patterns, Cay Horstmann, Wiley, 2004 ISBN: 047131966X

Object Design:  Roles, Responsibilities, and Collaborations, Wirfs-Brock, McKean, Addison Wesley, 2003 ISBN: 0201379430

Managing the Software Proscess, Watts Humphrey, Addison Wesley, 1989 ISBN: 0201180952

Agile Modeling:  Effective Practices for Extreme Programming and the Unified Process, Scott Ambler, Wiley, 2002  ISBN: 0471202827

Software Design:  From Programming to Architecture , Eric Braude, Wiley, 2004 ISBN: 0471429201

Agile Software Development:  Principles, Patterns, and Practices, Robert Martin, Prentice Hall, 2003 ISBN: 0135974445

The CRC Card Book,  Bellin & Simone, Addison Wesley, 1997 ISBN: 0201895358

Managing the Software Proscess, Watts Humphrey, Addison Wesley, 1989 ISBN: 0201180952

Agile Software Development,  Alistair Cockburn, Addison Wesley, 2002 ISBN: 0201699699


Texts: Ready Reserve Reading List (articles avaliable online--here are instructions for accessing online)

The Timeless Way of Building, Christopher Alexander, New York: Oxford, 1979

A Pattern Language, Christopher Alexander, et. al., New York: Oxford, 1977

The Categories and On Interpretation, Aristotle, Cambridge: Harvard 1938

The Parts of Animals, Aristotle, Cambridge: Harvard 1937

Critique of Pure Reason, Immanuel Kant, Cambridge: Cambridge, 1998

The Mythical Man Month, Fred Brooks, Reading, Mass: Addison-Wesley 1975

Pattern Languages of Program Design, Vol. 1, James Coplien,  DougSchmidt, Reading, Mass: Addison-Wesley, 1995

Object-Oriented Design Heuristics,  Arthur Riel, Reading, Mass: Addison-Wesley, 1996

Object Oriented Analysis and Design with Applications, 2nd ed., Grady Booch, Redwood City, Calif: Benjamin Cummings, 1994

The Patterns Handbook,  Linda Rising, ed., Cambridge, Cambridge University Press, 1998

Gregory Abowd, Robert Allen, and David Garlan. Using Style to Understand Descriptions of Software Architecture. In Proc First ACM SIGSOFT Symposium on the Foundations of Software Engineering , December 1993.

Frank DeRemer and Hans H. Kron. Programming-in-the-Large versus Programming-in-the-Small. IEEE Trans. on Software Engineering ,
SE-2(2):80-86, June 1976.

David Garlan, Robert Allen, and John Ockerbloom. Architectural Mismatch, or Why its hard to build systems out existing parts. Proc Seventeenth International Conf on Software Engineering (ICSE-17), April 1995.

H. Penny Nii. Blackboard Systems. AI Magazine 7(3):38-53 and 7(4):82-107.

Charles R. Morris and Charles H. Ferguson. How Architecture Wins Technology Wars. Harvard Business Review , 71, 2, March-April 1993, pp. 86-96.

G.C. Murphy and D. Notkin. Reengineering with Reflexion Models: A Case Study. IEEE Computer 30(8), pp. 29-36.

David L. Parnas, Paul C. Clements, and David M. Weiss. The Modular Structure of Complex Systems. IEEE Trans. on Software Engineering , SE-11(3):259-266, 1985.

David L. Parnas. On the Criteria To Be Used in Decomposing Systems Into Modules. Communications of the ACM , 15(12):1053-1058, December 1972.

Eberhardt Rechtin. The art of systems architecting. IEEE Spectrum October 1992, pp. 66-69.

Grady Booch. Object-Oriented Development. IEEE Trans. on Software Engineering, SE-12(2):211-221, February 1986.

James M. Purtilo and Joanne M. Atlee. Module Reuse by Interface Adaptation. Software -Practice and Experience , 21(6):539-556, June 1991.
 

II. PREREQUISITE:

There are no formal prerequisites for this course. Obviously, exposure to an Object-Oriented Programming Language such as Smalltalk, Java, C++, Squeak, Ada, Common Lisp Object System (CLOS), or Eiffel would be helpful, but it is not required.
 

III. COURSE DESCRIPTION

This course concentrates on three major themes: Software Architecture, Object Oriented Analysis and Design, and Methodology. The bulk of the course will involve key concepts in Object-Oriented Analysis and Design (OOA/OOD). The methods we will study include the Rational Unified Process (RUP), Extreme Programming (XP), and the Object-oriented Process, Environment and Notation (OPEN) method, and the Design notation will be the Unified Modeling Language (UML).  The focus of the course is best practices, the theme of the course is complexity in software systems.

This course is not a course in Object-Oriented Programming. Rather, this course is abstracted a level up, and focuses on principles, concepts, processes, methods, and best practice models that transcend and yet can be implemented with (most) any object-oriented programming language. That said, code examples that illuminate key concepts in OO design will be provided in various OO languages (Smalltalk, Eiffel, Java, C++, CLOS) in order to further illuminate the concepts being discussed. For example, we will see how Smalltalk, Java, C++, CLOS, implement, say, polymorphism, with distinctive hermeneutical and pragmatic significance.  However, it is the concepts that are central, not their particular implementations. A primary focus of the course will be to come to terms with many common patterns in software design, which provide proven and repeatable templates on which to base implementations.
 

IV. LEARNING OBJECTIVES

Upon completion of this course the student will:

A. Understand central OO concepts and terminology.
B. Develop a full command of the UML and its syntax.
C. Become fluent in the implementation of UML using Together Control Center .
D. Produce different UML models using Together Control Center Model.
E. Become familiar with a number of common design patterns.
 

V. ACADEMIC INTEGRITY

Students are expected to have read and understood the University's policy on Academic Integrity. This policy is detailed in the Student Manual of University Policies and Regulations, available online at http://www.uchicago.edu/student/manual/academic_honesty.html .
 

VI. METHOD OF INSTRUCTION

Methods include lecture and class presentations.
 

VII. OTHER COURSE INFORMATION

Attendance:

No formal attendance taken. There may be information presented in class that is not in the texts. You will be responsible for all information discussed in class and assigned in the required Ready Reserve readings .

Make-up Work:

If you miss an exam, you will need to speak with the instructor ASAP .  The instructor is known to woefully frown on students who miss exams.

Students are expected to read the assigned texts before class in order to be able to full participate intelligently in the discussions.
 

VIII. METHOD OF EVALUATING STUDENT PROGRESS

Assigned work evaluated as follows:

1 Exam:                      45 pts **
3 Modeling Practicums        45 pts (15 pts each)
1 Pattern Presentation       10 pts
Total:                      100 pts

Grading scale: A=90-100, B=80-89, C=70-79, D=60-69, F=0-59

**Extra credit questions will be offered on the Exam. Questions may be drawn from the lectures, required texts as well as the required Ready Reserve Reading assignments. As this course has no programming homework, no quizzes, and only one exam, students are expected to do the reading, and will be held accountable for all of it, without exception.

Each student will need to sign up for 1 pattern presentation during which each student will deliver a simple presentation on a pattern of choice. The presentation should last no longer than 10 minutes, and present the pattern in simple expository terms, and if possible, provide an example in code or design. An overhead projector will be available should students desire it.  Most students choose to deliver their presentations using Power Point.  Instructions for how to present a pattern may be found here .

The instructor reserves the right to alter the course contents, dates, times or percentage of credit based on time allowed and class progress through the course material. The instructor also reserves the right to curve grades if he deems it in the best interest of the majority of students.
 

IX. COURSE SCHEDULE

NB: The Instructor reserves the right to alter the schedule as class progress dictates.

Abbreviations Key for Required texts and Required Ready Reserve reading (Texts marked with * are on Ready Reserve):
 
 
SA Shaw, Garlan, Software Architecture
OS Booch, Object Solutions
UML Booch, UML User Guide
OOAD Booch, Object Oriented Analysis and Design *
TMMM Brooks, The Mythical Man Month*
Categories Aristotle, Categories* (available online at MIT)
Animals Aristotle, Parts of Animals  (available online at MIT)
Topics Aritstotle, Topics (available online at MIT)
ATWB* Alexander, The Timeless Way of Building *
AAPL* Alexander, A Pattern Language*
PLOP1 Coplien, Schildt, Pattern Languages of Program Design 1*
OOSC*
Meyer, Bertrand, Object-Oriented Software Construction, 2nd Ed.*
TPH* The Patterns Handbook*
Riel* Riel, Object-Oriented Design Heuristics *
Par72* David L. Parnas. On the Criteria To Be Used in Decomposing Systems Into Modules. 
Communications of the ACM, 15(12):1053-1058, December 1972. *
PCW85* David L. Parnas, Paul C. Clements, and David M. Weiss. The Modular Structure of Complex Systems. 
IEEE Transactions on Software Engineering , SE-11(3):259-266, 1985.*
Boo86* Grady Booch. Object-Oriented Development. 
IEEE Transactions on Software Engineering , SE-12(2):211-221, February 1986.*
PA91* James M. Purtilo and Joanne M. Atlee. Module Reuse by Interface Adaptation. 
Software -Practice and Experience, 21(6):539-556, June 1991.*
Rec92* Eberhardt Rechtin. The Art of Systems Architecting. 
IEEE Spectrum October 1992, pp. 66-69. *
MF93* Charles R. Morris and Charles H. Ferguson. How Architecture Wins Technology Wars. 
Harvard Business Review, 71, 2, March-April 1993, pp. 86-96.*
GAO95* David Garlan, Robert Allen, and John Ockerbloom. Architectural Mismatch, or 
Why its hard to build systems out of existing parts. Proceedings Seventeenth International Conference 
on Software Engineering (ICSE-17), April 1995. *
Gut77* John Guttag, Abstract Data Types and the Development of Data Structures Communications of the ACM, June 1977, 20.6,
pp. 396-404*

 
 
Class/Date Lecture Topics Required Reading & Pattern 
Presentation Schedule (Students
should read relevant patterns in
Gamma, et. al. for each class)
Required Reserve Reading Homework Assignments
Class 1

January 5

Introduction and Problem Statement

Issues in Complexity
Modeling and Abstraction

OS, ch. 1
SA, ch. 1
 
 

 

Aristotle, Categories,
i - vii,xii,xiii,xv (online)
OOAD, ch. 1
PCW85
Aristotle, Parts of Animals, Book I, Part I (online)
Alexander, TWB 1,2,4,5,7



Class 2

January 12

Object Oriented Analysis

Introduction to Patterns Singleton (demonstration pattern)
Use Cases

Class Identitication Strategies (CRC, etc.)
Data Modeling vs. Class Modeling:  Problems and Challenges

Patterns


Facade Pattern (demostration presentation)
UML ch. 16-17
OS, ch. 3
TMMM ch. 1,2,4
PLOP1, ch. 16
TPH, pp. 1-13; 243-300; 353-59
Alexander, TWB 10,11,16





Class 3

January 19

Process Management Methodologies

The Rational Unified Process
XP and Agile Methods
et. al.

UML ch. 4-14
OS, ch. 4

Student Pattern Presentations

Class Adapter
Template Method

TMMM, 7
Riel, ch. 1
TPH, pp. 333-344
TPH, pp. 345-352
TMMM ch. 16,17


Class 4

January 26

Classification and Abstraction

Programming Paradigms
Classes and Objects
State and Behavior


UML ch. 1-6

Student Pattern Presentations:

Object Adapter,
Proxy
 

Alexander, TWB
13,14,16,21,22
OOAD, 2,3
Riel,  2,3
Aristotle, Topics, Book 1:  Parts 4-7 (online)
Modeling Practicum I: 
Analysis Modeling using Use Cases and CRC (Saturday, 1/31/2004)
Class 5

February 2

Models and Modeling Languages:  Structural Aspects

Static/Structural Modeling
Inheritance and Abstraction
Aggregation and Composition
Introduction to Static Modeling in UML
 

UML ch. 7-14

Student Pattern Presentations:

Abstract Factory, Factory Method

Riel,  4,5,6,7
OOAD, ch. 4
TMM 13
Par72


Class 6

February 9

Models and Modeling Languages:  Structural Aspects (continued)

Abstraction Revisited
Aggregation and Composition

Class Relationships (Associations, Dependencies, Whole/Part)

Advanced Static Modeling in UML

UML ch. 7-14 (cont)

Student Pattern Presentations:

Composite,  Chain of Responsibility


Alexander, APL
112,115,159
PA91
Rec92
TPH, pp. 301-310
Modelling Practicum I due

Modeling Practicum II: 
Structural Modeling
(Practicum Session Saturday, 2/14/2004)
Class 7

February 16

Models and Modeling Languages:  Behavioral Aspects

Polymorphism & Language Implementations

UML ch. 15, 18, 19, 20, 21

Student Pattern Presentations:

Iterator, Visitor

TPH, pp. 237-241
Alexander, APL 168, 169, 173
Boo86

Class 8

February 23

Models and Modeling Languages:  Behavioral Aspects (continued)

Dynamic Modeling in UML:  (Sequence/Collaboration Diagrams, etc)
Message Passing Paradigm
Event Model
Object Equivalence (Equivalence vs. Identity, Deep vs. Shallow Copying)

UML ch. 25-31

Student Pattern Presentations

CommandState

MF93
TPH, pp. 311-319
TPH, pp. 321-332


Modelling Practicum II due


Modeling Practicum III: 
Dynamic Modeling (Saturday, 2/28/2004)

Class 9

March 1

Object Oriented Design Implementation Details
Abstract Classes and the use of Interfaces in Compositional Frameworks

Exam Review

OS, ch. 2, 5-6
 

Student Pattern Presentations

Strategy, Mediator

GAO95
Alexander, APL 180, 203,  247


Class 10
March 8
EXAM


Class 11

March 15
 

Architectural Considerations:
Frameworks and Component Architectures
Tiered Architecture
Distributed Objects

Patterns :

Layers, Reflection

SA, ch. 5-8
OS, ch. 7  

Student Pattern Presentations:

Bridge, Observer

 


Final Model Due (including Modeling Practicum III)

 

X. Online Reference and Resources:
 

General:

Cetus Links on OO: http://www.objenv.com/cetus/software.html
OOSE Links: http://www.inf.ufsc.br/poo/ine5383/oose.html

OOA/OOD:

Martin Fowler's home pages:      http://www2.awl.com/cseng/titles/0-201-89542-0/techniques/index.htm
                                           http://www.martinfowler.com/

Patterns:

Salingaros's notes on Christopher Alexander: http://www.math.utsa.edu/sphere/salingar/Chris.text.html
Patterns-Discussion FAQ: http://g.oswego.edu/dl/pd-FAQ/pd-FAQ.html
Writing Patterns: http://hillside.net/patterns/
Pattern Examples: http://st-www.cs.uiuc.edu/cgi-bin/wikic/wikic?DesignPatterns
Alistair Cockburn's home page:  http://alistair.cockburn.us/