The University of Chicago
Department of Computer Science
CSPP 51050 Course Syllabus
Summer 2003
Instructor: Mark Shacklette
Office:
Ryerson 150
Office Hours: Monday, 3:30 pm - 5:30 pm
email: mark@cs.uchicago.edu
(read hourly or so)
mshack@post.harvard.edu (read daily or
so)
Teaching staff:
TA:
Chuang Liu chliu@cs.uchicago.edu
Office Hours:   Monday, 8:30PM-10:00PM, and Wednesday, 7:30PM-9:00PM
Place: Ryerson 177
Course Home Page: http://www.cs.uchicago.edu/~mark/51050/
| SUBJECT | COURSE | TITLE | TIME | BUILDING |
| 324 | 51050 | Object Oriented Architecture: Patterns, Technologies, Implementations | Monday, 5:30pm | Ryerson 277 |
I. TEXT AND MATERIALS
Texts: Required (Basic Knowledge of Java OR C++ is assumed)
Pattern-Oriented Software Architecture: A System of Patterns, Buschmann, Meunier, et. al., Wiley, 1996, ISBN: 0471958697
Refactoring: Improving the Design of Existing Code, Martin Fowler, et. al., Addison Wesley, 1999, ISBN: 0201485672
Design Patterns, Gamma, et. al., Addison Wesley, 1995, ISBN: 0201633612
Texts: Alternative Required
IF (and only IF) you're interested in working with Smalltalk coding:
Smalltalk, Objects, and Design, Chamond Liu, toExcel, 2000, ISBN: 1583484906
OR:
On to Smalltalk, Patrick Winston, Addison-Wesley, 1998, ISBN: 0201498278
IF (and only IF) you're interested in working with CLOS (Lisp) coding:
ANSI Common Lisp, Paul Graham., Prentice Hall, 1996, ISBN: 0133708756
Object-Oriented Programming in Common Lisp:
A Programmer's Guide to CLOS, Sonja Keene., Addison Wesley, 1989,
ISBN: 0201175894
Texts: Recommended
Design Related Texts :
The Patterns Handbook, Linda Rising, ed., Cambridge, Cambridge University Press, 1998
Pattern Languages of Program Design, Vol. 1, James Coplien, DougSchmidt, Reading, Mass: Addison-Wesley, 1995
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis, Brown, et. al., Wiley, 1998, ISBN: 0471197130
Object-Oriented Software Construction, Second Edition , Bertrand Meyer, Prentice Hall, 1997, ISBN: 0136291554
H. Penny Nii. Blackboard Systems. AI Magazine 7(3):38-53 and 7(4):82-107.
The Timeless Way of Building, Christopher Alexander, New York: Oxford, 1979
A Pattern Language, Christopher Alexander, et. al., New York: Oxford, 1977
Software Architecture: Perspectives on an Emerging Discipline, Shaw & Garlan, Prentice Hall, 1996, ISBN: 0131829572
Object Solutions, Grady Booch, Addison Wesley, 1996, ISBN: 0137372485
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
UML Distilled, Martin Fowler et. al., Addison Wesley, 1999, ISBN: 0201325632
Object-Oriented Analysis and Design, Grady Booch, Benjamin Cummings, 1994, ISBN: 0805353402
Use Case Driven Object Modeling with UML
, Doug Rosenberg, et. al., BAddison Wesley, 1999, ISBN: 0201432897
Language Related Texts:
The Little Lisper, 3rd Ed., Daniel Friedman, et. al., Prentice Hall, 1998, ISBN: 0023397632
Object-Oriented Programming in Common Lisp , Sonja Keene, Addison Wesley, 1989, ISBN: 0201175894
ANSI Common Lisp., Paul Graham, Prentice Hall, 1996, ISBN: 0133708756
Common Lisp, Guy Steele, et. al., Digital Press, 1990, ISBN: 1555580416 (online version at:http://www.ida.liu.se/imported/cltl/cltl2.html )
Lisp: A Gentle Introduction to Symbolic Computation , David Touretzky, Harper & Rowl, 1984, ISBN: 006046657X
The Art of the Metaobject Protocol, Gregor Kiczales, MIT, 1991, ISBN: 0262610744
The Smalltalk Developer's Guide to VisualWorks , Tim Howard, et. al., Prentice Hall, 1995, ISBN: 013442526X
Smalltalk: An Introduction to Application Development Using VisualWorks, Trevor Hopkins, et. al., Prentice Hall, 1995, ISBN: 0133183874
Smalltalk by Example: The Developer's Guide
, Alec Sharp, McGraw Hill, 1997, ISBN: 0079130364
Smalltalk Best Practice Patterns, Kent Beck, Prentice Hall, 1996, ISBN: 013476904X
The Smalltalk Developer's Guide to VisualWorks , SIGS Books, 1995, ISBN: 1884842119
The Art and Science of Smalltalk: An Introduction to Object-Oriented Programming Using VisualWorks, Simon Lewis, Prentice Hall, 1995, ISBN: 0133713458
Smalltalk 80: The Language,Adele Goldberg and David Robson, Addison-Wesley, 1989, ISBN: 0201136880
Beginning Java 2 , Horton, Wrox Press, 1999, ISBN: 1861002238
Thinking in Java , Bruce Eckel, Prentice Hall, 1998, ISBN: 0136597238
Java I/O
, Harold, O'Reilly, 1999, ISBN: 1565924851
Texts: Ready Reserve Reading List (available in Eckhart Library)
Patterns in Software: Tales from the Software
Community, Richard Gabriel, Oxford, 1998, ISBN: 0195121236
II. PREREQUISITE:
Basic familiarity with one object oriented language (e.g., Java, C#, C++) will be assumed. You should have taken CSPP50123 prior to attempting this class or have acquired commensurate experience. Basic familiarity with UML will be assumed.
III. COURSE DESCRIPTION
See main course page.
IV. LEARNING OBJECTIVES
This course will enable students to:
A. Recognize and define design and architectural patterns
in current common industry use
B. Create code implementations of these patterns
C. Be able to discuss implementation trade-offs of certain
patterns with respect to others
D. Provide further assisted learning in object oriented
languages
E. Understand and be able to implement common code refactorings
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 homework assignments.
VII. OTHER COURSE INFORMATION
Attendance:
No formal attendance taken. There may be information presented in class that is not in the texts. You will find the lectures helpful in doing the laboratory exercises.
Make-up Work:
If you miss a lab deliverable, you will need to speak with the instructor ASAP (meaning within 2 days) .
Students are expected to read the assigned texts before class in order
to be able to full participate in the discussions and lab activities.
VIII. METHOD OF EVALUATING STUDENT PROGRESS
Assigned work evaluated as follows:
Final Project:
38 points
3 Lab Deliverables:
30 points (10 points each)
4 Homeworks:
32 points (8 points each)
Course Total: 100 pts
Grading scale: 90-100 = A; 80 -89 = B; 70-79=C, etc.
Homework assigned will be graded on a 8-point basis. Lab Deliverables will be graded on a 10-point basis. Late assignments will be penalized 5 points PER DAY, with each day beginning with the first 24 hour period after the due date & time. There will be no exceptions. Lab deliverable due dates are noted on the syllabus schedule. All homeworks are due by 5:00 pm of the following Monday.
The course project will be due the final day of class for graduating students on August 17th, 2003, on August 25th for non-graduating students.
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.
The following abbreviations reference the following works:
| Abbreviation | Text |
| Buschmann | Pattern-Oriented Software Architecture |
| Fowler | Refactoring |
| Gamma | Design Patterns |
| Gabriel | Patterns in Software |
| Class/Date | Lecture Topics | Required Reading Schedule | Homework (due one week after assignment) |
| Class 1 June 23 |
Introduction to Architecture and Design Patterns Quick review of selected patterns |
Gamma: chapters 1 & 2 | No Homework assigned |
| Class 2 June 30 |
Design Patterns: Singleton and Template Method, Bridge, Abstract Factory | Gamma: Singleton, Template Method and Bridge, Abstract
Factory Gabriel: pp. v-xviii; 3-31. |
Setup: (click for Smalltalk
or Lisp
). Singleton and Template Method in language(s) of choice Homework 1 |
| Class 3 July 7 |
Design Patterns: Composite, Visitor and Iterator, State, Factory Method | Fowler, Preface and chapters 1-4 Gamma: Composite, State, Visitor and Iterator, Factory Method Gabriel: pp. 33-55 |
Composite, Visitor and Iterator in language of choice Lab Deliverable 1 Assigned |
| Class 4 July 14 |
Introduction to Architectural Patterns Architectural Patterns: Layers, Pipes and Filters, Message Queues |
Fowler: chapters 13-15 Buschmann: Layers, Pipes & Filters Gabriel: pp. 57-95 |
Layers, Pipes and Filters in language of choice in Homework 2 |
| Class 5 July 21 |
Architectural Patterns: Broker and Publish-Subscribe | Buschmann: Broker and Publish-Subscribe
Gabriel: pp. 135-138 |
Broker in language of choice Lab Deliverable 1 Due Lab Deliverable 2 Assigned |
| Class 6 July 28 |
Architectural Patterns: Microkernel and Reflection | Buschmann: Microkernel and Reflection | Homework 3 Reflection |
| Class 7 August 4 |
Architectural Patterns: Blackboard
& MVC Final Project Proposal Review |
Buschmann: Blackboard, MVC Gabriel: pp. 99-131 |
Lab Deliverable
3 Assigned MVC in language of choice in Homework 4 |
| Class 8 August 11 |
Refactoring Concepts: Revisiting Existing Design and Code | Fowler: chapters 5-8 |
No Homework assigned Refactoring exercises using Together Control Center 6.0 Lab Deliverable 2 Due |
| Class 9 August 18 |
Antipatterns: Architectural and Design Gotchas
Final Project Review for graduating students |
Fowler: chapters 9-12 | No Homework assigned Lab Deliverable 3 Due |
| Class 10 August 25 |
Final Project Review for non-graduating students | No Homework assigned |