The University of Chicago
Department of Computer Science
MCPS 51050 Course Syllabus
Object Oriented Architecture: Patterns, Technologies, Implementations
Spring 2014
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:
Home TA Paul Bossi (bossi-at-uchicago-dot-edu)
Graduate TAs: George Yaconi
(george.yaconi-at-gmail-dot-com) and John Hadidian-Baugher
(jhadidianbaugher-at-gmail-dot-com)
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 277 |
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: 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
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 enterprise integration patterns
in current common industry use
B. Create code implementations of selected patterns
C. Be able to discuss implementation trade-offs of certain
patterns with respect to others
D. Provide further assisted learning in object oriented design
E. Understand and be able to implement code within enterprise messaging systems
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
8 Lab
Deliverables:
32 points (4 points each)
Final Exam:
34 points
Course Total: 100 pts
Grading scale: 90-100 = A; 80 -89 = B; 70-79=C, etc.
Labs assigned will be graded on a 4-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 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). Lab
Assignments will not be graded 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 time to work on each assignment, and that an individual penalty point 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, 2014 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 |
Snyder |
ActiveMQ in Action |
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 |
Read Using Subversion to Submit Work Complete the Introductory Lab |
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, |
Booch: chapters 5, Appendix A Gamma: Singleton, Template Method, Composite, Strategy |
Lab 1 (Singleton, Template Method) |
Class 3 April 15 |
Review of OO Fundamentals: Polymorphism Design Patterns: Adapters, Proxies, State, Mediators, Observers, Composite, Strategy |
Gabriel: pp. v-xviii; 3-31, 33-55. Gamma: Composite, Strategy, Class and Object Adapter, Proxy, State, Mediator, Observer |
Lab 2 (Composite, Strategy) Macaulay Duration |
Class 4 April 22 |
Introduction to Architectural Integration Patterns: Architectural Patterns: Messages, Pipes and Filters, Message Queues, Message Channels, Message Endpoints |
Hohpe & Woolf: Pipes & Filters, Message Channel, Message, Messaging, Message Endpoint Gabriel: pp. 57-95 |
Lab 3 (Message Queues and Pipes and Filters) |
Class 5 April 29 |
Integration Issues & The Canonical Data Model Architectural Patterns: Publish/Subscribe, Point-to-Point Messaging, Remote Procedure Calls, Message Router, Message Translator, Request-Reply |
Hohpe & Woolf: Publish-Subscribe
Channel, Channel Adapter, Message Translator, Point to Point Channel,
Remote Procedure Invocation, Request-Reply, Cannonical Data Model Gamma: Proxy Gabriel: pp. 135-138 |
Lab 4 (Layers, Facade & Strategy) |
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 Domain Specific Languages (DSL) Introduction to Apache ActiveMQ & Camel |
Hohpe & Woolf: Message Broker, Message Bus, Process Manager Snyder: 1-3 |
Lab 5 Setup and validation of Apache tools and maven |
Class 7 May 13 |
Camel File/FTP Components Introduction to Camel Components (Web Services, Databases, Aggregators, Splitters, Dynamic Routers and Routing Slips) |
Hohpe & Woolf: Message
Dispatcher, Content Filter, Content-Based Router, Dynamic Router,
Message Dispatcher, Message Filter, Splitter, Smart
Proxy, Messaging Gateway Snyder: 4-5; 11.7 Ibsen & Anstey: 1-3; 7-8; 12-13 |
Lab 6 |
Class 8 May 20 |
Integration Platforms: Introduction to Camel Components (Aggregators, Splitters, Load Balancers, Routing Slip) Final Project Proposal Review (11:00 pm, May 20th) |
Ibsen & Anstey: 4-5 Hohpe & Woolf: Aggregator, Splitter, Routing Slip |
Lab 7 |
Class 9 May 27 |
Messaging Patterns: ActiveMQ, Camel JDBC made easy Advanced topics: Transactions, Concurrency, Scalability |
Ibsen & Anstey: 9-12; 14 Gabriel: pp. 99-131 |
Lab 8 |
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 |
|