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

Grader:                 TBD.

 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