L L T B H P N Lectures

CSE776 - Design Patterns

Catalog of Design Strategies

image file not found image file not found image file not found

"Design is where science and art break even."
- Robin Mathew

Course Resources:

Syllabus, Lectures
Submitting Projects, Academic Integrity and Grading Policy

Course Scope:

Pattern Presentations and Discussions are the Heart of this Course.

This is a seminar course, based on the book "Design Patterns", Gamma et. al. It is intended to provide a sophisticated look at Object Oriented Design methods with emphasis on conceptual understanding rather than writing a lot of code (this presumes you have already written a LOT of code in CSE681 and CSE687).

Students will make several presentations on patterns from the text and will write a small amount of supporting code. This work is conducted in teams of two or three students each. The presenting students and I jointly lead a discussion of each pattern following its presentation.



CSE681 - Software Modeling and Analysis   or   CSE687 - Object Oriented Design
are required prerequisites. No exceptions.


A few of you may be scheduled for presentations in the section you are not registered for. That is necessary to balance the number of presenters in each section so that everyone gets more than one presentation. If you are one of those and have a class conflict see the instructor.

Required Texts and Notes:

  1. Design Patterns, Elements of Reusable Object-Oriented Software, Erich Gamma, et. al., Addison-Wesley, 1994,
    ISBN 0-201-63361-2
  2. A copy of Design Patterns class text (above) is in the library, available while you wait for your book order to arrive.
  3. Student presentations available here, after the presentation, and will remain until the beginning of the next semester. www.ecs.syr.edu/faculty/fawcett/handouts/CSE776
  4. John Vlissides Patterns Home Page
    Presentation on Patterns (and more) by Erich Gamma
    Design Patterns Study Group
    Presentation Secrets of Steve Jobs - Video

Books relevant to the content of this course:

  1. Implementation Patterns, Kent Beck, Addison-Wesley, 2008
  2. Refactoring to Patterns, Joshua Kerievsky, Addison-Wesley, 2005
  3. Patterns of Enterprise Application Architecture, Martin Fowler, Addison-Wesley, 2003
  4. Enterprise Integration Patterns, Gregor Hohpe, Bobby Woolf, Addison-Wesley, 2004
  5. Pattern-Oriented Software Architecture, Schmidt, et. al., Wiley, 2000
  6. Organizational Patterns of Agile Software Developement, James Coplien and Neil Harrison, Prentice-Hall, 2005

Presentation Resources:

Lectures Student Presentations Instructor Presentations Syllabus
File Download ScreenShot Project Upload Instructions
Collection of Plop papers from various conferences
Input Output Pattern Language
Big Ball of Mud
Acyclic Visitor
Extension Object
Role Object
Value Object
Selfish Object
Security Patterns Repository
Customer Interactions
Scripted Test-Driven Acceptance
Acceptance Test Driven Development for JavaScript
Patterns for Agile Developement - 1, Patterns for Agile Developement - 2, Patterns for Agile Developement - 3
Restful Service Pattern
Some REST Design Patterns
RESTful API design patterns
Representational state transfer - Wikipedia
rest-anti-patterns rest-api-tutorial
Amazon API Gateway REST API
Azure REST API Reference
Google Drive API Reference

Double Check Locking

Summary in Wikipedia - Pranoy Singh was correct
Double-Check Locking is fixed in C++11 - update coming for my implementations

Pattern combinations

Strategy and Factory Method
Architectural Patterns
Doug Lea's Pattern FAQ - hasn't changed in years, but some good material
Hillside Group home page

Software Visualization
Patterns for Software Visualization
Pattern Catalog

Plop 4 - 1997 Conference Papers Table of Contents
Plop 3 - 1996 Conference Papers abstracts on-line
Hillside Group Site

Patterns Summary Patterns in a Nutshell Patterns Books
Survey of Design Patterns Design Patterns and Tips

Syllabus - Fall 2018:

