The University of Chicago
Department of Computer Science

CSPP 51050 Course Syllabus
Spring 2013


Instructor:        Mark Shacklette
Office:              Ryerson 175
Office Hours:    By Appt.

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

 Teaching staff:

Lead TA: Sean Laguna (slaguna [at] cs [dot] uchicago [dot] edu)
                 Office Hours: Wednesday 7:00pm – 8:30pm and Sunday 7:00pm – 8:30pm
                 CSPP Lab

Assistant TA:    Maria Power (mpower at anl.gov or mpower at cs.uchicago.edu)
                        Office Hours: Tuesday 4pm – 5:30 and after class by appointment
                        CSPP Lab
 

Grader:            Pete Ramirez ()

 Course Home Page: http://www.cs.uchicago.edu/~mark/51050/
 
 
 
SUBJECT COURSE TITLE TIME BUILDING
324 51050 Object Oriented Architecture:  Patterns, Technologies, Implementations Tuesday, 5:30pm Ryerson 251

 

I. TEXT AND MATERIALS
 

Texts: Required (Basic Knowledge of Java OR C++ is assumed)

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

Object Oriented Analysis and Design, 3rd Ed., Grady Booch, Addison Wesley, 2007, ISBN:  020189551X

Pattern-Oriented Software Architecture:  A System of Patterns, Buschmann, Meunier, et. al., Wiley, 1996, ISBN: 0471958697

The Design of Design:  Essays From a Computer Scientist, Brooks, Addison-Wesley, 2010, ISBN:  0201362988

NASA Technical Memorandum:  The Potential Application of the Blacboard Model of Problem Solving to Multidisciplinary Design (on the cluster at ~mark/pub/51050/RequiredReading)
NASA.Blackboard.Systems.pdf

Buschmann et. al., A Runtime Type Information System for C++, (Meta.Information.Protocol.RTTI.for.C++.ps available on the cluster at ~mark/pub/51050/RequiredReading)

Ramnivas Laddad, A Real-World Perspective of AOP (Real.World.AOP.pdf available on the cluster at ~mark/pub/51050/RequiredReading)

Adam Przybyłek, Where the Truth Lies:  AOP and Its Impact on Software Modularity (Modularity.and.AOP.pdf available on the cluster at ~mark/pub/51050/RequiredReading)

Black, et. al. , Microkernel Operating System Architecture and Mach (Microkernel.Operating.System.Architecture.and.Mach.pdf available on the cluster at ~mark/pub/51050/RequiredReading)

QNX Neutrino OS System Architecture (Microkernel.System.Architecture.pdf available on the cluster at ~mark/pub/51050/RequiredReading)

Texts: Highly Recommended 

Refactoring to Patterns, Kerievsky, Addison Wesley, 2004, ISBN: 0321213351


Texts: Recommended

CONTexts :

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

Blackboard Systems, Englemore & Morgan, Addison-Wesley, 1988, ISBN:  0201174316

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

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

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

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

Refactoring:  Improving the Design of Existing Code, Martin Fowler, et. al., Addison Wesley, 1999, ISBN: 0201485672

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:

CLOS:

The Little Lisper, 3rd Ed., Daniel Friedman, et. al., Prentice Hall, 1998, ISBN: 0023397632

Java Precisely, Second Edition. Peter Sestoft, September 2005. MIT Press, ISBN: 0262693259

Land of Lisp:  Learn to Program in Lisp, One Game at a Time!. Barski 2010, No Starch Press, ISBN: 1593272812

Object-Oriented Programming in Common Lisp , Sonja Keene, Addison Wesley, 1989, ISBN: 0201175894

Practical Common Lisp, Peter Seibel, Apress, 2005, ISBN:  1590592395

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

SMALLTALK:

On to Smalltalk, Patrick Winston, Addison-Wesley, 1998, ISBN: 0201498278

ANSI Common Lisp, Paul Graham., Prentice Hall, 1996, ISBN: 0133708756

Smalltalk, Objects, and Design, Chamond Liu, toExcel, 2000, ISBN: 1583484906

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 of the Metaobject Protocol, Gregor Kiczales, MIT, 1991, ISBN: 0262610744

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

JAVA:

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

