CSCA 5438: Object-Oriented Analysis and Design: Patterns and Principles

Get a head start on program admission

ÌýPreview this courseÌýin the non-credit experience today!Ìý
Start working toward program admission and requirements right away.ÌýWork you complete in the non-credit experience will transfer to the for-credit experience when you upgrade and pay tuition. See How It Works for details.

  • Course Type: Elective
  • Specialization: Object-Oriented Analysis and Design
  • Instructors:ÌýDr. Bruce Montgomery
  • Prior knowledge needed: Students should consider their background in Java and begin appropriate tutorial study at a level needed to allow use of the language in course projects (suggested resources are provided).

Course Description

An applied analysis and design class that addresses the use of object-oriented techniques. Topics include domain modeling, use cases, architectural design and modeling notations. Students apply techniques in analysis and design projects.Ìý Focus is on key object-oriented design patterns and principles.

Learning Outcomes

  • Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.
  • Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
  • Communicate effectively in a variety of professional contexts.
  • Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
  • Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
  • Apply computer science theory and software development fundamentals to produce computing-based solutions.Ìý

Course Grading Policy

AssignmentPercentage of Grade
Module 1 Quiz4%
Project 1 Peer Review6%
Module 2 Quiz4%
Project 2 Coding Lab6%
Project 2 Peer Review6%
Module 3 Quiz4%
Project 3 Coding Lab6%
Project 3 Peer Review6%
Module 4 Quiz4%
Project 4 Coding Lab6%
Project 4 Peer Review6%
Capstone Project Coding Lab7%
Capstone Project Peer Review15%
Final Exam20%

Course Content

Duration: 5Ìýhours, 51 minutes

Continuing examinations of the benefits and challenges of applying design patterns and related principles in Object-Oriented Analysis and Design (OOAD). ÌýThe overall specialization and the instructor are introduced here. ÌýTopic lectures introduce the origins and intent behind Object-Oriented (OO) pattern definitions, and then examine two common OO patterns - Strategy and Observer - for their purpose, structure, supporting principles, and typical applications in the design and development of OO applications. ÌýStudents should have some background in OO foundational elements, Java, JUnit, and UML (all covered in the prior OOAD foundations & concepts course). ÌýThese topics are prerequisites to gaining the most benefit from lectures and performing design and development assignments, so students may want to consider appropriate tutorial study as needed.

Duration: 6 hours, 23 minutes

This module focuses on structural OO patterns - patterns that help with object composition or making complex designs more efficient and flexible. ÌýIncluded here are discussions of Decorator, Facade, Adapter, Proxy, Composite, Flyweight, and Bridge. ÌýSupporting OO principles will also be discussed, as well as design topics such as multiple inheritance use guidelines and tradeoffs between the principles and implementation approaches. ÌýThe project assignment (using Decorator for this module) will be the first design and development effort for an application that will be extended and refactored in each follow-on module.

Duration: 6Ìýhours, 2 minutes

We continue the examination and assessment of OO design patterns by looking at creational patterns here. ÌýCreational patterns provide alternative approaches for creating and instantiating objects, strengthening designs by separating the logic for object creation from object use. ÌýSupporting principles (e.g. Dependency Inversion), concepts (deep and shallow copies), and example applications will be provided. ÌýOO patterns reviewed here include Factory, Abstract Factory, Singleton, Object Pool, Prototype, and Builder. ÌýThe project assignment (using Abstract Factory for this module) will be another step in extending and refactoring the class-long application design and development effort.

Duration: 6 hours, 19 minutes

The final full module of OO design pattern reviews focuses on the behavioral OO patterns, the largest category of patterns that help provide structure for object interactions and responsibilities. ÌýThe lectures look in detail at Command, State, and Template patterns, with a somewhat briefer review of Iterator, Mediator, Memento, Interpreter, Chain of Responsibility, and Visitor. ÌýSupporting principles, pattern structures, and examples of use and implementation are also reviewed. ÌýThe project assignment continues the build of the class-long application design and development effort, adding the Command pattern to support additional functionality.

Duration: 5Ìýhours

In this last class module, we take a look at building patterns from other patterns - creating compound patterns - by examining the most commonly encountered compound pattern, Model/View/Controller (MVC). ÌýWe also look at a development approach called Thinking in Patterns that encourages pattern use in the analysis and design process. (Both MVC and Thinking in Patterns will be revisited in the final OOAD course.) ÌýThe capstone project provided here is the last step in the class-long design and development effort, integrating State, Singleton, and Observer patterns for extending and finalizing the application functionality.

Duration: 3Ìýhours, 12 minutes

This module contains materials for the final exam. The class final exam provides a summative assessment encompassing all the topics from the course lectures to provide opportunities to apply your OO pattern toolkit to typical OO design and development challenges. ÌýIf you've upgraded to the for-credit version of this course, please make sure you review the additional for-credit materials in the Introductory module and anywhere else they may be found.

Notes

  • Page Updates: This page is periodically updated. Course information on the Coursera platform supersedes the information on this page. Click theÌýView on CourseraÌýbuttonÌýabove for the most up-to-date information.