Sedgewick and Wayne’s book is a systematic treatise on the fundamentals of computer science. At a high level, the book covers the basics, object-oriented programming, algorithms, and plenty of theory. It is geared toward first-year college students, and many schools I know use this book in their high school advanced placement (AP) courses. The book assumes arithmetic proficiency and some basic high school coursework, but the motivated student will find this book accessible. It is not a light read for beginners, however, and students are expected to invest a significant amount of time into reading it. A computer is a must for understanding and exercising the concepts presented.

The book takes the approach of teaching the fundamentals using Java programming. Examples from science, mathematics, engineering, and finance are used to walk through scenarios. The authors begin by introducing basic programming elements and then functions. The concepts are introduced in a linear fashion. The question-answer sections and exercises are wonderful, and I highly encourage students to tackle all of them. The problems are approached in a logical way. Take the presentation of the Tower of Hanoi problem. It starts with the problem statement and problem design, presented in a very clear way, and then solves the problem with an elegant Java solution and runs through the results with sample output and diagrams. A lot of material is included, and one needs to unpack it in layers. The book can also be used in a spiraled platform to teach meaning; for example, you could cover the basics of many concepts as a first-level course, and then go into depth and look at more details as a second-level course. At the end, the authors explain machine architecture, including Intel architectures, and tie together concepts of computer design with software programming.

The exercises are very challenging, but pair programming could be used as a study tool. The companion website has a wealth of information, including selected solutions, chapter summaries, and links to some videos. Overall, this is a rigorous and pleasant-to-read textbook and I highly recommend it for introductory coursework with Java programming.

More reviews about this item: Amazon