Who this book is for: This book is perfect for students who are keen to learn CS concepts and have no prior programming background. In addition to learning a lot of Computer Science concepts, you will do a series of interesting projects and programming activities. You will work on a few big projects, and you will also write many small “practice programs”. You will learn and apply concepts of computer programming and computer science when you write these programs. Scratch language: The choice of programming language is critical to achieve the intended objectives of teaching CS to beginners. In this book we use the Scratch programming language. Scratch is an entertaining and powerful language, and yet it is easy to learn. It is known as a "low floor and high ceiling" language – it allows the learner to build his/her vocabulary without getting mired in the complexities of syntax and grammar. There is a lot of material on Scratch Programming on the Internet, including videos, online courses, Scratch projects, and so on. This book is meant to offer a more organized and tutorial-like treatment to learning Scratch. It is also focused more on learning CS concepts rather than Scratch itself. Why learn programming: The idea of using computer programming as a medium for learning is rapidly gaining acceptance. The benefits of learning programming and computer science concepts well before college – even in elementary grades – are well-understood. Here is a list of some of the amazing things that happen when children engage in computer programming: - Children become active and creative learners, because they explore ideas through a hands-on activity with an infinitely powerful tool. - They learn to think about and analyze their own thinking, because that is the only way to program computers. - They learn to solve complex problems by breaking them into smaller sub-problems. - They learn a new way of thinking (called "computational" thinking). - In the world of programming, answers are not simply "right" or "wrong"; this prepares a child's mindset for real-life problems. - Children's learning processes are transformed from acquiring facts to thinking creatively and analytically. How the book is organized: The book is organized as a series of units – each containing a bunch of CS concepts and associated programming activities. Typically, each unit also includes a major programming project that helps you practice all the concepts learnt till then. At the end, an appendix lists answers to all “review questions” and another appendix provides links to working programs for most of the programming exercises in the book.