The University of Chicago
Department of Computer Science

CSPP 51050 Course Syllabus

Object Oriented Architecture:  Patterns, Technologies, Implementations

Spring 2014

DRAFT:  Do Not Purchase Any Books Yet

for scheduling purposes only


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:

Assistant TA:   

Grader:           

 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

Enterprise Integration Patterns, Hohpe & Woolf, Addison Wesley, 2004, ISBN: 0321200683

ActiveMQ in Action, Snyder, et. al., Manning, 2011, ISBN:  9781933988948

Camel in Action, Ibsen & Anstey, Manning, 2011, ISBN:  9781935182368

Texts: Required Ready Reserve Reading List (available in Eckhart Library)

Patterns in Software:  Tales from the Software Community, Richard Gabriel, Oxford, 1998, ISBN:  0195121236

Texts: Highly Recommended 

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

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

Texts: Recommended

CONTexts :

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

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

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

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:

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


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

II. PREREQUISITE:

Basic familiarity with Java will be assumed.   Specifically, you will need to know enough Java to be able to package up software and run it within a given CLASSPATH.  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 for graduating students on June 3rd, 2014, on June 10th 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.  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
Booch
Object Oriented Analysis and Design, 3rd Ed.
Gamma Design Patterns
Hohpe & Woolf
Enterprise Integration Patterns
Ibsen & Anstey
Camel in Action

*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 1 (NO CLASS)
NO CLASS MEETING
First Class RESCHEDULED to April 8th...See below



Class 1
(Rescheduled)
April 8
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
(Makeup on Friday)
April 11
5:30 PM - 8:20 PM
Review of OO Fundamentals:  Abstraction, Inheritance
The Class and Object Models
Composition
Introductory Design Patterns:  Singleton, Template Method, State
Booch:  chapters 5, Appendix A
Gamma: Singleton, Template Method, State
Read Using Subversion to Submit Work, and complete Homework 0.
Class 3
April 15
Review of OO Fundamentals:  Polymorphism
Design Patterns:  Adapters, Proxies, Strategies, Facades, Mediators, Observers


Gabriel: pp. v-xviii; 3-31, 33-55.
Gamma:  Class and Object Adapter, Proxy, Strategy, Facade, Mediator, Observer
Singleton and Template Method in language(s) of choice Homework 1
Class 4
April 22
Introduction to Architectural Integration Patterns: 
Architectural Patterns:  Messages, Pipes and Filters,  Message Queues, Message Channels, Message Endpoints
Hohpe & WoolfPipes & Filters, Message Channel, Message, Messaging, Message Endpoint
Gabriel: pp. 57-95
Composite, Visitor and Iterator in language of choice
Lab Deliverable 1 Assigned
Class 5
April 29
Architectural Patterns:  Publish/Subscribe, Point-to-Point Messaging, Remote Procedure Calls, Message Router, Message Translator
Hohpe & Woolf:  Publish-Subscribe Channel, Channel Adapter, Message Translator, Point to Point Channel, Remote Procedure Invocation
Gamma:  Proxy
Gabriel: pp. 135-138
Message Queues, Pipes and Filters in language of choice in Homework 2
Class 6
May 6
Messaging Patterns: Brokers and Buses (Process Manager and Message Broker),
Fundamental Patterns:  Stubs & Skeletons, RPC
Architectural Pattern Implementations:  Java Messaging & JMS,
Introduction to Apache ActiveMQ & Camel
Camel File/FTP Components

Hohpe & Woolf: Message Broker, Message Bus, Process Manager
Ibsen & Anstey:  1-3; 12-13

Camel only simple file transfer dir to dir
Class 7
May 13
Introduction to Camel Components (Web Services, Databases, Aggregators, Splitters, Dynamic Routers) Hohpe & Woolf: Message Dispatcher, Content Filter, Content-Based Router, Dynamic Router, Message Dispatcher,  Message Filter, Splitter, Smart Proxy, Messaging Gateway
Ibsen & Anstey:  7-8; 13
Camel move of files from an http://site to an ActiveMQ message queue with 2 consumers (since p2p, only one consumer will receive each message)
Class 8
May 20

Integration Platforms:  ActiveMQ, Camel
JDBC made easy
Final Project Proposal Review (11:00 pm, May 22nd)
Ibsen & Anstey:  4-5
Camel move from a database table with multiple messages to a topics with 3 pub/sub consumers
Class 9
May 27
Messaging Patterns:  Advanced topics:  Transactions, Concurrency, Scalability
Ibsen & Anstey:  9-12; 14
Gabriel: pp. 99-131
No Homework assigned
Lab Deliverable 2 Due
Class 10
June 3
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 10
Final Project Review for non-graduating students: 5:30 - 8:30 PM
Lab Deliverable 3 Due

Homework 4 Due


Final Presentation Schedule