# What this book covers

*Chapter 1*, *Fundamentals of Computer Science*, helps you learn about the fundamental elements of computer science, including theory, design, computational processes and systems, and computers. The focus of this chapter will be on the software elements of computer science.

*Chapter 2*, *Elements of Computational Thinking*, explains each of the elements of computational thinking—decomposition, pattern recognition, pattern generalization and abstraction, and algorithm design—and how the process of computational thinking is not linear. Rather, a developer can go back through some of these elements at all stages of the algorithm design process until a solution for a particular problem is reached. This chapter will include some short, relevant problems that are used to demonstrate the use of the elements of computational thinking to arrive at the algorithm.

*Chapter 3*, *Understanding Algorithms and Algorithmic Thinking*, provides you with an introduction to algorithms and their definition. You will also review some algorithms to help you develop the analysis skills necessary when assessing algorithms.

*Chapter 4*, *Understanding Logical Reasoning*, explores logical reasoning processes such as conditional statements, algorithmic reasoning, and Boolean logic. Throughout the chapter, you will learn basic and intermediate logic processing skills through real and relevant problem analysis.

*Chapter 5*, *Exploring Problem Analysis*, explores topics in problem analysis, focusing on problem definition, decomposition, and analysis. In order to practice and further understand the first element of computational thinking, decomposition, you will be presented with real and relevant problems. You will then be able to define and decompose the problem into parts, such as identifying input and output, and additional relevant information needed to begin planning solutions for the problems presented.

*Chapter 6*, *Designing Solutions and Solution Processes*, gives you an opportunity to design solutions to multiple problems using previously learned content in the computational thinking process and begin to incorporate logical processing to create a visual representation of the decision process for the solution. Visual representations include diagrams, flow charts, and other helpful processes.

*Chapter 7*, *Identifying Challenges within Solutions*, provides the opportunity to practice identifying some of the common errors and/or better possible solutions for an existing problem. While most problems can be solved with a multitude of algorithms that address the needs of the problem, some solutions are best suited for that particular problem. The goal of this chapter is to introduce you to the identification of some pitfalls in the solution design process.

*Chapter 8*, *Introduction to Python*, introduces you to basic Python commands and functionalities while applying them to problems. Using the elements of computational thinking, you will be able to design solutions by incorporating the concepts learned earlier.

*Chapter 9*, *Understanding Input and Output to Design a Solution Algorithm*, helps you to assess problems to identify the input and output needed in order to design and implement a solution algorithm for the problems.

*Chapter 10*, *Control Flow*, helps you to learn more about conditional statements and how to work with `for`

and `while`

loops when solving problems using computational thinking and the Python programming language. You will apply the logical processing learned previously to create Python algorithms when solving problems.

*Chapter 11*, *Using Computational Thinking and Python in Simple Challenges*, helps you apply the knowledge acquired previously to complete the computational thinking process when solving challenges in multiple disciplines, using examples that are real and relevant, in order to design the best possible algorithms for each scenario.

*Chapter 12*, *Using Python in Experimental and Data Analysis Problems*, explains how to utilize Python capabilities to solve problems that involve experimental data and data processing. The computational thinking elements will be used to solve real and relevant problems using advanced functionalities.

*Chapter 13*, *Using Classification and Clusters*, covers classification and clusters. You will use Pandas, Scikit-Learn, and other packages to create training and testing models, and learn some basic definitions for use in large data analysis, such as machine learning and neural network models.

*Chapter 14*, *Using Computational Thinking and Python in Statistical Analysis*, dives into further topics relating to statistical analysis, such as importing data, indexing, and preprocessing data. You will then use data visualizations to make decisions on what variables to explore for further analysis.

*Chapter 15*, *Applied Computational Thinking Problems*, helps you to work through multiple problems that combine topics from each of the previous chapters in order to solve a problem and design an algorithm in Python. You will use the computational thinking elements to determine what functionalities are necessary in order to design models and create solutions for problems in linguistics, cryptography, and more.

*Chapter 16*, *Advanced Applied Computational Thinking Problems*, works through additional applied problems in a variety of areas, including geometric tessellations, creating models of housing data, creating electric fields, analyzing genetic data, analyzing stocks, creating a **convolutional neural network** (**CNN**), and more. You will use the computational thinking elements to solve problems and create different figures and visual representations for your problems and datasets.