Library catalog for the course
Effective Java (2nd Edition)
|Highly recommended, the "CLRS" of Java design.|
Design Patterns: Elements of Reusable Object-Oriented Software
|Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm|
|The influential book that introduced the concept of design patterns.|
The majority of these are still in wide spread use today.
Although the language of use is C++ and Smalltalk, it isn't particularly difficult to translate these to Java.
|A.K.A. GoF (Gang of Four)|
Refactoring: Improving the Design of Existing Code
|Mostly important for historic reasons, since you are probably familiar|
with the majority of the items here from your favourite IDE.
But refactoring is still incredibly important and this is the seminal work on the topic.
Test Driven Development: By Example
Domain-Driven Design :Tackling Complexity in the Heart of Software
Growing Object-oriented Software, Guided by Tests
|Freeman, S., Pryce, N|
|Addison Wesley, 2010|