CS U370 Object-Oriented Design
Course Syllabus Spring 2008

Topics to be covered on the final exam

Instructor: Prof. Carole Hafner hafner@ccs.neu.edu, Office 446 WVH, Tel. 617-373-5116
Office Hours: Monday 4-6 p.m., Friday 1:30 - 3:00 p.m.
TA: Jingjing Duan duanjj@ccs.neu.edu, Office 226 WVH
Office Hours: Wednesday 12:30 - 2:30 p.m.

Schedule

Readings

Assignments


Course Administration and Rules

Introduction

The purpose of this course is to learn about software design through study and practice, progressing from the relatively simple designs of previous courses to software with more complex structure and behavior.  Students will:
  1. learn about abstract data types and the use of specifications as contracts
  2. understand and be able to apply the concepts of object, class, message, method, inheritance, genericity and polymorphism in object-oriented programming languages
  3. become acquainted with object-oriented design patterns, and the use of graphical design notations such as UML (unified modelling language)
  4. begin to develop an understanding of how various tools and techniques affect software re-use
  5. solidify and extend their software design and programming skills through class assignments
Prereq. CS U213/214

The textbook for this class is: Object-Oriented Design & Patterns, 2nd ed., by Cay Horstmann (John Wiley & Sons 2006).  All of the code in the book can be accessed at:  www.wiley.com/college/horstmann and  choosing "Go to the student companion site". Other materials will be provided as handouts or links to Web sites.

All programming for this class will be in Java 2 Standard Edition 6.  The Java development system (JDK) can be freely downloaded from http://java.sun.com/javase/downloads/.  (Note: Java 6.3 is the current download for PC's however the changes from Java 1.5 are minor.) Students are encouraged but not required to use Eclipse for program development.  Eclipse is available on all CCIS computers and is freely downloadable.  A short tutorial on Eclipse (not for power users but excellent for getting started) is available at  http://www.cs.armstrong.edu/liang/intro5e/SupplementJEclipse.pdf

Approximate Schedule of Topics and Readings

WEEK TOPICS                                                                                
READINGS  
1
1/8

1/11

Introduction to the course; levels of software design
Astraction-based design
OO Principles and the interface as a contract

Sec. 2.1-2.8


2
1/15
1/18

Java review + packages; protection; static variables and methods;
   factory methods; exception handling

Chapter 1, Clinger java review 1

3
1/22
1/25

The java type system I
30 minute Java Quiz;  Software Testing

Sec  7.1.1-7.1.3
Sec. 5.1
4
1/29

2/1

Software Testing (cont.)

Software Design Principles: UML Review; Dates and Calendars

Sec. 3.7; Wikipedia: "Unit Testing"
Wikipedia: "Black Box Testing"
Sec.  2.3-2.8, Sec. 3.1, 3.2, 3.4, 3.5
5
2/5
2/8

Designing reusable software I: enum types; Interfaces; polymorphism
Class Design; Inheritance; Dynamic Dispatch

Sec. 4.1-4.4, Sec. 7.1.4
Sec 6.1, 7.3
6
2/12
2/15

Recipe for Implementation of Immutable Classes
Refactoring; Design patterns; Singleton Pattern

Handout
Clinger Java Review II, Sec. 10.5
7
2/19
2/22

Refactoring (cont.)
Reusable software II: Aggregates and the iterator design pattern;
Generic types; java Collections framework


Sec. 5.1, 5.2
Sec. 7.7, 8.3; Java Tutorial: Collections
8
2/26
2/29

Java Collections framework (cont.); review for midterm
MIDTERM EXAM



 9
3/11
3/14

Other language features: Object class; Reflection
Deep and Shallow Copy

Sec 7.3, 7.6
Sec. 7.4
10
3/18
3/21

Begin Java GUI programming: Listeners, Timers
The Swing class hierarchy: The Composite Pattern


Sec. 4.5-4.8
Sec. 5.5, 6.6

11
3/25
3/28

 Drawing and Animation in Swing
 Layout Managers; The Strategy Pattern

Sec. 4.9-4.10, 6.7
Sec. 5.2-5.4
12
4/1
4/4

Other Design Patterns
The Visitor Pattern

Sec. 5.3, 5.6-5.8, 6.2-6.4
Sec. 10.6; Handout
13
4/8
4/11

Invariants and assertions
Proving programs correct

Sec. 3.6; Handout
14
4/15

Last class: review for final exam


Course Administration and Rules

Approximately half of the final grade will be determined by assignments, and the other half by the midterm and final exams. In order to get a passing grade in the course, you must get a passing grade on both the assignments and the two exams. (For example, an A on the exams and an F on the assignments will result in an F in the course, and vice versa.)  There will also be one or more quizzes, which may count as either assignments or exams at the discretion of the instructor. Some assignments may require students to work in teams, but most assignments and all quizzes and exams will be individual in nature.

Homework turned in late may be subject to a deduction from your grade; homework turned in very late may result in no credit.  Habitual absence from class meetings may result in a lower final grade, and will probably affect the treatment of any late homework.

Academic (Dis)Honesty: The individual assignments must be each student's own work.  Any group projects assigned must be the work of the students in the group.  Plagiarism or copying, or giving your program to other student, will result in official University disciplinary review. Security is an important aspect of software development. In this course, students are expected to protect the software they develop from plagiarists.  Failure to take reasonable steps to do this is considered equivalent to giving your program to another student.

Directories containing your java source files MUST be protected from unauthorized access.  The unix command:  chmod go-rw <file or directory name> restricts read and write permission to the owner for the file or directory.

There are no make-up exams or quizzes in this course.  Normally if a student misses an exam the student will receive a grade of  0 on that exam. Under unusual circumstances (such as documented serious illness), the student's grade on a missed exam will be replaced by the grade on the final exam.

Last modified: January 15, 2008