The University of Chicago
Department of Computer Science

CSPP 51023 Course Syllabus
Winter 2009

Instructor:        Mark Shacklette
Office:               Ryerson 175A
Office Hours:   Monday 3:30 - 5:30 pm and by appointment

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

Teaching staff: 
Lead TA:          Ozgur Sumer
Office:               Ryerson 162-A
Office Hours:    Monday 8:30 - 9:30 pm, Wednesday 5 - 7 pm and by appointment only

email:    osumer (at) cs

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 Monday Eckhart 202

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, 2nd ed , Grady Booch, et. al., Addison Wesley, 1999, ISBN: 0321267974

Texts: Recommended

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

Building Enterprise Information Architectures, Melissa Cook, Prentice Hall, 1994, ISBN: 0134402561

Enterprise Service Oriented Architectures, McGovern, Sims, et. al., Springer 2006 ISBN: 140203704X

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

IT Governance, Weill, Ross, HBS Press, 2004, ISBN: 1591392535

Does IT Matter?, Carr, HBS Press, 2004, ISBN: 1591394449

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

Use Cases: Patterns and Blueprints,  Overgaard and Palmkvist, Addison Wesley, 2005 ISBN: 0131451340


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

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.

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

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.

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.

II. PREREQUISITE:

There are no formal prerequisites for this course. Obviously, exposure to an Object-Oriented Programming Language such as Smalltalk, Java, C#, C++, Squeak, 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), Agile Methods focusing on 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++, 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. Fundamentally 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 Visual Paradigm Community Edition which you may download here.
D. Produce different UML models (Analysis, Design, Use Case, etc.) using Visual Paradigm.
E. Become conversant 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 here.
 

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 **
1 Final Project                  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 .

All assignments are due as specified on this syllabus.  Students who turn in work late, regardless of the reason, will receive 2 points off from the first day the assignment is due (calculated as the first 24 hour period following the due date and time), and continuing for 6 days.  Assignments turned in more than 7 days late from the original due date will not be accepted and the student will receive a 0 on the assignment.  The ONLY exception to this penalty will be a doctor's approved note of severe illness requiring overnight hospitilization, etc.  All late deliveries, regardless of cause, including, but not limited to acts of God, war, riot, embargoes, acts of civil or military authority, terrorism, fire, flood, tsumami, earthquakes, hurricanes, tropical storms or other natural disasters, fiber cuts, strikes, shortages in transportation, facilities, fuel, energy, labor or materials, failure of the telecommunications or information services infrastructure, hacking, SPAM, or any failure of a computer, server or software, including Y2K errors or omissions, the common cold, the flu, asthema, stomach flu, work, family, childcare, golf, vacation, and other life related exceptions and necessities, while unfortunate, will still incur the penalty.  It is assumed that you will have plenty of time to work on each assignment, and that a penalty will have little overall effect on a student's final grade, unless lateness is chronic or other grades are poor, in which case, of course, the penalty will be more cumbersome.  If you are late with a delivery and therefore receive a penalty (which you will) and it's an isolated incident and the rest of your work is excellent, the penalty should be innocuous. 

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)
TWB* Alexander, The Timeless Way of Building *
APL* Alexander, A Pattern Language* (References are to chapters, not pages)
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 *
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.*
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*
Nii86.1
H. Penny Nii. The Blackboard Model, Part One. AI Magazine 7(3):38-53*
Nii86.2
H. Penny Nii. Blackboard Application Systems, Part Two. AI Magazine 7(4):82-107.*

 
 
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
UML, 1-2
 
 

 

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



Class 2

January 12

Object Oriented Analysis

Introduction to Patterns and Pattern Languages
Use Cases
Class Identitication Strategies (CRC, etc.)
Data Modeling vs. Class Modeling:  Problems and Challenges

Patterns: 

Singleton (demonstration presentation)
UML ch. 16-17
OS, ch. 3-4
TPH, pp. 1-13; 121-129; 237-319; 333-359 ; 407-422
TWB 10,11,16




Class 3

January 23 (note that it's FRIDAY)

Classification and Abstraction

Analysis Modeling

Programming Paradigms
Classes and Objects
State and Behavior 

UML ch. 4-8


Student Pattern Presentations:

Class Adapter (Ed Kim), Template Method (Mirza Bay)
Riel, ch. 1
Aristotle, Topics, Book 1:  Parts 4-7 (online)
PLOP1, ch. 16

Class 4

January 26

Models and Modeling Languages:  Structural Aspects Static/Structural Modeling
Inheritance and Abstraction
Aggregation and Composition
Introduction to Static Modeling in UML


UML ch. 9

Student Pattern Presentations:

Object Adapter (Danny Leavitt)
 

TWB
13,14,16,21,22
Riel, 4-6
OOAD, 2,3
Riel,  2,3

Modeling Laboratory I due
Class 5

February 2

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. 10-14

Student Pattern Presentations:

Prototype (Yirang Song), Facade(Seung Ha), Builder (Tim Holfer)

Riel,  7
OOAD, ch. 4
TMM 13




Class 6

February 9

Models and Modeling Languages: 
Behavioral Aspects:
Polymorphism & Language Implementations
UML ch. 15, 18 (cont)

Student Pattern Presentations:

Abstract Factory (Tom Hoch), Factory Method (Jeven Adami), Chain of Responsibility (Benin Fitzpatrick)
APL
112,115,159
Riel, 9
Rec92

Class 7

February 16

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. 19, 20, 21
SA, 2-3

Student Pattern Presentations:


Command (Rick Bradshaw), Composite (Yeugeny Keyser), Iterator (Rhea Ghosh)

APL 168, 169, 173
Boo86

Modeling Laboratory II due



Class 8

February 23

Process Management Methodologies

The Rational Unified Process
XP and Agile Methods
The Capability Maturity Model
et. al.

Exam Review

OS, ch. 5-6  

Student Pattern Presentations: 

Bridge (Bob Smith), Mediator (Kensho Tsuchihashi), Observer (Rubal Gupta)

TMMM ch. 1,2,4,7,16,17
GAO95
APL 180, 203,  247
TPH 361-368; 375-389

March 2 EXAM
Class 9

March 9


NO CLASS



Modeling Laboratory III due
Class 10
March 16
Architectural Considerations:
Frameworks and Component Architectures
Tiered Architectures
Patterns:  Layers and Blackboard
SA, ch 5-8
OS, ch. 7

Student Pattern Presentations:

Visitor (Qing Zang), Strategy (Veena Linganna), State (Mike Burton), Decorator (Eric Cosselman), Flyweight (Matthew Nam), Memento (David Selvaraj)
Nii86.1
Nii86.2


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/
 


Pattern Signup Schedule is here