The Well-Grounded Java Developer, Evans et. al., Manning, 2012, ISBN: 1617290068

RUBY:

Eloquent Ruby, Olsen, Addison-Wesley, 2011, ISBN: 0321584104

Practical Object-Oriented Design in Ruby:  An Agile Primer, Metz, Addison-Wesley, 2012, ISBN: 0321721330

Design Patterns in Ruby, Olsen, Addison-Wesley, 2007, ISBN: 0321490452

The Well-Grounded Rubyist, Black, Manning, 2009, ISBN: 1933988657

PYTHON:

Python Programming, Zelle, Franklin, Beedle, 2010, ISBN: 1590282418

Python Essential Reference, 4th Ed., Beazley, Franklin, Beedle, 2009, ISBN: 0672329786

Python Cookbook, Martelli et. al., O'Reilly, 2005, ISBN: 0596007973

Python 3 Object Oriented Programming, Phillips, Packt, 2010, ISBN: 9781849511261

The Quick Python Book, 2nd. ed., Ceder, Manning Pub., 2010, ISBN: 193518220X

C#

C# 5.0 in a Nutshell, 5th ed., Albahari & Albahari, O'Reilly, 2012, ISBN: 1449320104

C# in Depth, 2nd ed., Skeet, Manning Pub., 2012, ISBN: 1935182471

C++

Modern C++ Design:  Generic Programming and Design Patterns Applied, Alexandrescu, Addison-Wesley, 2001, ISBN:  0201704315

Accelerated C++, Koenig & Moo, Addison-Wesley, 2000, ISBN:  020170353X

Programming:  Principles and Practice Using C++,  Stroustrup, Addison-Wesley, 2009 (beginner's introduction to C++ programming by l'homme lui-mÍme)

Modern C++ Design: Generic Programming and Design Patterns Applied, Andrei Alexandrescu, Addison-Wesley, 2001

Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference, Langer and  Kreft, Addison-Wesley, 2000

C++ Cookbook, Stephens et. al., O'Reilly, 2006


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++, python, ruby) will be assumed.   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. All work will be submitted using Subversion, a version-control system that allows us to easily view files and folders that you create. You will not have to e-mail your files to the instructor, TAs, or grader, or even submit them online. Read this page in order to learn about how all of this will work.
 

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:                          34 points
3 Lab Deliverables:                30 points (10 points each) 
4 Homework Assignments:    16 points (4 points each)
Final Exam:                            20 points

Course Total:                         100 pts

Grading scale: 90-100 = A; 80 -89 = B; 70-79=C, etc.

Homework assigned will be graded on a 4-point basis.  Lab Deliverables will be graded on a 10-point basis.  Lab deliverable due dates are noted on the syllabus schedule.  All labs and homework are due by 5:00 pm on the due date.

All assignments are due as specified on this syllabus and supporting lab pages.  Students who turn in lab assignments 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 point loss will continue until there are no more points available to subtract (after 5 days).   Lab Assignments will not be accepted after 10 days and the student will receive a 0 on the assignment.  For example, if you turn in a Lab Assignment 3 days late, you will lose 6 out of 10 points before grading begins.

Students who turn in homework assignments late, regardless of the reason, will receive 1 point off from the first day the assignment is due (calculated as the first 24 hour period following the due date and time), and point loss will continue until there are no more points available to subtract (after 4 days). Homework Assignments will not be accepted after 4 days and the student will receive a 0 on the assignment.  For example, if you turn in a Lab Assignment 3 days late, you will lose 3 out of 4 points before grading begins.

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, typhoons, 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, work travel, family, childcare, golf, badminton, cricket, croquet, dodgeball, football (soccer), lacrosse, other sporting events, vacation, and other life-related exigencies and necessities, while fortunate or unfortunate as the case may be, will still incur the penalty.  It is assumed that you will have plenty of time to work on each assignment, and that an individual penalty or two 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 if you are late for any reason) and it's an isolated incident and the rest of your work is excellent, the penalty should be innocuous. 

The course project will be due the final day of class for graduating students on June 4th, 2013, on June 4th or June 11th, 2013 for non-graduating students (you will be informed on which date your project is due).

