Com S 362 - Object-Oriented Analysis and Design Spring 2002

General Info.
Course Homepage
About Com S 362
Contacting Us

Homework & Grades
Grading Policies
Homework Directory
Certification Forms

Q & A
Meeting outlines

OO A&D Links
Dept. Homepage
ISU Homepage

Valid HTML 4.0!
Valid CSS!

About Computer Science 362

This page provides general information about the Fall 2001 offering of Computer Science 362 at Iowa State University. This page is organized as follows:

  1. Meetings
  2. Course Textbooks
  3. Computer Accounts
  4. Accomodations for Disabilities
  5. Course Description
  6. Objectives
  7. Prerequisites
  8. Acknowledgements

The course grading policy and syllabus are on separate web pages.


Lecture attendance is required. The Meeting time and location is as follows:

Mondays, Wednesdays, Fridays, at 11:00AM-11:50AM,
B29 Atanasoff Hall

Return to top

Course Textbooks

There are four required texts for the course (the first is the main one, however, so if you can't afford all of them, at least buy the Larman book):

These texts, will be on reserve at the Parks library.

We will supplement the texts with other material as described in the syllabus's bibliography.

Return to top

Computer Accounts

You must have an account on the department Unix machines. You should either read your email there, or have it forwarded to where you read it.

Return to top

Accomodations for Disabilities

We would like to hear from you if you have a disability that may require some modification of seating, testing, or other class requirements. If so, please talk to Gary Leavens as soon as possible so appropriate arrangements may be made.

Return to top

Course Description

From the Iowa State University Catalog: "Object-oriented requirements analysis and systems design. Design notations such as the United Modeling Language. Design Patterns. Group design and programming with large programming projects."

Some Explanation

An object-oriented system uses abstract data types (ADTs) for information hiding. ADTs also provide behavior (i.e., actions) so that one can describe systems using behavior that is closer to the problem domain than to the computer. Object-oriented langauges provide ADTs (via a "class" construct) and also subtype polymorphism and inheritance (subclassing). Subtype polymorphism comes from the method calling mechinism, which allows one to invoke a method on an object without knowing its exact run-time class. Inheritance allows one to define new classes by stating their differences from existing classes.

Requirements analysis means describing the essential behavior a system is supposed to have; such a description should not bias the implementation towards particular data structures or algorithms. In object-oriented requirements analysis, the requirements are often aided by a conceptual model of the classes of objects in the problem domain.

Object-oriented Design means describing the behavior of classes that will be used to implement the system. The design includes all information needed to begin coding, but still leaves many choices of algorithms up to the implementation. Various aspects of a design can be recorded in a standard notation, such as pre- and postconditions, or something like the Unified Modeling Language (UML), which allow precise communication of designs to developers. Designs can be made more flexible or can be optimized in various ways by using standard ideas, which have been codified into design patterns.

Although the focus of the course is not in the implementation of designs, implementation does provide important feedback since the ultimate purpose of a design is to make implementation easier, faster, and more robust.

Time permitting, we will also deal with formalization of design speifications, perhaps using the Java Modeling Language (JML).

Return to top


The general objectives for this course are divided into two parts: a set of essential objectives, and a set of enrichment objectives. The essential objectives will be helpful for your career as a computer scientist or software engineer; hence we want to help you to master them. You are encouraged to explore the enrichment objectives both for their own sake and because learning more about those will help deepen your understanding of the essential objectives.

Essential Objectives

In one sentence, the main objective is that you will be able to create and justify object-oriented designs that accomplish their goals and that are robust and evolvable. In more detail the essential objectives for this course are that you will be able to:

  • Analyze, design, and build object-oriented systems.
  • Explain and justify designs based on design principles, patterns, and heuristics.
  • Evaluate the quality of an analysis or design, and be able to explain how to improve it.
  • Write object-oriented code to correctly implement a design.

Although not a main objective of the course, a necessary skill is the ability to read and write requirements and design documentation written in the Unified Modeling Langauge (UML).

You will be permitted to use the textbooks and course notes for all exams.

Enrichment Objectives

Enrichment objectives could be multiplied without limit, but the following seem most important or most likely to be taught.

  • Be proficient at detecting ambiguity in English or other kinds of informal specifications.
  • Use formal specification and design by contract.
  • Explain how to design and document object-oriented frameworks or class libraries that are intended for subclassing.
  • Explain how various programming language constructs help or hinder object-oriented design.
  • Explain the research and scientific questions that are open in the area of object-oriented analysis and design.

Return to top


The formal prerequisite in the Iowa State University catalog is a C- or higher grade in Com S 228 (Introduction to Data Structures). We expect that you have learned the concepts of data structures and the idea of abstract data types. We also expect that you are familiar with sequential programming in an object-oriented language, such as C++ or Java.

Return to top


Many thanks to Curtis Clifton at Iowa State for his initial work on the HTML for these web pages, which I have adapted from another course.

The certification forms used for the homeworks and various other ideas for teamwork were adapted from Wayne Ostendorf Com S 401 class. Thanks, Wayne.

Return to top

Last modified Saturday, February 8, 2003.

This web page is for the Spring 2002 offering of Com S 362 at Iowa State University. The details of this course are subject to change as experience dictates. You will be informed of any changes. Please direct any comments or questions to Gary T. Leavens at leavens@cs-DOT-iastate-DOT-edu (after replacing -DOT- with `.').