Learn to break down and solve real-world problems with modern C++ using the proven power of computational thinking.
Key Features:
- Apply computational thinking to tackle complex C++ challenges
- Use abstraction, algorithms, and data structures the C++ way
- Build scalable, efficient, and reusable C++ code through real-world projects
- Purchase of the print or Kindle book includes a free PDF eBook
Book Description:
Solve complex problems in C++ by learning how to think like a computer scientist. This book introduces computational thinking-a framework for solving problems using decomposition, abstraction, and pattern recognition-and shows you how to apply it using modern C++ features. You'll learn how to break down challenges, choose the right abstractions, and build solutions that are both maintainable and efficient.
Through small examples and a large case study, this book guides you from foundational concepts to high-performance applications. You'll explore reusable templates, algorithms, modularity, and even parallel computing and GPU acceleration. With each chapter, you'll not only expand your C++ skillset, but also refine the way you approach and solve real-world problems.
Written by a seasoned research engineer and C++ developer, this book combines practical insight with academic rigor. Whether you're designing algorithms or profiling production code, this book helps you deliver elegant, effective solutions with confidence.
What You Will Learn:
- Apply computational thinking to complex C++ problems
- Break problems into components using abstraction
- Use algorithms and data structures effectively in C++
- Design modular and reusable C++ code
- Analyze and improve algorithmic performance
- Parse, transform, and interpret data in multiple formats
- Scale up with concurrency, GPUs, and profiling tools
Who this book is for:
C++ developers, software engineers, and computer science students who want to enhance their problem-solving capabilities and build scalable, maintainable solutions. Basic familiarity with C++ syntax is assumed, making this ideal for intermediate programmers ready to master abstraction and algorithmic thinking.
Table of Contents
- Thinking computationally
- Abstraction in detail
- Algorithmic thinking and complexity
- Understanding the machine
- Data structure
- Reusing Your Code and Modularity
- Outlining the Challenge
- Building a simple command line interface
- Reading Data from Different Formats
- Finding Information in Text
- Clustering Data
- Reflecting on what we have built
- The Problems of Scale
- Dealing with GPUs and Specialized Hardware
- Profiling with Code