This text is an exploration into computer science, programming principles and advanced features of the Java language. The text is useful for anyone interested in learning or reinforcing introductory programming concepts and beginning to take advantage of many of the exciting attributes of the Java language. Now updated with Java 1.5, Big Java, Second Edition remains the definitive introduction to programming. Horstmann, in his extensive teaching and industry experience, has always emphasized that those who truly want to study the discipline of Computer Science and the art of programming must, before writing a line of code, first learn to think like a problem solver. With this in mind, the first part of the text is focused not on programming as an abstract exercise, but on fundamental principles of programming and problem solving. Java is both the tool to be mastered and the key to understanding basic computer science concepts. The second part of this text introduces advanced concepts of the Java programming language. Assuming an understanding of programming concepts at this point, the author offers the reader an in-depth look into how Java relates to searching and sorting, data structures, multithreading, networking, database connectivity, XML, and Java Server Pages. In addition, the author also offers many reference resources in the appendices, including the Java Library, HTML, running applets, and number systems. Throughout the text, readers will find notes that cover historical and social aspects of computing and capsule introductions to advanced topics of computer science. These optional features provide valuable context for those interested in going more deeply into the subject.