This book and CD set treats learning a programming language much like learning a spoken programming is best learned by immersion. Through building interesting programs and addressing real design issues much earlier than other texts, this book moves beyond the placement of semicolons and other syntactic details and is able to discuss the architecture of serious how delegation and inheritance allow objects to cooperate to do useful work. Throughout the text, the authors deal with programs that implement applications realistic enough to be convincing.