V22.0470-001 Object-Oriented Programming

Fall 2005
Class: Tuesdays and Thursdays, 3:30-4:45pm, WWH 102

Instructor: Robert Grimm, rgrimm@cs.nyu.edu
Office hours: Wednesdays, 2-3pm, 715 Broadway, room 711

TA: Ilya Rosenberg, account ilya in domain cs nyu edu
Office hours: Tuesdays, 5-6pm, 715 Broadway, room 1207

Grader: Theo Burry, tvb207@nyu.edu

[ Overview | Assignments | Syllabus | Compilers and Tools ]


Object-oriented programming is an undergraduate course on, ahem, object-oriented programming. The course covers how to structure large-scale software systems through object-oriented design, i.e., how to think about structuring such systems, patterns, i.e., how to leverage cookbook-like receipes that have worked for others, and programming, i.e., how to write the actual code. Object-oriented programming is powerful and popular, but, if abused, can also lead to unnecessarily complex and/or slow programs. Consequently, the primary goal of this course is to develop an appreciation for the benefits and costs of object-oriented programming. To this end, lectures introduce relevant concepts and assignments provide students with an opportunity to get their own hands muddy and to deepen their understanding.

Textbooks. We use both Java and C++ as programming languages. As a result, we rely on two required textbooks:

Exams. This course has both a mid-term, during class on 10/25/05, and a final exam.

Grading policy. The final grade is, approximately, composed of 40% for the assignments, 30% for the midterm, and 30% for the final exam. However, you cannot get an A if you hand in any assignment past the due date and time.

A word on academic integrity: Please familiarize yourself with the departmental statement on academic integrity. In accordance with departmental policy, any instance of academic dishonesty will result in an automatic F for the entire course.

Mailing list. Be sure to subscribe to the class mailing list v22_0470_001_fa05. Please send any questions to this list and not just the instructor and/or grader.




Compilers and Tools

Consistent with the first textbook, we use the latest version of Java, Java 2 Platform Standard Edition 5.0, née JDK 1.5. Sun provides implementations for Windows, Linux, and Solaris. Apple provides an implementation for Mac OS X 10.4. Note that the API documentation for JDK 1.5 typically needs to be downloaded and installed separately (in the case of OS X 10.4, from the Apple Developer Connection). Further note that Apple's release does not replace version 1.4.2 shipping with OS X 10.4. Rather, you need to explicitly set your Terminal's path for version 1.5.0; this script may help.

For C++, we are standardizing on gcc, the GNU Compiler Collection, as a compiler. It is the default compiler for both Linux and Mac OS X. For Windows, you need a Unix environment, such as Cygwin. You are welcome to use a different compiler, but your assignments must compile and run with gcc.

You may find the following tools and resources useful: