The Artima Developer Community
Seminars | Objects & Java | Design Workshop | Jini & Distrib | Objects & Patterns | Modules

Objects & Patterns: Five Days of Java Design
A Hands-on Intensive Workshop Taught by Bruce Eckel & Bill Venners
August 26 to 30 in Crested Butte, Colorado

Click Here for Information and Registration

The goal of this exercise-based workshop is to give you a set of tools covering the design aspects of the software-building life cycle, which will be presented in two parts:

  1. Java design idioms and programming techniques
  2. Practical understanding and application of Design Patterns

The workshop combines lectures, guided exercises, and team-based independent work to demonstrate how object-oriented design with patterns and idioms can work in a production environment. As with all Bruce Eckel's seminars, the emphasis will be on getting you "thinking in" objects.

Comments From Students

Object Design Workshop

An important part of good object-oriented design is well-designed objects. The first half of the seminar, which is called the Object Design Workshop, focuses on guidelines and idioms that will help you create well-designed objects. Each guideline and idiom will be explained and justified, and then discussed by the attendees. This discussion is an integral part of the workshop, aimed at facilitating a conversation about design among peers that can help everyone to learn from each other's experiences and perspectives. At the end of the Object Design Workshop, you will walk away with a specfic set of practical guidelines and concrete idioms that you can draw upon in your future object designs.

The Object Design Workshop also includes a hands-on design project. Periodically, the attendees of the workshop will break up into small groups, each of which is assigned an API design project. Each group will document their design with UML and/or javadoc HTML pages, and present their design to the rest of the class, who will critique it mercilessly. The point of the design reviews is the same as the discussions -- to draw out the experience and perspectives of the entire group, and enable everyone to learn from each other.

The Object Design Workshop focuses heavily on the designing with Java. Although many of the guidelines are applicable to any object-oriented language, all examples are shown in Java. Most of the idioms, by contrast, are specific to Java. In addition, the end result of each API design project will be a Java package.

Here's a list of the guidelines and idioms that will be covered during the Object Design Workshop: (Each title is linked to an online copy of the lecture handout.):

Designing with Objects

Designing with Composition and Inheritance

Designing with Interfaces

Designing Object Semantics

Guideline Grab Bag

Articles covering most of these topics are posted at:

Design Patterns

Probably the most important step forward in object-oriented design is the "design patterns" movement, chronicled in Design Patterns, by Gamma, Helm, Johnson & Vlissides (Addison-Wesley 1995). That book shows 23 different solutions to particular classes of problems. In this section, the basic concepts of design patterns will be introduced along with examples. This should whet your appetite to read Design Patterns (a source of what has now become an essential, almost mandatory, vocabulary for OOP programmers).

The material in this section shows design patterns that have been used in the Java Standard Libraries, and also follows the Design Patterns chapter in Thinking in Java. Much of the presentation is an example of the design evolution process, starting with an initial solution and moving through the logic and process of evolving the solution to more appropriate designs. The last project shown (a trash recycling simulation) has evolved over time, and you can look at that evolution as a prototype for the way your own design can start as an adequate solution to a particular problem and evolve into a flexible approach to a class of problems.

Following each lecture there will be a set of patterns exercises for you to solve, where you are guided to write code to apply particular patterns to the solution of programming problems.


A high degree of comfort with object-oriented terminology. Implementation experience with Java.

Thinking in Java, Bruce Eckel ($31.96 from Amazon) or
Bruce Eckel's Hands-On Java CD ($50 from MindView)

Recommended Reading (before the seminar)

Interface Design: Best Practices in Object-Oriented API Design in Java, by Bill Venners (free download)

Chapter 1 of Design Patterns: Elements of Reusable Object-Oriented Software, by Gamma et al.

The Design Patterns chapter of the online 2nd edition of Thinking in Java (this chapter will be evolving over time).

What you should bring

Your notebook computer with the Java 2 development environment of your choice loaded and tested.

A willingness to actively participate in group activities.

Click Here to Register

The first iteration of this seminar, which took place August 9 to 13, 1999, in Crested Butte, Colorado, was a big success. Here's a picture of Bruce, Bill, and a few seminar attendees on top of Mount Crested Butte, the nearby 12,000 foot peak that several of us climbed during one four hour afternoon break. We're all smiling so glowingly in this picture because we'd been having so much fun designing software.

If you have any questions about this seminar, please e-mail Bill Venners at or Bruce Eckel at

Bruce Eckel's Home Page:

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use