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.
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.
Week | Topics | Notes, Readings, and Links | Assignments |
---|---|---|---|
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 Lists 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 Memoization Cyclic Graphs Termination |
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 Mutation |
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 |