next up previous
Next: References Up: No Title Previous: No Title

Coverage of Computer Science Subject Areas in
COM 1205: Software Design and Development and
COM 3360: Adaptive Object-Oriented Software Development

``Computing as a Discipline'' [1] presents nine subject areas comprising the discipline of computing. Accreditation boards are using the classifications in ``Computing as a Discipline'' to evaluate computer science programs. COM 1205 and COM 3360 courses include some of the material in six of the nine areas. In the graduate course (COM 3360), the material is covered in greater breadth and depth.

1.
Algorithms and data structures Students learn to write algorithms without encoding the details of the data structures in the algorithms. This makes the algorithms more general and more reusable. The students not only learn data abstraction but how to write the algorithms so that they adapt automatically to a large family of data structures. Students learn about basic graph algorithms, such as depth-first traversal and its applications.

2.
Artificial intelligence and robotics

Students learn to express algorithmic knowledge at a high level of abstraction through traversals and visitors. Structural knowledge representation is introduced through class dictionaries. Students learn about analogical reasoning by transforming a program from one data structure to another.

3.
Database and information retrieval

Students learn to design schemas for object-oriented databases. They also learn a novel query notation: traversals and visitors. They learn about XPath, an XML standard, and its applications to XQL, the query language for XML.

4.
Human-to-computer communication

Students learn how to visualize programs based on collaborating objects and classes.

5.
Programming languages

Students learn to use a family of programming languages that live on top of object-oriented languages. Implementation of these languages is discussed through operational semantics.

Class dictionaries and traversals and visitors are a new programming language and at the same time a new specification and design language.

The focus is on the Java programming language and how to to use it for traversal-visitor-style programming and for programming collaborations.

6.
Software methodology and engineering

Students learn principles of development of flexible software systems. They learn about several design patterns, such as Visitor, Observer, Structure-Shy Traversal, Structure-Shy Object, Context, etc. Extreme Programming is also covered.

``Computing as a Discipline'' describes three important processes used in the computing discipline: Theory, Abstraction, and Design. These courses cover aspects of all three processes:

Finally, ``Computing as a Discipline'' identifies twelve recurring concepts fundamental to computing. The following concepts are covered extensively in these courses:


next up previous
Next: References Up: No Title Previous: No Title
Karl Lieberherr
9/16/2000