CS 2102 (B11): Object-Oriented Design Concepts
Lectures and Assignments

Home | Staff and Office Hours | Lectures and Assignments | MyWPI | Policies


There is no required textbook for this course. If you are intending to continue programming in Java beyond this course (e.g., CS, IMGD, or RBE majors), I strongly recommend Effective Java by Joshua Bloch. The readings for some lectures reference sections of this book for additional perspective; you will not be tested on material that appears solely in this book though.

You should not need a Java language manual for this class. If you find that you need a construct that we did not cover in class, ask about it on the discussion board. If you want more language details than we cover in lecture, you could consult the Learning the Java Language portion of the Java tutorial pages.


You may use either DrJava or Eclipse for this course. Eclipse has a much higher learning curve, but is used in upper-level lab CS courses (such as Software Engineering) and software-based jobs. If you are not going on to upper-level CS courses or if you prefer a gentler introduction to Java, we recommend DrJava. You are welcome to start in DrJava then switch to Eclipse mid-term. Lectures will use DrJava for demonstrations.

The DrJava documentation includes a useful QuickStart guide. Chapter 3 is enough to get you started once you have the software installed.

Separate instructions explain how to use the testing library with either programming environment.

Class Schedule

Exam 1 will be in-class on Friday, November 18.

Exam 2 will be in-class on Tuesday, December 13.

Single notes files often cover multiple lectures.

Assignment Formatting Instructions

WeekTopicsNotes, Readings, and LinksAssignments
October 25-28 Migrating to Java For students without CS1101/1102
Notes: Migrating to Java
Bloch Reading: Item 18
Bloch Reading: Item 19
Background Survey (in myWPI) -- due Friday 10pm
Partner Request Survey (in myWPI) -- due Thursday 5pm
Lab 1 (new to Java)
Lab 1 (know Java)
Homework 1 (Standard) (due Tuesday, Nov 1, 11:59pm)
Homework 1 (Advanced) (due Tuesday, Nov 1, 11:59pm)
Quiz 1 (due Sunday, Oct 30, 11:59pm)
October 30 - November 4 Abstract Classes
Abstract Datatypes (ADTs)
Interfaces and ADTs
Implementing Sets
Notes: Abstract classes
Notes: Abstract Data Types; Sets
Notes: Implementing Sets with Lists
Notes: BSTs and AVL trees
Extra: How ADTs, interfaces, etc fit together [PPT | PDF]
Code: BSTs at end of Friday lecture
Bloch Reading: Item 18
Bloch Reading: Item 20
Lab 2
Lab 2 advanced
Homework 2 (Standard and Advanced) (due Tuesday, Nov 8, 11:59pm)
Quiz 2 (due Sunday, Nov 6, 11:59pm)
November 7-11 BSTs and AVL Trees
Abstracting over Methods
Abstracting over Datatypes
Notes: Continue with BST/AVL notes from last week
Code: Final BST implementation
Extra: AVL trees applet (from Monday lecture)
Notes: Performance
Notes: Heaps
Notes: Data Abstraction (Generics)
Notes: Abstracting over methods
Code: Friday before and after
Exam Prep: Midterm prep guide
Lab 3 Standard
Lab 3 Advanced
Hwk 3 Standard
Hwk 3 Advanced
Quiz 3 (due Sunday, Nov 13, 11:59pm)
November 14-18 Visitors (Abstracting over Traversals)
Midterm (Friday)
Code: Starter File for Monday
Notes: Visitors for Expressions
Code: Code at end of Tuesday
Notes: LinkedLists and for-loops
Bloch Reading: Items 26, 27
Extra: Google Code Quality Talk that discusses null in first 5 minutes
Lab 4 (for those new to Java)
Lab 4 (everyone else) or work through the code from Mon/Tues notes
Hwk 4 (for everyone)
Midterm course eval (in lieu of quiz, open through Tuesday night)
November 21-22 Encapsulation
Thanksgiving Break
Notes: Encapsulation
Code: Starter file for Monday
Code: Code at the end of Tuesday.
Extra: Article on Why getters and setters are evil
Nothing going out this week (no lab, no quiz, no homework). Enjoy the break
November 28 - December 2 Exceptions
Cyclic Graphs
Code: Starter for Monday (from end of last class)
Notes: Exceptions
Code: Exceptions Code
Notes: Hashtables
Code: Hashtables Code
Notes: Graphs Intro
Code: Graphs Code
Notes: Avoiding Infinite Loops
Code: equals/hashCode example
Bloch Reading: Items 5, 8, 9, 46
Lab 5 (Basic Practice)
Lab 5 (Infinite Trees)
Code practice or Lab: Gradebooks
Homework 5 (due Tuesday Dec 6, 11:59pm)
Quiz 4 (due Sunday, Dec 4, 11:59pm)
Dec 5-Dec 9 Finding Routes in Graphs
Code: Starter zip for Thursday (FindRoute)
Notes: Returning Routes
Notes: Encapsulating Routes
Exam Prep: Final prep guide
Bloch Reading: Items 15, 43
Lab 6 (practice exceptions/encapsulation)
Lab 6 (Java's testing framework)
Homework 6 (due Wednesday, Dec 14, 11:59pm)
No quiz this week
Dec 12-Dec 15 Wrapping Up
Course Evals (Monday)
Final Exam (Tuesday)
Some last Java-isms (Thursday)
Bloch Reading: Items 25
Makeup Quiz (due Thursday, Dec 15, noon)
No lab after the final