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


General Info.
Course Homepage
About Com S 362
Contacting Us
Syllabus

Homework & Grades
Grading Policies
Grades
Homework Directory
Certification Forms
Exams

Reference
Q & A
Meeting outlines
Resources
Running Java
StickSync Project

Links
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 2002 offering of Computer Science 362 at Iowa State University. This page is organized as follows:

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

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

Meetings

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

Lectures
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 book by Reil is not as important as the others, but you should definitely buy the other three.)

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.

Due to the vast amounts of spam from networked email providers like hotmail, yahoo, etc., if you send email from one of these providers, we can't guarantee that we'll read it quickly or notice it (although we will try at the beginning of the semester). For fast responses, please send email directly from an Iowa State computer, or send an email to us before you have problems, so we can put you on our "non-spam" list.

Return to top

Accommodations 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 languages, like Java, Smalltalk, and C++, provide ADTs (via a "class" construct) and also subtype polymorphism and inheritance (subclassing). Subtype polymorphism comes from the method calling mechanism, 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 provides 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 specifications, perhaps using the Java Modeling Language (JML).

Return to top

Objectives

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 the ultimate main objectives of the course, the following are necessary skills:

  • Be able to read and write object-oriented code, in Java, that uses subclasses, inheritance, abstract methods, subtypes, and subtype polymorphism.
  • Be able 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

Prerequisites

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). However, we realize that these courses do not cover many object-oriented ideas.

Return to top

Acknowledgments

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 Fall 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 `.').