CS 3500: Object-Oriented Design
CS 3500: Object-Oriented Design
Tuesday/Friday 9:50 am - 11:30 am in West Village H 110
Home page: http://www.ccs.neu.edu/course/cs3500sp13/
Directory: /course/cs3500sp13
Instructor: Dr. Jessica Young Schmidt
Office: West Village H 314
Office Hours: Tuesday/Friday 12:30-1:25pm or by appointment
Email: jschmidt@ccs.neu.edu (please include “CS3500” in subject)
Teaching Assistant: Bharath Ramamurthy Vontimitta
Email: vontimitta.b@husky.neu.edu (please include “CS3500” in subject)
Office Hours: Wednesday 2-5pm in West Village H 102
Required Textbooks:
Barbara Liskov and John Guttag, Program Development in Java: Abstraction, Specification, and Object-Oriented Design, Addison-Wesley, 2001.
Peter Sestoft, Java Precisely, Second Edition, MIT Press, 2005.
Catalog Description
Presents a comparative approach to object-oriented programming and design. Discusses the concepts of object, class, meta-class, 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: forwarding vs. delegation and subclassing vs. subtyping. Fosters a deeper understanding of the principles of object-oriented programming and design including software components, object-oriented design patterns, and the use of graphical design notations such as UML (unified modeling 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.
Prerequisites: CS 1500 or CS 2510.
Here is another description of the course, taken from the draft report of a committee that was asked to revise CS 3500:
Presents the theory and practice of object-oriented programming, emphasizing abstractions and ideas that scale to large systems. Introduces representation independence and related concepts such as information hiding, encapsulation, modularity, and interchangeability of parts. Analyzes strengths and weaknesses of alternative representations by considering asymptotic efficiency for the best, worst, average, and amortized case. Illustrates general paradigms such as divide-and-conquer algorithms, precomputation, caching, memoization, and dynamic programming. Covers static types and explains how subtyping and several forms of polymorphism (parametric, ad hoc, and inclusion) support design patterns that contribute to reuse and extensibility.
Java Resources
-API for Java Platform, Standard Edition, version 6.
-The Java Tutorial: A practical guide for programmers.
Last Updated on January 17, 2013