CS 2102 (B12): 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.


Information about grading is on the policies page

Assignment Formatting Instructions

Due Dates (Exams, Homeworks, and Quizzes)

Exam 1 will be in-class on Thursday, November 15.
Exam 2 will be in-class on Tuesday, December 11.

Quizzes will be due each week on Thursday night (11:59pm, starting Nov 1). Quizzes will cover material through Tuesday lecture, and will thus be posted just after class each Tuesday.

Homeworks will be due each week on Tuesday night (11:59pm). Homeworks will cover material through Friday lecture, and will be posted each Wednesday.

Class Schedule

Single notes files often cover multiple lectures.

WeekTopicsNotes, Readings, and LinksAssignments
October 23-26 Migrating to Java For students without CS1101/1102
Notes: Migrating to Java
Bloch Reading: Item 18
Bloch Reading: Item 19
Extra: Recap and practice for week 1
Code: Friday's family tree code
Code: Family tree code with advanced use of constructors
Background Survey (in myWPI) -- due Friday 11pm
Partner Information (in myWPI) -- due Friday 11pm
Lab 1 (new to Java)
Lab 1 (know Java)
Homework 1 (Standard) (due Tuesday, Oct 30, 11:59pm)
Homework 1 (Advanced) (due Tuesday, Oct 30, 11:59pm)
October 28 - November 2 Abstract Classes
Abstract Datatypes (ADTs)
Interfaces and ADTs
Implementing Sets
Handout: Starter file for Monday
Lecture (Monday): Abstract classes [PPTX | PDF ]
Notes: Abstract Data Types; Sets
Notes: BSTs and AVL trees
Extra: Gentle intro to removing type questions
Notes: Implementing BSTs in Java
Handout: Friday pages 1 and 2
Extra: AVL trees applet
Extra: Recap for week 2
Extra: How ADTs, interfaces, etc fit together [PPT | PDF]
Bloch Reading: Item 18
Bloch Reading: Item 20
Lab 2 (new to Java)
Lab 2 advanced (know Java) -- if you found Monday's material very easy, skim the "new to Java" lab to make sure it has no surprises, then try this one
Quiz 1 (due Thursday, Nov 1, 11:59pm)
Homework 2 (Standard and Advanced) (due Tuesday, Nov 6, 11:59pm)
November 5-9 BSTS as Sets
Java Lists
Notes: Connecting BSTs and Isets
Notes: Lists in Java
Code: Starter file for Thursday
Notes: Encapsulation
Code: Code at the end of Thursday.
Extra: Recap for week 3
Exam Prep: Midterm prep guide
Lab 3 Standard
Lab 3 Advanced
Quiz 2 (due Thursday, Nov 8, 11:59pm)
Hwk 3 (due Tuesday, Nov 13, 11:59pm)
November 12-16 Heaps
Midterm (Thursday)
Object and Generics
Notes: Heaps
Extra: Article on Why getters and setters are evil
Notes: Data Abstraction (Generics)
Lab 4 (basic input/output in Java)
Lab 4 Advanced
During lab, you may also work on sample midterm questions
Quiz 3 (due Thursday, Nov 15, 11:59pm)
Hwk 4 (everyone)
November 19-20 Exceptions
Thanksgiving Break
Notes: Exceptions
Code: Starter file for Monday
Nothing going out this week (no lab, no quiz, no homework). Enjoy the break!
November 26 - November 30 Hashtables
Abstracting over Methods
Code: Monday starter file full, for computer work or single-page for paper notes
Notes: Hashtables
Code: Tuesday starter file
Code: End of Monday Hashtables Code
Notes: Method Abstraction
Notes: Prep for Thursday (code Notes: Visitors for Expressions
Handout: Thursday in-class handout
Code: Code at end of Thursday
Bloch Reading: Items 26, 27
Lab 5 (Standard)
Lab 5 (Advanced--Infinite Trees)
Hwk 5
Quiz 4 (due Thursday, Nov 29, 11:59pm)
Dec 3-Dec 7 Graphs
Code: Monday starter file
Notes: Graphs Intro
Code: Graphs code at end of Monday
Notes: Avoiding Infinite Loops
Code: Starter code for Thursday (the code from end of Tuesday)
Notes: Returning Routes
Extra: Encapsulating Routes
Notes: Challenges of Mutation
Exam Prep: Final prep guide
Bloch Reading: Iems 15, 43
Lab 6 (graphs and generics)
Lab 6 (advanced)
For lab 6, you can also teach yourself the JUnit testing framework
Quiz 5 (due Thursday, Dec 6, 11:59pm)
Homework 6 (due Wednesday, Dec 12, 11:59pm)
Dec 10-Dec 13 Wrapping Up
Course Evals (Monday)
Final Exam (Tuesday)
Some last Java-isms and Exam Review (Thursday)
Notes: Wrap Up Notes
Code: Loops and arrays code
Bloch Reading: Items 25
Makeup Quiz (due Thursday, Dec 13, 5pm)
Final homework will be due Wednesday at 11:59pm
No lab after the final, but staff will be available in FL021 (zoo lab) from 11-7 for office hours for homework questions