CSCA 5428: Object-Oriented Analysis and Design: Foundations and Concepts

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:Ìý

  • Programming language: 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 elements and concepts.

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 Quiz7%
OO Fundamentals Quiz7%
Project 1 Peer Review7%
UML for OOAD Quiz7%
Project 2 Peer Review7%
Test for OOAD Quiz7%
Project 3 Coding Lab4%
Project 3 Peer Review11%
Capstone Project Coding Lab7%
Capstone Project Peer Review14%
Final Exam22%

Course Content

Duration: 3Ìýhours, 35 minutes

An introduction to the benefits and challenges in applying Object-Oriented Analysis and Design (OOAD). ÌýThe overall specialization and the instructor are introduced here. Then the challenges of developing software to support changing requirements are reviewed, and the Object-Oriented (OO) paradigm is presented as a possible approach to better analysis and design. ÌýLectures examine how the OO approach differs from other programming paradigms and how it can provide helpful perspectives in conceptual, specification, and implementation design stages. Ìý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).

Duration: 5 hours, 41 minutes

The module provides a review of core OO foundational concepts, including abstraction, encapsulation, modularity, polymorphism, delegation, inheritance, identity, and more. ÌýKey OO terminology for discussing aspects of class and object design are also presented. ÌýFinally, Java – our course programming language - is reviewed, not in a full development tutorial, but rather in examining the languages elements that support effective OO design and development. ÌýResources are provided for supporting Java tutorial needs, and an example of Java development is provided as a first foray into OOAD development projects.

Duration: 2Ìýhours, 41 minutes

The Unified Modeling Language is a method for performing OOAD using graphical diagramming. ÌýThe module focuses on UML as an effective tool for our design efforts – class diagrams can easily show major relationships and responsibilities of collaborating class networks; use case diagrams can help with analysis of critical user tasks needed for a successful system analysis; and the behavioral diagrams (sequence, state, and activity) can show details of messaging and command flow through applications. ÌýUML is regularly used in both academic and industry settings for designing and describing complex OO systems, and it will also be part of many OOAD course development projects.

Duration: 5 hours, 20 minutes

Testing in any software system is a recognized challenge; in an object-based system where communicating elements hold their own state, data, and functionality it can be even more difficult to find effective test suites. ÌýThe module looks at the core issues with software test, and at what approaches are typically used in industry for test at each stage and level of a software project. ÌýThere is a special focus on messaging and serialization, two key elements of connectivity in OO systems that have their own challenges and approaches for thorough test and development. ÌýFinally, Ìýthe module looks at a first-level view of JUnit, a unit testing framework used in industry with Java that will also be used (in a simple fashion) as a tool for grading and verifying course programming work.

Duration: 3 hours per attempt

Final Exam Format: Timed, in-course exam, not proctored

The exam is much like the quizzes, but is more comprehensive and summative in nature, testing your ability to apply concepts and skills. As with quizzes, the questions are based on lecture content. You'll have three hours per attempt, and unlike the quizzes, only two attempts may be made on the exam. The highest score from any attempt will be saved.

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.