Course Syllabus
Foundations of Object Oriented Analysis and Design
This page last updated on: Oct 01, 2001
Contents:
General Information
Course Name
Foundations of OO Analysis and Design
Certificate: C++ Prog CP710 A
EDP: 59127
Instructor
Cliff Green
Instructor Contact Info
E-mail: cliffg@codewrangler.net
Phone: 206-363-9852 (7 pm - 9 pm), 425-867-7234 (1 pm - 4 pm)
Web: http://uwteach.codewrangler.net/
Note: I occasionally travel out of town or have work project
commitments, so phone call and e-mail replies might take an extra day or
two during those periods.
Term
Fall 2001, Oct. 1 - Dec 17, Mondays 6:00 - 9:00 pm, Location - Mary Gates
Hall, room 242
Note: There are no sessions on Oct. 15 and Nov. 12 (instructor
business trip and Veteran's Day holiday, respectively), resulting in the
last session on Dec. 17. Please notify the instructor if this results in
a schedule conflict.
Textbooks and Online Resources
The textbook for this course is:
- UML Distilled – A Brief Guide to the Standard Object Modeling
Language, 2nd Ed., Martin Fowler with Kendall Scott, Addison Wesley,
1999, ISBN 0-201-65783-X. More information on this book can be found at:
http://www.awl.com/cseng/
An optional but highly recommended textbook:
- The Unified Modeling Language User Guide, Grady Booch, James
Rumbaugh and Ivar Jacobson, Addison Wesley, 1999, ISBN 0-201-57168-4. More
information on this book can be found at:
http://www.awl.com/cseng/
These books are available at the University of Washington Bookstore; they
are also widely available in the computer section of any general bookstore,
or through any of the major online booksellers.
For getting started on building a C++ library, additional recommended
books (and other resources):
Other C++ Resources
Course Requirements
The minimum requirements for passing the course are:
- Attendance: You must attend eight of the ten class sessions to pass
the course.
- Assignments: You must complete all seven assignments with an average
score of 80% or better.
- Final Examination: You must complete the final examination with a score
of 80% or better.
Description, Prerequisites, and Objectives
The purpose of the course is two-fold:
- Prepare prospective C++ and Java students to analyze and design object-oriented
(OO) solutions to computing problems.
- Provide an introduction to OO concepts for students who will continue
with the rest of the Object-Oriented Analysis and Design certificate program.
Students will learn how to apply the principles of abstraction, encapsulation,
inheritance and polymorphism while designing solutions. In addition, students
will learn how to use widely employed techniques and tools such as Use Cases,
Class, Responsibility, Collaborator (CRC) cards, the Unified Modeling Language
(UML) and design patterns as they work through OO software lifecycle. The
rudiments of C++ syntax may also be introduced as required to illustrate
how the languages support OO concepts.
Prerequisites
In order to be successful in this course students should have at least
a year’s experience in software development, as a functional or systems
analyst, or as a programmer. Knowledge and experience in one of the C family
of languages is helpful: C, C++ or Java. Students should also understand
the process of traditional software development using a sequence of steps
that include requirements capture, analysis, design, implementation, testing
and delivery to users.
Objectives
Upon completion, students will be able to:
- Use CRC cards to discover the relationships between objects in a requirement
and to discover “hidden” objects necessary to meet the requirement.
- Model and document the static relationships between classes/objects
in a requirement using UML class diagrams.
- Model and document the dynamic relationships between classes/objects
using UML sequence and collaboration diagrams.
- Design appropriate class structures using containment, inheritance,
and peer association relationships, and document the relationships using
UML diagrams.
- Appropriately apply polymorphism to increase the flexibility of OO designs.
- Model and document object state transitions as required, using UML.
- Model and document simple application architectures with UML package
and deployment diagrams.
- Employ the concepts of “design by contract”, “object
invariance” and “programming to an interface”, and understand
how these concepts are implemented in C++ and Java.
- Employ Use Cases throughout the OO lifecycle to trace requirements and
test developed software.
- Evaluate an OO design based on commonly used “Rules of Thumb”.
Grading and Assignment Info
As noted above, the majority of the grade will be from the course project
assignments, rather than the final exam. The emphasis is on the assignment
work, since it is a design course emphasizing real-world practice.
Your grade will be based on the seven assignments and the final examination.
Each assignment will constitute 10% of your grade and the final examination
will constitute 30%. To pass the course, you must achieve a 70% grade minimum
on each of the assignments (with an 80% average as required) and a minimum
of 70% on the final examination. If you don’t achieve 70% on any assignment
you will receive feedback comments for improvement. Unless special circumstances
apply, only one assignment at a time will be accepted. If an assignment does
not meet the minimal grade, it will be corrected and resubmitted before proceeding
(many of the assignments are interdependent and must be substantially correct
to act as a firm foundation for subsequent work). The iterative and interdependent
aspects of many of the assignments follow real world practices.
Assignments are graded using the following criteria:
- How completely the requirements specified in the assignment have been
met.
- How well the tools and techniques introduced in the current and prior
lessons are used.
- Quality of the work, based on the “rules of thumb” introduced
in the current and prior lessons.
The final examination is designed to test two things:
- Whether you have grasped the concepts and terminology of OO sufficiently
to answer several short “essay” questions.
- Whether you can apply the concepts and tools to create an OO specification
detailed enough to serve as the “blueprint” for an actual software
system.
Assignments are turned in primarily as diagrams and text. You will need
some method of creating the solutions for assignments, and generating diagrams
from the solution model. Text solutions can be created using a text editor,
html editor, or word processing software. Submitting documents as plain text,
RTF (Rich Text Format), or MS Word (Office 2000 format, or earlier) are all
acceptable. Assignments requiring UML diagrams can be done with pen or pencil
on paper, or using any drawing program that will produce standard-format
graphics files in one of the following formats: BMP, PNG, GIF, JPG. In addition,
Visio 2000 or Microsoft Office graphics files are also acceptable.
Electronic submissions as e-mail attachments are preferred (but not required)
to paper diagrams. Please do not send model data files (e.g. from TogetherJ™),
only diagrams (or web pages) generated from the model files.
The University of Washington has obtained an academic license for TogetherJ™
software from TogetherSoft. See the TogetherSoft web site for specifics,
but in general, the software will run on any machine that will run a current
version of Sun Microsystems Java Virtual Machine. You must download the
software package from http://www.togethersoft.com/
and install it on your machine. If you don't currently have a Java
Virtual Machine on your computer, be sure to download one from the TogetherSoft
site or from Sun Microsystems. To obtain a license, you will need to
fill out and return the Grant of Academic License form and return it to the
intructor, who will then email you the license file.
Important - Other boilerplate information on grading and assignment
submission is here (some of the content is oriented towards C++ programming
and is not applicable to the FOOAD course, particularly the format of assignment
submission):
Other Grading and Assignment Info
Administrative and Legal Info
The following page contains information on classroom closure situations,
assignment originality and plagiarism, and disability accomodations:
Administrative and Legal Info
This page constructed by
Cliff Green, Copyright © 2001.