CS 2102 (B10): 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 may use either DrJava or Eclipse for this course. Eclipse has a much higher learning curve, but is used in upper-level 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

Quizzes are available in myWPI. New quizzes are released at 1pm every Tuesday (due Wed night) and Friday (due Sun night).

Single notes files often cover multiple lectures.

Exam 1 will be in-class on Monday, November 15.

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

WeekTopicsNotes, Readings, and LinksAssignments
October 26-29 Migrating to Java For students without CS1101/1102
Notes: Migrating to Java
Bloch Reading: Item 18
Bloch Reading: Item 19
Background Survey (in myWPI)
Partner Request Survey (in myWPI)
Lab 1
Lab 1 advanced
Quiz 1 (due Thursday, Oct 28)
Quiz 2 (due Sunday, Oct 31)
Homework 1 (due Tuesday, Nov 2, 11:59pm)
November 1-5 Abstracting Over Methods
Implementations of an interface for Sets
Program Design under Invariants
Notes: Abstract classes
Notes: Abstract Data Types; Sets
Notes: BSTs and AVL trees
Bloch Reading: Item 18
Bloch Reading: Item 20
Code: BSTs at end of Thurs lecture
Code: Final BST implementation
Lab 2
Lab 2 advanced
Quiz 3 (due Wednesday, Nov 3)
Homework 2 (due Tuesday, Nov 9, 11:59pm)
Quiz 4 (due Sunday, Nov 7)
November 8-12 Heaps
Abstracting over Datatypes
Notes: Heaps
Notes: Priority Queues and Lists
Notes: Summary/Recap to Date
Notes: Data Abstraction
Exam Prep: Midterm prep guide
Extra: Google Code Quality Talk that discusses null in first 5 minutes
Lab 3
Quiz 5 (due 5am Thursday, Nov 11)
Homework 3 (due Tuesday, Nov 16, 11:59pm)
NO quiz due Monday, Nov 15
November 15-19 Exceptions
Abstracting over Methods
Abstracting over Class Hierarchies
Notes: Exceptions
Notes: Methods as Arguments
Code: Thursday lecture complete code
Notes: Methods over Variants as Arguments
Code: Friday lecture complete code Bloch Reading: Items 26, 27
Lab 4
Midterm Course Eval (in lieu of Tuesday quiz) Homework 4 (due Tuesday, Nov 23, 11:59pm)
Quiz 6 (due 11pm Tuesday, Nov 23)
November 22-23 Abstracting over Traversals
Thanksgiving Break
Notes: Visitors for Expressions
Nothing going out this week (no lab, no quiz, no homework). Enjoy the break
November 29-Dec 3 Infinite Trees
Cyclic Graphs
Notes: Infinite Trees
Code: Infinite Tree Code
Notes: Memoization
Notes: Graphs Intro
Notes: Graph termination
Extra: On for-loops
Bloch Reading: Items 5, 8, 9, 46
Quiz 7 (due Thursday Dec 2, 5am)
Lab 5
Homework 5 (due Tuesday, Dec 7, 11:59pm)
Quiz 8 (due Monday Dec 6, 5am)
Dec 6-Dec 10 Finding Routes
Notes: Returning Routes
Problems: Graph Practice Problems
Notes: Challenges of Mutation
Notes: Mutation, part 2
Bloch Reading: Items 15, 43
No quiz due Thursday Dec 9
Lab 6
Homework 6 (due Tuesday, Dec 14, 11:59pm)
No quiz due Monday Dec 13
Dec 13-Dec 16 Wrapping Up
Course Evals (Monday)
Final Exam (Tuesday)
Some last Java-isms (Thursday)
Exam Prep: Final prep guide
Notes: Wrap Up Notes
Bloch Reading: Items 25
No lab after the final