Squeak Learn Programming with Robots - Ducasse, Stéphane (Apress, 2013)
The goal of this book is to explain elementary programming concepts (such as loops, abstraction, composition, and conditionals) to novices of all ages. I believe that learning by experimenting and solving problems is central to human knowledge acquisition. Therefore, I have presented programming concepts through simple problems such as drawing golden rectangles or simulating animal behavior. My ultimate goal is to teach you object-oriented programming, because this particular paradigm provides an excellent metaphor for teaching programming. However, objectoriented programming requires some more elementary notions of programming and abstraction. Therefore, I wrote this book to present these basic programming concepts in an elementary programming environment with the special perspective that this book is the first in a series of two books. Nevertheless, this book is completely self-contained and does not require you to read the next one. The second book introduces another small programming environment. It focuses on intermediate-level topics such as finding a path through a maze and drawing fractals. It also acts as a companion book for readers who want to know more and who want to adapt the environment of this book to their own needs. Finally, it introduces object-oriented programming. The ideal reader I have in mind is an individual who wants to have fun programming. This person may be a teenager or an adult, a schoolteacher, or somebody teaching programming to children in some other organization. Such an individual does not have to be fluent in programming in any language. The material of this book was originally developed for my wife, who is a physics and mathematics teacher in a French school where the students are between eleven and fifteen years old. In late 1998, my wife was asked to teach computing science, and she was dismayed by the lack of appropriate material. She started out teaching HTML, Word, and other topics, and she remained dissatisfied, since these approaches failed to promote a scientific attitude toward computing science. Her goal was to teach computer science as a process of attacking problems and finding solutions.