CS 3500: Object-Oriented Design
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)
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)
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:
-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.
-Joshua Bloch, Effective Java, Second Edition, Addison-Wesley, 2008.
Recommended Free Online Textbook:
-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.
Last Updated on September 29, 2013 (Updated Katie’s office hours)