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.
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
Week | Topics | Notes, Readings, and Links | Assignments |
---|---|---|---|
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 Heaps 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) TBA 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 HashTables Cyclic Graphs Termination |
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 Mutation |
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 |