Felleisen, Findler, Flatt, Gray, Krishnamurthi, Proulx How to Design Classes available from NU Reprographics in 11 EL, 2006
Gamma, Helm, Johnson, Vlissides Design Patterns - Elements of Reusable Object-Oriented Software.
Addison Wesley, 1995
a comprehensive study of design patterns
Felleisen, Findler, Flatt, Krishnamurthi How to Design Programs.
MIT Press, 2001
Part 1 is highly recommended for those that did not
take CSU 211
Felleisen, Friedman A Little Java, A Few Patterns.
MIT Press, 1998
why all what is in HtDP matters and how it scales to Java