Menu Expand
Computational Thinking

Computational Thinking

Karl Beecher

(2017)

Additional Information

Abstract

Computational thinking is a timeless, transferable skill that enables you to think more clearly and logically, as well as a way to solve specific problems. Beginning with the core ideas of computational thinking, with this book you'll build up an understanding of the practical problem-solving approach and explore how computational thinking aids good practice in programming, complete with a full guided example.
Computational thinking (CT) is a timeless, transferable skill that enables you to think more clearly and logically, as well as a way to solve specific problems. With this book you'll learn to apply computational thinking in the context of software development to give you a head start on the road to becoming an experienced and effective programmer. Beginning with the core ideas of computational thinking, with this book you'll build up an understanding of the practical problem-solving approach and explore how computational thinking aids good practice in programming, complete with a full guided example.
'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
'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
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 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
'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
'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

Table of Contents

Section Title Page Action Price
Cover Cover
Coptright Page vi
CONTENTS vii
LIST OF FIGURES AND TABLES xi
AUTHOR xiv
ACKNOWLEDGEMENTS xv
GLOSSARY xvi
INTRODUCTION: WHY STUDY COMPUTATIONAL THINKING? 1
PART I COMPUTATIONAL THINKING 5
1 WHAT IS COMPUTATIONAL THINKING? 7
OBJECTIVES 7
WHAT IS COMPUTATIONAL THINKING? 7
HOW IS COMPUTATIONAL THINKING USED? 9
DISCLAIMERS 11
SUMMARY 13
EXERCISES 13
2 LOGICAL AND ALGORITHMIC THINKING 14
OBJECTIVES 14
APPROACH 14
LOGICAL THINKING 15
ALGORITHMIC THINKING 25
‘GOTCHAS’ 30
SUMMARY 36
EXERCISES 37
3 PROBLEM-SOLVING AND DECOMPOSITION 39
OBJECTIVES 39
WHERE TO START 39
DEFINING THE PROBLEM 40
DEVISING A SOLUTION: SOMETHING TO KEEP IN MIND 42
DECOMPOSITION 43
OTHER EFFECTIVE STRATEGIES 47
PATTERNS AND GENERALISATION 50
SUMMARY 54
EXERCISES 55
4 ABSTRACTION AND MODELLING 57
OBJECTIVES 57
ABSTRACTION 57
MODELLING 64
SUMMARY 74
EXERCISES 74
5 ANTICIPATING AND DEALING WITH ERRORS 76
OBJECTIVES 76
COMING TO TERMS WITH BUGS 76
DESIGNING OUT THE BUGS 77
MITIGATING ERRORS 80
TESTING 82
DEBUGGING 85
YOU CAN’T HAVE EVERYTHING: DECIDING WHICH ERRORS TO FIX 88
SUMMARY 90
EXERCISES 90
6 EVALUATING A SOLUTION 92
OBJECTIVES 92
SOLUTION EVALUATION 92
IS IT CORRECT? 93
IS IT EFFICIENT? 94
IS IT ELEGANT? 97
IS IT USABLE? 99
TRADE-OFFS 101
SUMMARY 104
EXERCISES 105
PART II COMPUTATIONAL THINKING IN SOFTWARE DEVELOPMENT 107
7 TUTORIAL FOR PYTHON BEGINNERS 109
OBJECTIVES 109
INTRODUCING PYTHON 109
FIRST STEPS 109
BASIC TYPES 110
BASIC OPERATIONS 111
FUNCTIONS 112
COMMENTS 113
SUMMARY 113
EXERCISES 113
8 EFFECTIVE BUILDING BLOCKS 115
OBJECTIVES 115
LOGIC 115
BASIC ALGORITHMIC CONSTRUCTS 116
PROGRAM STATE 124
MORE ADVANCED CONSTRUCTS 131
SUMMARY 137
EXERCISES 138
9 ORGANISING YOUR CODE 139
OBJECTIVES 139
RECAP 139
INTRODUCING TKINTER 140
SEPARATING CONCERNS 141
DEFINING INFORMATION SCOPE 145
USING MODULES 150
PACKAGES 157
SUMMARY 159
EXERCISES 160
10 USING ABSTRACTIONS AND PATTERNS 162
OBJECTIVES 162
FINDING PATTERNS IN PROGRAMS 162
ABSTRACTIONS IN PROGRAMMING 164
BUILT-IN TYPES 165
CREATING YOUR OWN TYPES 166
READY-MADE PATTERNS 175
SUMMARY 182
EXERCISES 182
11 EFFECTIVE MODELLING 184
OBJECTIVES 184
RECAP 184
ENTITIES 186
RELATIONSHIPS 189
PROCESSES 194
USAGE 196
GENERAL ADVICE 199
SUMMARY 201
EXERCISES 201
12 TESTING AND EVALUATING PROGRAMS 203
OBJECTIVES 203
INTRODUCTION TO PROGRAM TESTING AND EVALUATION 203
ANTICIPATING BUGS 203
VERIFICATION AND VALIDATION 209
TESTING THE PARTS 210
TESTING THE WHOLE 214
DEBUGGING 219
SUMMARY 225
EXERCISES 225
13 A GUIDED EXAMPLE 227
PROBLEM DEFINITION 227
PROBLEM DECOMPOSITION 228
FINDING PATTERNS 229
FORM GENERALISATIONS AND ABSTRACTIONS 232
MODELS 233
ANNOTATED SOURCE CODE 237
TESTING 243
OPPORTUNITIES FOR IMPROVEMENT 246
APPENDIX A REFERENCE LISTS AND TABLES 247
ORDER OF OPERATOR PRECEDENCE 247
USABILITY HEURISTICS 248
MUTABLE AND IMMUTABLE TYPES IN PYTHON 248
APPENDIX B ANSWERS TO EXERCISES 249
NOTES 276
REFERENCES 280
INDEX 284
Back Cover 289