About Computer Science 362

This page provides general information about the Fall 2004 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.

Information about previous offerings of this course is also available.


Attendance is required. The meeting time and location is as follows:

Course meetings are Mondays, Wednesdays, Fridays, at 11:00AM-11:50AM, 1134 Sweeney

Return to top

Course Textbooks

There are two required texts for the course.

There are two recommended text for the course.

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 cs.iastate.edu machines. You should either read your email there, or have it forwarded to where you read it.

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 request that the Disability Resources staff send a SAAR (Student Academic Accommodation Request) form verifying your disability and specifying the accommodation you will need. Then bring the SAAR form along and 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, C#, 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). These are supposed to 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


The general objectives for this course are divided into two parts: a set of essential objectives, and a set of enrichment objectives. These objectives are linked to the course's learning outcomes (in references that look like this: [B3]). The essential objectives will help improve your overall analytical skills [B3] and will be helpful for your career as a computer scientist or software engineer [C1]; 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 analyze system requirements for large applications [B1] [B2], plan and create robust and evolvable object-oriented designs that meet these requirements [A3] [B3], and work effectively and efficiently in a group [C2]. In more detail the essential objectives for this course are that you will be able to:

Although not the ultimate main objectives of the course, the following are necessary skills:

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.

Return to top


The formal prerequisites in the Iowa State University catalog are English 104 and 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


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, and his style sheets, which I have also adapted.

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

Thanks to the students in the Fall 2004 offering of this course for help in refining the course objectives.

Return to top

Last modified Wednesday, October 20, 2004.

This web page is for the Fall 2004 offering of Com S 362 at Iowa State University. The details of this course are subject to change as experience dictates. Students will be informed of any changes. Please direct any comments or questions to the course staff.