Preface Part 1: Computational Thinking 1. What is Computational Thinking? 2. Logical and Algorithmic Thinking 3. Problem Solving and Decomposition 4. Abstraction and Modelling 5. Anticipating and Dealing with Errors 6. Evaluating a Solution Part 2: Computational Thinking in Software Development 7. Tutorial for Python Beginners 8. Effective Building Blocks 9. Organising Your Code 10 . Using Abstractions and Patterns 11. Effective Modelling 12. Testing and Evaluating Programs 13. A Guided Example Appendix
Karl Beecher is an author and software developer. Before moving into academia, Karl worked as a software engineer and in 2009, he was awarded a PhD in Computer Science. He worked at the Free University of Berlin before returning to industry to co-found Endocode, an IT services firm. In 2014 Karl published his first book, Brown Dogs and Barbers.
'A `must-read' for students embarking on their first major projects, and any teacher stepping up to the challenge of teaching Computing at school. This is not just a book about programming, more a template for teaching. Karl Beecher speaks in plain English. Incisive insight and practical advice, standing independent of the Python exemplars used, predicated as it is on a holistic understanding of the subject terrain.' -- Roger Davies * and Editor, Computing At School, Tenderfoot Training Project * 'I really enjoyed this book - it bridges the gap between the very practical, but perhaps narrow, field of computer programming with the real world problems that computer scientists might need to solve. The issue with encouraging young people to learn 'coding' is that they often struggle to understand how and when to use specific concepts and ideas. The underlying principles and real world applications are essential, and much harder to put across, than remembering the syntax for an IF statement. The discussions are presented in a readable format that would be suitable for bright GCSE students and should be essential reading for all A Level computer scientists. With the shift in focus at GCSE and A Level alike, from 'programming' to 'computational thinking', explanations and examples of abstraction, decomposition and generalisation, along with modelling, logic and efficiency are both engaging and useful.' -- Mark Clarkson * Subject Leader and CAS Master Teacher * 'Computational Thinking is a sprint through the theoretical underpinnings of computation through to their application and the creation of software. The thirteen chapters start with an explanation of what is computational thinking, move through logical and algorithmic thinking, abstraction and modelling, to then focus on how to apply these concepts. The middle set of chapters cover how to create software with a focus on object-oriented solutions with a relatively short discussion on testing. Python is used as the programming language to demonstrate the use of the various techniques introduced in the early chapters but it would be straight forward to convert the examples to other similar languages such as Java, C#, etc. The final chapter provides a guided example based on the creation of a computer-controlled home automation system. Each chapter has a set of exercises to work through and model answers for these are supplied in an appendix. This is a very good overview of a very large field. While all of the topics are deserving of their own book the strength of this book is the explanation and demonstration of their close relationships. This book is an excellent complement to the many books on the Raspberry Pi and Python programming because it starts to explain some of the theoretical underpinnings. The seasoned software developer should not be discouraged by the beginner's guide sub-title as this is also a good refresher on some of the basics.' -- Colin Smythe * Principal Consultant * 'A scholarly book albeit written from a pragmatic perspective distilling the knowledge and expertise of an experienced software developer into a form that is accessible for beginners. It's engaging exercises and comprehensive references make it an invaluable learning resource. I would recommend it to anyone who wishes to gain an understanding of computational thinking and best practice in modern software development.' -- Professor Cornelia Boldyreff 'This book will prove an excellent companion to more general texts on Computing, especially for teachers who are new to the subject. And with exercises at the end of each chapter, there is much to challenge students also. Highly recommended.' -- Terry Freedman * independent education technology writer and consultant, and publisher of the ICT and Computing in Education website at www.ictineducation.org *