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.
Assignment Formatting Instructions
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.
Single notes files often cover multiple lectures.
Week | Topics | Notes, Readings, and Links | Assignments |
---|---|---|---|
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 Encapsulation |
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 Mutation |
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 |