NB:  The end of the quarter is the time at which the final grade you have earned through your work in the quarter is recorded with the registrar.  It is not the time at which you begin negotiations with Professor Shacklette for ad hoc extra credit opportunities.  There is no extra credit offered in this course, either at the beginning or at the end.  If you are disatisfied with the grade you have earned at the end of the quarter, your only options will be to retake the course the next time it is offered, or accept the grade you earned.

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
NASA*  NASA Technical Memorandum:  The Potential Application of the Blackboard Model of Problem Solving to Multidisciplinary Design, July, 1989
Booch
Object Oriented Analysis and Design, 3rd Ed.
Brooks The Design of Design
Gamma Design Patterns
Gabriel Patterns in Software
Buschmann et. al.* A Runtime Type Information System for C++
Przybyłek* Where the Truth Lies:  AOP and Its Impact on Software Modularity
Laddad* A Real-World Perspective of AOP
Black*

Microkernel Operating System Architecture and Mach

QNX*
QNX Neutrino OS System Architecture
Dijkstra*
Notes on Structured Programming Dijkstra.Structured.Programming.pdf

*Articles starred may be found on the cluster under my pub directory under required.reading
 
Class/Date Lecture Topics Required Reading Schedule Homework  (due one week after assignment)
Class 1
April 2
Introduction to Object Oriented Architecture, Design, and Patterns
Introduction to Design Patterns
Gamma: chapters 1 & 2
Booch:  chapters 1-4
No Homework assigned
Class 2
April 9
Review of OO Fundamentals:  Abstraction, Inheritance

Booch:  chapters 5, Appendix A
Dijkstra
Setup:  (click for Smalltalk or Lisp ).
Read Using Subversion to Submit Work, and complete Homework 0.
Class 3
April 16
Review of OO Fundamentals:  The Class and Object Models
Composition, Aspect Oriented Programming
Design Patterns:  Singleton and Template Method
Gamma: Singleton, Template Method
Przybyłek, Laddad
Singleton and Template Method in language(s) of choice Homework 1
Class 4
April 23
Polymorphism
Design Patterns:  Composite, Iterator, Visitor, Class & Object Adapter, State, Abstract Factory
, Bridge
Gabriel: pp. v-xviii; 3-31, 33-55.
Gamma:  Composite, Iterator, Visitor, Class & Object Adapter, State, Abstract Factory, Bridge
Composite, Visitor and Iterator in language of choice
Lab Deliverable 1 Assigned
Class 5
April 30
Introduction to Architectural Patterns
Architectural Patterns:  Pipes and Filters, Publish-Subscribe & Message Queues
Buschmann:  Publish-Subscribe, Message Queues, Pipes & Filters
Gabriel: pp. 57-95
Message Queues, Pipes and Filters in language of choice in Homework 2
Class 6
May 7
Architectural Patterns:  Broker & CORBA Buschmann: Broker  
Gamma:  Proxy
Gabriel: pp. 135-138
Broker in language of choice
Lab Deliverable 1 Due
Lab Deliverable 2 Assigned
Class 7
May 14
Architectural Patterns:  Layers, Facade, Microkernel
Design Patterns:  Strategy
Buschmann:  Layers,  Microkernel, Facade, Layers
Buschmann et. al., A Runtime Type Information System for C++
Black, QNX
Homework 3 Layers, Facade, Strategy
Class 8
May 21
Architectural Patterns:  Blackboard, Reflection & MVC
Final Project Proposal Review (11:00 pm, May 22nd)
Buschmann:  Blackboard, MVC, Reflection
NASA
Booch:  Chapter 10
Gabriel: pp. 99-131
Lab Deliverable 3 Assigned
MVC in language of choice in Homework 4

Homework 3 Due

Class 9
May 28

Thinking about Design Thinking
Brooks, Chapters 1-3; 8, 11-15; 19-21; 24
No Homework assigned
Lab Deliverable 2 Due
Class 10
June 4
Final Exam: 5:30 - 6:30 PM

Final Project Review for graduating students and selected non-graduating students: 6:30 - 9:30 PM


 
Class 11
June 11
Final Project Review for non-graduating students: 5:30 - 8:30 PM
Lab Deliverable 3 Due
Saturday, June 15th 11:59 PM

Homework 4 Due Friday, June 14th 11:59 PM


Final Presentation Schedule