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: 

TA:                    Alan Salkanović
Office:               Online Only (see Canvas for TA Zoom meeting rooms)
Office Hours:    Sundays, 10:00 AM - 12:00 PM CST (Chicago Time)
email:                zekija816-at-gmail-dot-com     

TA:                    John Hadidian-Baugher
Office:               Online Only (see Canvas for TA Zoom meeting rooms)
Office Hours:    Thursdays, 6:00 PM - 8:00 PM CST
email:                jhadidianbaugher-at-gmail.com

EVERYONEOur 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


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:

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 & WoolfPipes & 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



EVERYONEOur discussion platform has moved from Piazza to Ed Discussion via Canvas.  Please access Ed here.  An Ed Discussion Quickstart guide is located here.