One of the main experiences I’ve found while teaching high school computer science is that a lot of students have not been exposed to computational thinking and struggle with problem solving.

A computer is a tool that can be used to complete tasks really fast that a human will take a long time to complete. Computer science involves designing a set of instructions (an algorithm) that a computer can follow to complete the task for the user.

To design the algorithm, one must first understand the problem domain and create a solution. Thus, one must draw knowledge and experience from all fields of study. This is where I find students struggle the most.

Below are a few books that I have used to give me ideas on how to improving my teaching in the area of computational thinking and problem solving.

## Think Like A Programmer – V. Anton Spraul

V. Anton Spraul first gives an introduction on the types of problems there are and how a computer can go about solving them (if possible). Then he goes over different types of common problems one will encounter while programming. This book is a great book on getting students to recognize patterns in the different problems they solve. It gives solutions with the programming language C++. I’ve listed the table of contents below for your reference.

- Strategies for Problem Solving
- Pure Puzzles
- Solving Problems with Arrays
- Solving Problems with Pointers and Dynamic Memory
- Solving Problems with Classes
- Solving Problems with Recursion
- Solving Problems with Code Reuse
- Thinking Like a Programmer

## How To Think Like a Programmer (Problem Solving for the Bewildered) – Paul Vickers

Paul does a great job of introducing problem solving to even the simplest problems we start off with in computer science. In the book, he gives four projects that students can do for the whole year. As he goes over the different concepts of programming, students can apply the concepts by adding more features to the project.

The projects are:

- Modelling a vending machine
- A hazardous chemical warning label interpreter
- Translator for dates specified with roman numerals
- A pangram generator (a pangram is a phrase where all letters of the English alphabet are used)

The table of contents are listed below for your reference

- Introduction: Starting to Think Like A Programmer
- A Strategy for Solving Problems
- Description Languages and Representations
- Problems of Choices and Repeated Actions
- Calculating and Keeping Track of Things
- Extending Our Vocabulary: Data and Control Abstractions
- Object Orientation: Taking A Different View
- Looking forward to Program Design

Just a note: this book is becoming hard to find at a reasonable price. There is a preview available on Google Books.

## How To Think Like A Coder Without Even Trying! – Jim Christian

This book is a very good beginner book for an introduction to computer science and programming. It is aimed for students in grade 4-9 rather than high school students.

It starts with the basics of how a computer works and covers topics up to Object Oriented Programming.A lot of the concepts are illustrated in this book and the examples are very clear. It gives the reader a solid foundation on developing a computational thinking mindset.

The table of contents is listed below for your reference.

- Learn How To Think Like A Coder
- Solving Problems
- Learning the Language
- Taking it Further

## Other Books

If you have any suggestions of other books to help students with the computational thinking and problem solving, I would love to know. Please share them in the comments section.

## Support

If you like my work, a small donation or feedback will be much appreciated.