At the end of each class next week's presenters will meet briefly with the instructor.
Student Pictures
Syllabus for CSE776 - Design Patterns
Session Pattern Pattern Presenters
Pattern Presenters
Session #1a
MW, Aug 27, Aug 29
Introduction Jim Fawcett Jim Fawcett
Session #1b
MW, Aug 27, Aug 29
Abstract Factory - Example Presentation Jim Fawcett Jim Fawcett
MW, Sep 03, 03
Labor Day No Class Session #2a,b,c presenters meet with Instructor
Note: Often either the Monday or Wednesday class has significantly larger enrollment than the other class so several students may be assigned presentations for the class that they are not registered for. If that is a problem, please let me know right away. Everyone should have at least one presentation scheduled now, and a few may have two scheduled. I expect that everyone will have given three presentations by the end of the course.
Session #2a
MW, Sep 10, 12
Builder Burak Kakillioglu, Sai Lella, Himanshu Chabbra Chen Luo, Yuexin Jiang, Shubham Jiwtode
Session #2b
MW, Sep 10, 12
Singleton Akhil Karuturi, Gabriel Adams Nileshkumar Dwivedi, Quan Liang, Honey Shah
Session #2c
MW, Sep 10, 12
Factory Method Mrunal Dharmendra, Yuxuan Xie Vishal Parekh, Xiaohan Zhang
Session #3a
MW, Sep 17, 19
Prototype Yunsheng Guo, Sneha Sarkar Saloni Jain, Yuan Liu, ketul Mehta
Session #3b
MW, Sep 17, 19
Adapter Adarsh Bodineni, Ankur Kothari, Jiacheng Zhang Biao A, Sayali Naval, Jim Fawcett
Session #3c
MW, Sep 17, 19
Bridge Jim Fawcett Jim Fawcett
Session #4a
MW, Sep 24, 26
Composite Harika Bandaru, Yunong Li, Shashank Singh Akash Bhosale, Rohit More, Jim Fawcett
Session #4b
MW, Sep 24, 26
Decorator Chetali Mahore, Abhishek Mehrotra, Tanyu Qi Xu Zhang, Vibhu Bharadwaj, Datan Xu
Session #4c
MW, Sep 24, 26
Facade Nishant Agrawal, Lingyun Ke, Hao Tian Bohao Li, Vishvesh Shah, Jim Fawcett
Session #5a
MW, Oct 01, 03
Flyweight Yunong Li, Weitian Ding, Jim Fawcett Naga Krishna, Weiju Zhou, Jim Fawcett
Session #5b
MW, Oct 01, 03
Proxy Gabriel Adams, Ankur Kothari, Sai Lella, Mengchen Fan Weiheng Chai, Jiayu Li, Xiang Li
Session #5c
MW, Oct 01, 03
Chain of Responsibility Shiqi Wang, Yuxuan Xing, Liuqing Xu Tao Jun Lin, Datan Xu, Zheng Zhan
Session #6a
MW, Oct 08, 10
Command Jim Fawcett Jim Fawcett
Session #6b
MW, Oct 08, 10
Interpreter Yunsheng Guo, Pratheek Gowda, Koushik Godbole Akash Bhosale, Hao Zhang, Biao A
Session #6c
MW, Oct 08, 10
Iterator Himanshu Chhabra, Weitian Ding, Jim Fawcett Saloni Jain, Yuexin Jiang, Quan Liang
Session #7a
MW, Oct 15, 17
Mediator Pratheek Gowda, Chetali Mahore, Mengchen Fan Akash Bhosale, Bohao Li, Jiayu Li
Session #7b
MW, Oct 15, 17
Memento Lingyun Ke, Abhishek Mehrotra, Weitian Ding Vibhu Bharadwaj, Quan Liang, Jim Fawcett
Session #7c
MW, Oct 15, 17
Observer Harika Bandaru, Tianyu Qi, Shiqi Wang Cheng Wang, Weiheng Chai, Weiju Zhou
Session #8a
MW, Oct 22, 24
State Sneha Sarkar, Hao Tian, Jim Fawcett Tao Jun Lin, Chen Luo, Yuan Liu
Session #8b
MW, Oct 22, 24
Strategy Jim Fawcett Jim Fawcett
Session #8c
MW, Oct 22, 24
Template Method Shashank Singh, Yuxuan Xie, Nishant Agrawal Biao A, Weiju Zhou, Cheng Wang
Session #9a
MW, Oct 29, Oct 11
Visitor Yuxuan Xing, Jiacheng Zhang, Pratheek Gowda, Zhan Zheng, Hao Zhang, Shubham Jwitode
Session #9b
MW, Oct 29, Oct 31
Extension Object
PLOP 3, pg 79
Adarsh bodineni, Mrunal Dharmendra, Jim Fawcett Xu Zhang, Nileshkumar Dwivedi, Jim Fawcett
Session #9c
MW, Oct 29, Oct 31
Role Object,
PLOP 4, pg 15
Akhil Karuturi, Burak Kakillioglu, Tianyu Qi Bohao Li, Xiaohan Zhang, Vishvesh Shah
Session #10a
MW, Nov 05, 07
Acyclic Visitor
Acyclic Visitors pdf
Abhishek Mehrotra, Tianyu Qi, Hao Tian Naga Krishna, Xiang Li, Nileshkumar Dwivedi
Session #10b
MW, Nov 05, 07
Security Patterns Repository
Security Patterns Repository pdf
Harika Bandaru, Sai Lella, Lingyun Ke, Koushik Godbole Vibhu Bharadwaj, Vishal Parekh, Honey Shah, Weiheng Chai
Session #10c
MW, Nov 05, 07
Customer Interaction
Customer Interactions pdf
Chetali Mahore, Sneha Sarkar, Jim Fawcett Saloni Jain, Datan Xu, Jim Fawcett
Session #11a
MW, Nov 12, 14
Patterns for Scripted Acceptance Test-Driven Development
Scripted Test-Driven Acceptance pdf
Ankur Kothari, Nishant Agrawal, Yuxuan Xie Yuexin Jiang, Ketul Mehta, Xu Zhang
Session #11b
MW, Nov 12, 14
Input and Output Pattern Language
Input Output Pattern Language pdf
Yuxuan Xing, Yunong Li, Shiqi Wang Naga Krishna, Tao Jun Lin, Rohit More, Honey Shah
Session #11c
MW, Nov 12, 14
Patterns for Agile Developent
Patterns for Agile Developement - 2 pdf
Patterns for Agile Developement - 3 pdf
Koushik Godbole, Liuqing Xu, Mengchen Fan Yuan Liu, Xiang Li, Shubham Jiwtode, Sayali Naval
No Classes
MW, Nov 19, 21
Thanksgiving Holiday
Session #12a
MW, Nov 26, 28
Restful Service Pattern
Restful Service Pattern, Restful Service - Wikipedia
Adarsh Bodineni, Yunsheng Guo, Jiacheng Zhang Cheng Wang, Rohit More, Zheng Zhan, Jiayu Li
Session #12b
MW, Nov 26, 28
Value Object
Value Object pdf
Burak Kikillioglu, Akhil Karuturi, Liuqing Xu Hao Zhang, Luo Chen, Xiaohan Zhang
Session #12c
MW, Nov 26, 28
Big Ball of Mud
Big Ball of Mud pdf
Himanshu Chhabra, Gabriel Adams, Mrunal Dharmendra, Shashank Singh Sayali Naval, Vishvesh Shah, Ketul Mehta, Vishal Parekh
Session #13a
MW, Dec 03, 05
Patterns and Pattern combinations in practice Jim Fawcett Jim Fawcett
Session #13b
MW, Dec 03, 05
Refactoring to Patterns
Chap7 - Simplification
Chap8 - Generalization
Jim Fawcett Jim Fawcett
Session #13c
MW, Dec 03, 05
More on Pattern Languages
Where do we go from here?
Jim Fawcett Jim Fawcett

Class meets once each week for three hours.