The University of Chicago
Department of Computer Science
MPCS 51050 Course Syllabus
Object Oriented Architecture: Patterns, Technologies,
Implementations
Online Offering Only - No Hyde Park Campus Class
Spring 2024
Instructor: Mark
Shacklette
Office:
Online
Only
Office Hours: Monday 3:00 PM - 4:00 PM & by Appt. (online/zoom
only)
email: mark@cs.uchicago.edu
mshack@post.harvard.edu
Teaching staff:
TAs:
EVERYONE: Our discussion platform has moved from Piazza to Ed Discussion via Canvas. Please access Ed here. An Ed Discussion Quickstart guide is located here.
SUBJECT | COURSE | TITLE | TIME | BUILDING |
324 | 51050 | Object Oriented Architecture: Patterns, Technologies, Implementations | Monday, 4:10pm-6:00 PM |
ONLINE |
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, 2nd Ed., Ibsen & Anstey, Manning, 2018, ISBN: ISBN 9781617292934
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:
Because of Java-specific technologies used during the second half of the class, this class will be a programming class in Java (only). In order to succeed in this class, programming experience with Java will be assumed from day one. This is not a class designed for you to learn Java, so you need to have Java coming in day one. UML concepts will be covered.
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 https://masters.cs.uchicago.edu/sites/masters/files/uploads/Academic%20Honesty%202016.pdf.
More guidelines can be found here: https://masters.cs.uchicago.edu/sites/masters/files/uploads/MPCS%20Academic%20Honesty%20for%20Students.pdf.
GENERATIVE AI TOOLS: Problem solving is truly the
core skill that needs to be developed. This can only be achieved
through determination and perseverance; there are no shortcuts.
Finishing assignments on time and getting the correct answer are
meaningless if you do not fully understand what you are
submitting. In computer science, there are many ways to accomplish
the same task, and solutions will vary by levels of exposure,
experience, and expertise. By not allowing a natural progression
of skills you risk undermining your long-term success in this
field. THEREFORE: In this
course, we will be developing skills and knowledge that are
important to discover and practice on your own. Because
use of AI tools inhibits development of these skills and
knowledge, students are not allowed to use any AI tools,
such as (but not limited to) ChatGPT or DallE 2, in this
course. Students are expected to present work that is their
own without assistance from others, including automated tools.
If you are unclear if something is an AI tool, check
with Professor Shacklette or a TA. Using AI tools for
any purposes in this course will violate the University’s
academic integrity policy and will incur subsequent, and
likely severe, penalties.
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.
Note for this online course:
By attending course sessions, students acknowledge that:
A. They will not: (i) record, share, or disseminate University of
Chicago course sessions, videos, transcripts, audio, or chats;
(ii) retain such materials after the end of the course; or (iii)
use such materials for any purpose other than in connection with
participation in the course.
B. They will not share links to University of Chicago course
sessions with any persons not authorized to be in the course
session. Sharing course materials with persons authorized to be in
the relevant course is permitted. Syllabi, handouts, slides, and
other documents may be shared at the discretion of the instructor.
C. Course recordings, content, and materials may be covered by
copyrights held by the University, the instructor, or third
parties. Any unauthorized use of such recordings or course
materials may violate such copyrights.
D. Any violation of this policy will be referred to the Area Dean
of Students.
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:
See below.
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:
51 points
7 Lab
Deliverables:
49
points (7 points each) (Note Intro lab is pass/fail)
Course Total: 100 points
Labs assigned will be graded on an 7-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 will receive a 3 day grace period during which no penalties
will be applied (beginning from the date and time the assignment
was due). All assignments turned in more than 72 hours after
the due date/time will receive 2 points off beginning from the
fourth day after the assignment is due, with an additional 2 point
loss per day until there are no more points available to subtract
(after 7 days). Lab Assignments will not be graded
after 7 days and the student will receive a 0 on the
assignment. For example, if you turn in a Lab Assignment 5
days late, you will lose 4 (2 + 2) out of 7 points before
grading begins.
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 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
all students on Monday, May 20th, 2024.
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 |
Gabriel |
Patterns in Software (Online: https://www.dreamsongs.com/Files/PatternsOfSoftware.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 March 18 |
Introduction to Architectural &
Design, and Patterns Introduction to Design Patterns: Singleton Async: Intro to UML |
Gamma: chapters 1
& 2 [Booch: chapters 1-4] Gamma: Singleton |
Complete the Introductory Lab |
Class 2 March 25 |
Introduction to Architectural Patterns: Pipes & Filters, Layers, Facade Introductory Design Patterns: Template Method Design Patterns: Composite, Iterator, Strategy Async: Advanced UML |
[Booch:
chapters 5, Appendix A] Gamma: Template Method, Composite, Iterator, Strategy Gabriel: pp. v-xviii; 3-31, 33-55. |
Lab 1 (Singleton, Template
Method) |
Class 3 April 1 |
Introduction to Architectural
Patterns: Blackboard, MVC, Reflection Introduction to Architecture Integration Patterns: Observer, Mediator, Message Queue |
Hohpe & Woolf: Chapters 1-3 Hohpe & Woolf: Pipes & Filters, Message Channel, Message, Messaging, Message Endpoint Gabriel: pp. 57-95 Gamma: Class Adapter, Object Adapter, Observer, Mediator, |
Lab 2 (Composite, Strategy) Macaulay Duration |
Class 4 April 8 |
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, Canonical Data
Model Gamma: Proxy, Prototype, State Gabriel: pp. 135-138 |
Lab 3 (Message Queues and Pipes and Filters) |
Class 5 April 15 |
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 Ibsen & Anstey: 1-3 Gamma: Facade, Layers, Builder |
Lab 4 (Layers, Facade & Strategy) |
Class 6 April 22 |
Camel File/FTP Components Introduction to Camel Components (Web Services, Databases, Aggregators, Splitters, Dynamic Routers and Routing Slips) JDBC made easy |
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: 7-8; 12-13 Gamma: Abstract Factory, Factory Method, Chain of Responsibility |
Lab 5 Setup and validation of Apache tools and maven |
Class 7 April 29 |
Integration Platforms: Introduction to Camel Components (Aggregators,
Splitters, Load Balancers, Routing Slip) Final Project Proposal Review (Due 11:00 pm CST) |
Ibsen &
Anstey: 4-5 Hohpe & Woolf: Chapters 6, 9, 12 & 13 Hohpe & Woolf: Aggregator, Splitter, Routing Slip Gamma: Command, Interpreter, Bridge |
Lab 6 |
Class 8 May 6 |
Integration
Platforms: Introduction to
Camel Components (Load Balancers, Routing Slip, etc.) |
Gamma: Visitor, Decorator,
Flyweight, Memento Ibsen
& Anstey: 9-12; 14 Gabriel: pp. 99-131 |
Lab 7 |
Class 9 May 13 |
Integration
Platforms: Introduction
to Camel Components (Additional Patterns &
Cryptography, etc.) |
No Lab--Project
Work |
|
Class 10 May 20 |
Final Project Delivery- All
Students Presentation Schedule |
Final Projects submitted for all students by 4:00 PM | No Lab--Project Work |
Class 11 May 27 No Class |
NO CLASS-MEMORIAL DAY |
EVERYONE: Our discussion platform has moved from Piazza
to Ed Discussion via Canvas. Please access Ed here. An Ed Discussion
Quickstart guide is located here.