[ Administrivia | Outline ]
Instructor:
William D Clinger
Home page:
http://www.ccs.neu.edu/course/cs3500wc/
Directory: /course/cs3500wc
Required Textbook:
Peter Sestoft.
Java Precisely,
Second Edition. MIT Press, 2005.
Required Free Online Textbook:
Duane Bailey.
Data Structures in Java, for the Principled Programmer,
√3 Edition.
PDF available online at
http://www.cs.williams.edu/javastructures/Welcome.html
Catalog description:
Catalog description: CS 3500 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 2510 (CS U213 and 214).
The content of this course has evolved somewhat since the official catalog description (above) was written. 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 3500 (formerly 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 midterms 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.
Every student is responsible for being familiar with the university's Academic Integrity Policy.
Last updated 9 January 2012.