Following the style of Conrad Barski’s Land of Lisp [1], the authors of this book use games to teach the concepts of the programming language Racket, which is a descendant of Lisp. Comics interleaved with the chapters lend a lighthearted tone to the subject matter. Each chapter helps the main character, Chad, work his way through Dr. Racket’s domain, so that by the end of the book, Chad (and, hence, the reader) is ready to dive deeper into programming with Racket.
While the intended audience is the novice programmer, this textbook is useful for anyone who would like an introduction to the Lisp family of programs. The introduction tells how Racket was derived from Scheme as a way to teach math in a creative way to middle and high school students. The authors note that the developers include “structures, class systems, exceptions, … libraries for graphical user interfaces and many other things” to make the language robust enough to develop the systems that students can use to create their games.
There is a logical progression of material covered in each chapter, and each chapter builds on the previous one. Readers are encouraged to download the “drRacket” programming development environment (PDE) to try out the programs as they read the book. Chapter 1 presents an overview and instructions on using the PDE. Games are included throughout the book to illustrate the concepts described in each chapter.
The first game, “Guess My Number,” introduces readers to the program structure in chapter 2. The next three chapters present syntax, semantics, variables, lists, structures, conditions, decisions, and defines, with plenty of examples to try out. Finally, the graphical user interface library is introduced and “Guess My Number” is updated to use it.
The next game, “Robot Snake,” appears in chapter 6 to illustrate recursion as a list-eating function. It also serves to go deeper into the graphical user interface library for visual rendering. Before moving on to the next game, chapter 7 presents the concept of lambda.
In the next chapter, the game is “Orc Battle.” Chapter 8 delves deeper into structures and how they can be used to model the program domain (or world, as it is called here). The idea of functional programming is discussed in this chapter, along with how to enable structures to be mutable even when deeply embedded in lists. Constructor, accessor, and mutator functions are also presented.
Before the next game is introduced, chapter 9 presents many flavors of for loops and how they can be used to process lists and combine the results in different ways. This short chapter is a must-read to understand the code in subsequent chapters.
The next game, “Dice of Doom,” is introduced in chapter 10 and further refined in chapters 11 and 12. This application makes use of a game tree. The first iteration of the program sets up a 2x2 playing field to demonstrate how the game tree works. Lazy evaluation, delayed computation, and memoization are introduced to optimize performance and allow larger playing fields. Finally, the artificial intelligence (AI) algorithm minimax is added to the game to allow the computer to play against a human.
The final game, “Hungry Henry,” is used to introduce the concept of distributed programming. Chapter 13 describes the basics and how to set up a server and clients, while chapter 14 follows up with the game implementation, which demonstrates the distributed programming strategy.
To end the book, the very last chapter, “Good-Bye,” discusses the idea of a meta-programming language and provides some examples of how Racket can be used in more advanced ways. Finally, Chad, our comic hero, has the whole realm of computer science to explore in a whole new way.
Despite the fluff of comics and games, this is a textbook for serious learning. Readers are encouraged to experiment as they go along and to reference the documentation found in the drRacket PDE to learn more about Racket. While the authors have an earnest enthusiasm for Racket that makes the work appealing to read, expect to be challenged along the way.
In summary, the book intends to teach the concepts of the programming language Racket in a fun way, appealing to novice programmers through the use of games and comics. It proves to be a good introduction to the Lisp family of programs. By the end of the book, the reader should have a good understanding of how to program in Racket.
More reviews about this item: Amazon, Goodreads