About Com S 362
Homework & Grades
Q & A
OO A&D Links
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:
Lecture attendance is required. The meeting time and location is as follows:
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.)
We will supplement the texts with other material as described in the syllabus's bibliography.
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.
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.
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."
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).
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.
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:
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 could be multiplied without limit, but the following seem most important or most likely to be taught.
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.
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.
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 `.').