There is a lot of material on Scratch Programming on the Internet, including videos, online courses, Scratch projects, and so on, but, most of it is introductory. There is very little that can take students to the next level, where they can apply their Scratch and CS concepts to exciting and challenging problems. There is also very little material that shows students how to design complex projects, and introduces them to the process of programming. This book is meant to fill these gaps. In short, this book is for students who are already familiar with Scratch: its various commands, its user interface, and how it represents a variety of CS concepts such as, variables, conditional statements, looping, and so on. The book does not attempt to teach these concepts, but, it does provide a quick introduction to each concept in the free Supplement to the book. I call this an “interactive book” because it is something between a traditional book – which is static and passive – and a fully interactive online course. It does look like a book: it has a series of chapters, diagrams, a lot of text, etc. But it also contains links to online Scratch programs, code snippets, references, which the reader is expected to click and explore to fully benefit from the ideas presented. I have organized the book as a series of independent Scratch projects – each of which describes how to design and build an interesting and challenging Scratch program. Each project progresses in stages – from a simple implementation to increasingly complex versions. You can read these chapters in any order you like, although I have tried to arrange the chapters in an increasing order of challenge. Programming is a powerful tool that can be applied to virtually any field of human endeavor. I have tried to maintain a good diversity of applications in this book. You will find the following types of projects: -Simple ball games -Puzzle games -Memory games -Science simulations -Math games -Geometric designs Learn the concepts: As the experts will tell you, concepts are really understood and internalized when you apply them to solve problems. The purpose of this book is to help you apply Scratch and CS concepts to solve interesting and challenging programming problems. Every chapter lists, at the very start, the Scratch and CS concepts that you will apply while building that project. Learn the design process: Besides these technical concepts, you will also learn the "divide and conquer" approach of problem-solving. This is a fancy term for the technique of breaking down a bigger problem into many smaller problems and solving them separately one by one. You will also learn the “iterative design process” for designing programs. This is another fancy name that describes the idea that something complex can be designed in a repeated idea -> implement -> test cycle, such that in each cycle we add a little more complexity. You will also learn a bit of “project management”. Project management helps you undertake a project, such as creating a complex program, and complete it in a reasonable time, with reasonable effort, and with reasonable quality. It involves things such as planning tasks, tracking their progress, etc. Audience for the book: The book is intended for students who are already familiar with Scratch. The level of challenge is tuned for middle- and high-school students, but elementary-school students who have picked up all the concepts in an introductory course might also be able to enjoy the projects presented in this book. The book would be a great resource for teachers who teach Scratch programming. They could use the projects to teach advanced tricks of programming and to show how complex programs are designed. Finally, the book is for anyone who wants to get the wonderful taste of the entertaining and creative aspect of Computer Programming.