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 |
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 |
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 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 |
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 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 |
|
Class 8
February 23 |
Process Management
Methodologies
The Rational Unified Process |
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/