Course Schedule
The following publications are referred to on
the schedule below:
- Bloch
- Joshua Bloch, Effective Java, Addison-Wesley, 2001. An excellent
book of programming tips particularly relevant to Java.
- Fowler
- Martin Fowler, Refactoring: Improving the Design of
Existing Code, Addison-Wesley, 1999.
- Freeman
- Eric Freeman, Elisabeth Freeman, Kathy Sierra and Bert
Bates, Head First Design Patterns, O'Reilly, 2004. Available at http://proquest.safaribooksonline.com/0596007124
- Goetz
- Brian Goetz, Java Concurrency in Practice,
Addison-Wesley, 2006.
- Harold
- Elliotte Rusty Harold, Java Network Programming, 3rd edition,
O'Reilly, 2004. This is available online at http://proquest.safaribooksonline.com/0596007213
- Horstmann
- Cay Horstmann, Object-Oriented Design and Patterns,
John Wiley & Sons, 2004.
- Skrien
- Dale Skrien, Object-Oriented Design Using Java, McGraw-Hill, 2009.
- Sept. 5: Why design matters, Java intro
- Readings
- Skrien, Chapter 1
- Donald Knuth, Computer Programming as an Art
- Java Tutorial, sections called Classes, Objects, and More on
Classes - you only need to read this if you are new to Java.
- Examples
- HelloWorld.java
- HelloFromVenus.java
- Homework 1: First Sip of
Java
Sept. 8: Swing, Java Strings
- Readings
- Java
Tutorial on Strings
- Java
Tutorial on Swing - read the sections called A Visual Index
to the Swing Components, Using Top-Level Containers and The
JComponent Class
- Examples
- Hello with GUI
- Hello from Venus with GUI
- Text editor
Sept. 10: Java Exceptions and Packages
- Readings
- The
Java Tutorial on Packages
- The
Java Tutorial on Exceptions
- Homework 2: Postcard maker
- Starter project
- Examples
- Hello with GUI
ColorPanel.java
Sept. 15: Fundamentals of object orientation,
UML class diagrams
- Readings
- Skrien, Chapter 2, Appendix sections A.0-A.1
Sept. 17: Preconditions and postconditions
- Readings
- Skrien, 4.6
- Homework 3: Polynomial
- Polynomial.java
Sept. 22: Class invariants
- Readings
- Skrien, 4.4-4.5
Sept. 24: Mountain Day!
Sept. 29: Method design
- Readings
- Skrien, 4.0-4.3
- Homework 4:
- Style Matters!
- Anagram.jar
Oct. 1: In-class redesign exercise
- Before redesign
- After redesign
Oct. 6: Inheritance
- Readings
- Skrien, Chapter 3
- Homework 5:
- Subtyping
- Sorter.jar
Oct. 8: Testing introduction
- Readings
- JUnit
Test Infected: Programmers Love Writing Tests
Oct. 15: Unit testing
- Readings: None
- Homework 6: Unit
testing
Oct. 20-24: Take home midterm
Sample midterm questions
Sample midterm answers
Midterm solution
PhotoViewer solution
Oct. 20: .equals, clone, refactoring
- Readings
- Skrien, 4.7-4.11
Oct. 22: Refactoring
- Readings
- Fowler, Chapters 2-3
Oct. 27: Effective exception handling
- Readings
- Bloch Chapter 8
Oct. 29: Identifying classes
- Readings
- Skrien, 5.0-5.5
- Homework 7: Finding the abstraction
- Monopoly rules
- Candidate classes
developed in class
Nov. 3: Immutability, UML Sequence diagrams, Law of Demeter
- Readings
- Skrien, 5.6-5.8, Appendix A.2
- The Paperboy, the Wallet, and the Law of Demeter
- Updated monopoly design
including a sequence diagram for Player.playTurn and a partial
class hierarchy for board spaces
Nov. 5: Introduction to design patterns, Strategy pattern
- Readings
- Skrien 7.0
- Freeman, chapter called Welcome to Design Patterns
- Homework 8: Identifying classes
- Updated monopoly design
including some new class diagrams
Nov. 10: Adapter pattern, Singleton pattern
- Readings
- Skrien 7.1-7.2
Nov. 12: No class
Nov. 17: Template Method
- Readings
- Freeman, Chapter on Encapsulating Algorithms
Nov. 19: Iterator, Command and Factory patterns
- Readings
- Skrien, 7.3-7.5
- Homework 9: Designing for reuse
Nov. 24: Monpooly disucssion: Free parking
strategies, limiting number of houses and hotels
Dec. 1: Observer Pattern and Model-View-Controller
- Readings
- Skrien, 8.0-8.4
- Homework 10: Model-View-Controller
Dec. 3: Controllers
Dec. 8: Prototype pattern, UML state diagrams, State pattern
- Readings
- Skrien 8.5-8.6, Appendix A.3
Dec. 10: Concluding remarks