“What can attacking aliens teach us about programming? Everything from basic data to distributed computing! This book uses animations to teach this very broad sweep of topics, using simple games to motivate and illustrate ideas, while grounding everything in strong design processes—showing that introductory texts do not need to (falsely) choose between sparking interest and maintaining rigor.” (Shriram Krishnamurthi, Computer Science Department, Brown University)
“This is one of those rare programming books that is much more about algorithmic thinking and problem solving than a specific programming language. The author takes us on a gentle and entertaining journey to improve our problem solving skills using variations of Aliens Attack and other attractive challenges. Warmly recommended to increase your logical thinking, even if you are not a computer science student.” (Pieter Koopman, Institute for Computing and Information Sciences Radboud, University Nijmegen)
“I highly recommended this book for those who want to start a career as computer engineers, as well as for those who, even though they are not interested in computer science as a career, want to acquire a clear idea about how computer scientists deal with problem solving. The book introduces us in a clear and entertaining way to the main problem-solving techniques, applicable both within and outside the area of computer science. In addition, the reader will be able to experience the pleasure of creating a video game step by step, understanding all the development phases.” (Fernando Rubio, Computing Science Department, Universidad Complutense de Madrid)
“This book teaches introductory programming very thoroughly. Throughout the book there are detailed and insightful discussions of the code, with a strong emphasis on unit testing, and careful definition of good example data for use in tests. Students learn to build a variety of graphical games, in particular eight versions of "Space Invaders", which reappears throughout the book, providing a natural context to discuss not only basics such as list programming, but also iterative design, refactoring, and (in the final chapters) even distributed systems, with the race conditions and trade-offs that then appear. The book even introduces object-orientation as an alternative way to structure code, as an application of Racket's first-class functions. This book is not only a good introduction to programming in the functional style, it also gives many useful pointers to concepts that will return in a variety of later courses. I recommend it!” (John Hughes, Computing Science Department, Chalmers University of Technology)
“Marco Morazán has delivered a book for the freshman year that takes readers further than any other book. It introduces complete novices to the discipline of systematically designing programs. Almost on the sly, the book shows the reader how to create multi-player video games using iterative refinement and in the process clearly explains the concept of a synchronization bug, one of the most subtle problems of contemporary system development. The power of the approach is amazing. And you, dear young reader, are in for a treat.” (Matthias Felleisen, Northeastern University, Boston, MA, USA)