Document Actions
Course Description
Brief description of this course
Comp 373/473: Object-Oriented Programming
(Please see course page for current textbook information!)
Prerequisites: Data Abstraction and Object-Oriented Programming (Comp
272) is required.
Required texts:
Design Patterns Explained: A New Perspective on Object-Oriented Design
Alan Shalloway, James R. Trott
Publisher: Addison Wesley
Copyright: 2002
The Sun Java Tutorial: A practical guide for programmers (online)
Recommended texts:
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Publisher: Addison Wesley
Copyright: 1995
Introduction to Object-Oriented Programming, 3/e
Timothy Budd, Oregon State University
Publisher: Addison Wesley
Copyright: 2002 A Little Java, A Few Patterns
Matthias Felleisen and Daniel P. Friedman
Publisher: MIT Press
Copyright: 1997
Description:
Object-oriented programming has become the dominant software
development paradigm of the 1990s. This course assumes familiarity
with the main constituents of the object-oriented methodology:
OOP = abstraction + inheritance + polymorphism
Building on this foundation, the course studies three major topics.
Design Patterns: First, the course discusses patterns, reusable
solutions to recurring software design problems. Common design
patterns such as Composite, Decorator, and Command typically involve
several classes related by composition and inheritance.
Implementation: Next, the course examines how object-oriented language
features such as composition, encapsulation, inheritance, and dynamic
binding can be implemented. These features are studied in the context
of an interpreter for a simplified object-oriented language. The
interpreter itself is written in Java.
Components: Finally, the course explores programming with reusable
components. Specifically, the standard features of component
architectures are discussed: properties, events, methods, and
persistence, and introspection. Concretely, the course studies
JavaBeans as an example of a component architecture.
This course is heavily project-oriented. Students study each major
topic in the context of a substantial programming project. The reuse
of existing class libraries and software components is emphasized.
The programming projects will be conducted in the Java language.
Grading will be based upon the following components: programming
projects, quizzes, in-class exams, and the final exam.
