CSU 370: Object-Oriented Design (Clinger)
Spring 2009

[Administrivia | Outline]

Administrivia

Instructor: William D Clinger
Course web page: http://www.ccs.neu.edu/course/csu370wc/
Directory: /course/csu370wc/

Textbook: Peter Sestoft. Java Precisely, Second Edition. MIT Press, 2005.

Catalog description: CSU 370 Object-Oriented Design 4 QH
Presents a comparative approach to object-oriented programming and design. Discusses the concepts of object, class, metaclass, message, method, inheritance, and genericity. Reviews forms of polymorphism in object-oriented languages. Contrasts the use of inheritance and composition as dual techniques for software reuse such as forwarding vs delegation and subclassing vs subtyping. Fosters a deeper understanding of the principles of object-oriented design patterns, and the use of graphical design notations such as UML (unified modelling language). Basic concepts in object-oriented design are illustrated with case studies in application frameworks and by writing programs in one or more object-oriented languages.
Prereq. CS U213 and 214.

The official catalog description, given above, represented a step away from what I think this course should be about. Our approach will be principled, not comparative. We will not discuss metaclasses. Inheritance and composition are often alternative techniques, but they are not duals; I am not even sure what that sentence of the catalog description was meant to say.

Here is a better description of the course, taken from the CCIS course charter for CS U370: The course presents the theory and practice of object-oriented programming. The course enhances students' understanding of the concepts of object, class, message, method, inheritance, and genericity. The course covers a basic model for objects; the principles of types and polymorphism in object-oriented programming languages; different forms of abstraction; and theory and practice of reuse. The course also introduces students to some object-oriented design patterns that practitioners have found useful.

Approximately half of the final grade will be determined by assignments, and the other half by the midterm and final exams. There may also be one or more quizzes, which may count as either assignments or exams at the whim of the instructor. Some design and/or programming assignments may require students to work in teams, but most assignments and all quizzes and exams will be individual in nature.

Security is an important aspect of software development. In this course, students are expected to protect the software they develop from plagiarists and thieves. The quality of this protection will be graded. The instructor and grader will do their best not to reward plagiarism, theft, and other forms of academic dishonesty.


Outline


Last updated 10 April 2009.

Valid XHTML 1.0!