CS 3500: Object-Oriented Design

 

Fall 2013

Tuesday/Friday 9:50-11:30am in 10 Behrakis (moved from West Village G 102)


Home page:  http://www.ccs.neu.edu/course/cs3500f13/cs3500f13jys


Instructor: Dr. Jessica Young Schmidt

Office: West Village H 314

Office Hours: Tuesday 12:30-1:30pm, Thursday 10:30-11:30am, or by appointment

Email: jschmidt@ccs.neu.edu (please include “CS3500” in subject)


  1. Instructor designs and implements this class, leads lectures, creates the assignments, and exams.


Tutor: Katie Gilligan

Office Hours: Monday 3:00pm-5:00pm in West Village H 102

Email: kekg602@ccs.neu.edu (please include “CS3500” in subject)


Tutor: Lucas Haber

Office Hours: Thursday 1:00pm-3:00pm in West Village H 102

Email: lhaber9@ccs.neu.edu (please include “CS3500” in subject)


Tutor: Matt Freyre

Office Hours: Tuesday 3:15pm-5:15pm in West Village H 102

Email: freyrem@ccs.neu.edu (please include “CS3500” in subject)


  1. Tutors have, in the past year or two, mastered the material of this course; they hold office hours, grade assignments, and can remember what it’s like to be lost. They are here to gain a deeper understanding by teaching what they know to others.


You can also take advantage of the office hours held by the tutors from the other section of the course.


CCIS Tutoring: http://www.ccs.neu.edu/undergraduate/tutoring/


Required Textbooks:

  1. -Barbara Liskov and John Guttag, Program Development in Java: Abstraction, Specification, and Object-Oriented Design, Addison-Wesley, 2001.

  2. -Peter Sestoft, Java Precisely, Second Edition, MIT Press, 2005.

  3. -Joshua Bloch, Effective Java, Second Edition, Addison-Wesley, 2008.

Recommended Free Online Textbook:

  1. -Duane Bailey. Data Structures in Java, for the Principled Programmer, 2nd Edition McGraw Hill 2003.
    PDF available online at http://www.cs.williams.edu/javastructures/Welcome.html


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.


The course assumes proficiency with the systematic design of programs in a class-based language and some mathematical maturity. It demands curiosity and self-driven exploration and requires a serious commitment to practical hands-on programming.


Course Objectives

The course presents the theory and practice of object-oriented programming. The course enhances students’ understanding of the concepts of object, class, message, 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.


We also plan to add some material on most commonly used types of algorithms and data structures.