{{ activeMenu.name }}

  • Python Courses
  • JavaScript Courses
  • Artificial Intelligence Courses
  • Data Science Courses
  • React Courses
  • Ethical Hacking Courses
  • View All Courses

Fresh Articles

DataCamp Azure Fundamentals Course: Insider Review

  • Python Projects
  • JavaScript Projects
  • Java Projects
  • HTML Projects
  • C++ Projects
  • PHP Projects
  • View All Projects

How To Create A Python Hangman Game With GUI for Beginners

  • Python Certifications
  • JavaScript Certifications
  • Linux Certifications
  • Data Science Certifications
  • Data Analytics Certifications
  • Cybersecurity Certifications
  • View All Certifications

The 15 Best Project Management Certifications in 2024

  • IDEs & Editors
  • Web Development
  • Frameworks & Libraries
  • View All Programming
  • View All Development
  • App Development
  • Game Development
  • Courses, Books, & Certifications
  • Data Science
  • Data Analytics
  • Artificial Intelligence (AI)
  • Machine Learning (ML)
  • View All Data, Analysis, & AI

Google Career Certificates to Help You Land a Job in 2024

  • Networking & Security
  • Cloud, DevOps, & Systems
  • Recommendations
  • Crypto, Web3, & Blockchain
  • User-Submitted Tutorials
  • View All Blog Content
  • JavaScript Online Compiler
  • HTML & CSS Online Compiler
  • Certifications
  • Programming
  • Development
  • Data, Analysis, & AI
  • Online JavaScript Compiler
  • Online HTML Compiler

Don't have an account? Sign up

Forgot your password?

Already have an account? Login

Have you read our submission guidelines?

Go back to Sign In

  • Courses, Books & Certifications

books on programming problem solving

Want To Learn Programming? Check Out These Programming Books

In this article, I share the 10 best programming books in 2024.

But what do I mean by programming books? Well, rather than something language-specific, like books on Python programming, HTML, CSS, or Ruby, here I'll cover general programming books with information and skills you can apply in all languages.

Whether you’re new to programming and fresh off a self-taught programming course or an experienced professional looking to boost your programming skills, I’ve included programming books for beginners and pros alike.

Plus, with the Bureau of Labor and Statistics reporting an average salary of over $100K for programmers, picking up a programming book can be the first step to a financially rewarding career.

So, if you’re ready, let’s dive into the best programming books to boost your skills .

  • The Best Programming Books You Need To Read

1. Clean Code: A Handbook of Agile Software Craftsmanship

Clean Code: A Handbook of Agile Software Craftsmanship 1st Edition

Latest Edition : 1st

Published: August 2008

Publisher : Prentice Hall

Format(s) : Kindle/Paperback

Why we chose this book

Taking the top spot on my list is Clean Code by Robert C. Martin, who you may also know as Uncle Bob.

For me, this isn't just about programming but a definitive guide for any software development professional. I love Martin's approach to agile software craftsmanship, as he emphasizes the significance of clean, well-written code. This is like music to my ears!

The idea is that he challenges you to reassess your professional values and dedication to the craft of programming. I also appreciate that the book is divided into three parts: foundational principles of clean coding, engaging case studies, and a final compilation of heuristics and code “smells.”

I know, code smells?!

But what sets this book apart is its comprehensive coverage. You will learn to discern between good and bad code, transform problematic code into high-quality code, and understand the essentials of creating effective names, functions, objects, and classes.

Martin also has a nice writing style, and he places a strong emphasis on practicality, which is demonstrated by extensive code examples and real-world scenarios. This is a big plus point for me, as it means your theoretical knowledge is grounded in actual coding practices.

If you want a 1-line review, Clean Code is indispensable for developing and maintaining high standards in software development.

  • Extensive exploration of clean coding principles and agile practices
  • Insightful case studies to apply these principles practically
  • Guidance on identifying and improving code quality
  • Techniques for writing readable, maintainable, and efficient code
  • Emphasis on professional growth and ethical coding practices
  • Essential for developers, engineers, project managers, and team leads

2. Introduction to Algorithms

Introduction to Algorithms (Eastern Economy Edition)

Latest Edition : 3rd

Pages: 1292

Published: January 2009

Publisher : The MIT Press

Format(s) : Hardcover/Paperback

Taking the next place on my list of programming books is Introduction to Algorithms. For any programmer or aspiring software developer, there comes a time when you need to take on the mastery of algorithms, and this is a great place to begin.

What stood out to me in this 3rd edition is the blend of rigorous analysis and practical application, which is ideal for understanding how an algorithm works before coding it up.

If you want a programming book with extensive coverage of algorithms coupled with clear descriptions and pseudo-code, this is one of my top recommendations.

I also like the authors' approach to detailing complex algorithms in an accessible way. This is a really great approach because there's always a risk of making complex subjects boring or hard to follow, but there's none of that here.

From classic problems to the latest in algorithmic research, I'd say this is well suited to both students and professionals. Plus, if you pick up the latest edition, you get the benefit of added chapters on vEB trees and multithreaded algorithms.

  • In-depth coverage of a broad range of algorithms
  • Blend of theoretical and practical aspects
  • Accessible to readers at different levels of expertise
  • Continuously updated content in new editions
  • Ideal for both academic study and professional reference

3. Structure and Interpretation of Computer Programs (SICP)

Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)

Latest Edition : 2nd

Published: Sept 1996

This is an interesting choice because while it's more than 25 years old, Structure and Interpretation of Computer Programs is a classic textbook for computer science education and learning programming , especially at MIT.

The second edition introduced major changes to reflect the authors' experience and lessons at MIT, including objects with state, concurrent programming, and sections on higher-order procedures in graphics and stream processing.

I particularly appreciate its insightful approach to functional programming and the way it connects mathematical logic with programming by focusing on pure functions and recursion. These are all key skills for any aspiring programmer.

Being an MIT textbook (of sorts), you should expect a rigorous yet engaging style that not only keeps you interested but also transforms your perspective on programming. It's especially great if you'd like to gain a deeper understanding of functional programming and its mathematical roots.

The main idea of this programming book is to take a deep dive into computational thinking and problem-solving, skills that any programmer needs to have. Plus, it's nice that this book takes a somewhat unique approach to demystifying complex concepts.

If you want to understand the philosophy and aesthetics of programming, this is a great read that can change how you think and code while also giving you a new perspective on abstraction, encapsulation, and coding style.

  • Unique approach to programming and computational thinking
  • Emphasis on abstraction, encapsulation, and programming aesthetics
  • Suitable for a wide range of readers, from students to seasoned programmers
  • Influential in computer science education and professional development

4. The Clean Coder: A Code of Conduct for Professional Programmers

The Clean Coder: A Code of Conduct for Professional Programmers 1st Edition

Published: May 2011

Here we are again with one of my favorite authors, Uncle Bob, or more properly, Robert C. Martin.

As a natural extension to Clean Code, which takes the #1 spot on my list, The Clean Coder is another great choice for software developers who want to elevate their craft to an art form. Yes, coding can be art! Plus, it's only around 250 pages long.

Unlike traditional programming books, Uncle Bob focuses on the attitude, discipline, and professionalism required in software development. I really like how he intertwines practical advice with a deep understanding of what it means to be a true software craftsman.

The Clean Coder also goes beyond mere coding techniques, as it addresses how to face the pressures and challenges of being a programmer with integrity and honor.

From handling conflicts and tight schedules to mastering the flow of coding and avoiding burnout, this programming book provides a true blueprint for professional conduct in the often stressful and challenging world of software development.

This is the type of classic book that, in my opinion, every new programmer should be given when venturing out into the real world of software development!

  • Emphasizes the importance of professionalism in software development
  • Provides practical advice on various aspects of programming, from coding to communication
  • Addresses challenges like conflict resolution, time management, and handling pressure
  • Advocates for a responsible, ethical approach to software craftsmanship
  • Essential for developers seeking to refine their professional conduct and skills

5. Code Complete: A Practical Handbook of Software Construction

Code Complete

Published: July 2004

Publisher : Microsoft Press

Code Complete by Steve McConnell rightfully earns the next spot on my list of programming books for its unparalleled depth in software construction.

For me, McConnell masterfully integrates insights from research, academia, and commercial practice into a single, comprehensive guide. This is not all that common, and I really appreciate how he tried to do this.

This book isn't just about writing code but more of a deep exploration of the principles that underpin quality software development, from minimizing complexity to mastering construction techniques.

I think it's particularly valuable for its real-world applicability, helping programmers refine their craft whether they're working on small or large projects. McConnell's overall approach makes complex concepts accessible, which is ideal for bridging the gap between expert knowledge and everyday coding practices. 

This book also uses multiple programming languages, including Visual Basic, to illustrate key concepts,  making it easy for anyone with some basic programming knowledge to follow along.

  • Comprehensive guide on software construction techniques
  • Blends research insights with practical advice
  • Accessible to a wide range of readers, from novices to experts
  • Ideal for refining and mastering software development skills

6. Design Patterns: Elements of Reusable Object-Oriented Software

Design Pattern

Published: Oct 1994

Publisher : Addison-Wesley Professional

Format(s) : Hardcover/Kindle/Paperback

If you're interested in object-oriented programming (and why wouldn't you be?!), Design Patterns is an excellent read for understanding the concepts of object-oriented software design.

What really stands out to me is that this programming book presents a catalog of 23 design patterns! That's a lot! It also offers simple and succinct solutions to commonly occurring design problems in object-oriented systems.

The idea here is that these patterns can help designers create more flexible, elegant, and reusable designs. Sounds good to me!

I also really appreciate that this programming book takes a systematic approach to explaining and cataloging design patterns. Each pattern is described in detail, including its applicability, implementation, and the trade-offs involved.

Overall, this book is a super strong resource of practical knowledge, compiled from real systems and based on real-world examples, making it a must-read for software developers who are keen on honing their design skills.

  • Comprehensive catalog of 23 reusable object-oriented design patterns
  • Practical guidance on the application and implementation of each pattern
  • Real-world examples demonstrating pattern use in software design
  • Ideal for both beginners and experienced object-oriented developers
  • Enhances design flexibility, elegance, and reusability in software projects

7. The Pragmatic Programmer

The Pragmatic Programmer: your journey to mastery, 20th Anniversary Edition (2nd Edition) 2nd Edition

Published: Sep 2019

The Pragmatic Programmer is, without a doubt, one of the best books for all programmers! Trust me, it is an invaluable addition to any bookshelf if you want a go-to resource for practical and timeless advice from authors who have distilled years of coding experience into accessible pearls of wisdom.

For me, it really bridges the gap between low-level software construction and higher-level methodology, and you could even go so far as to say that it offers technology-independent guidance that's as relevant today as ever.

That said, what sets this book apart for me is its emphasis on practical, real-world truths over theoretical concepts.

It's packed with experience-based advice, focusing on automation and effective development practices. The concept of tracer bullets, for example, advocates for an iterative approach to software development, emphasizing the importance of adaptability and understanding user requirements in real-time.

Of course, like any book that has been around for a while (and this was released originally in 1999), some advice may feel dated, and if you're already well-versed in agile principles, some sections might echo familiar concepts.

But despite this, the book's focus on fundamental development strategies and its emphasis on understanding why something works, not just making it work, make it an essential read.

  • A blend of practical experience and timeless software development principles
  • Focus on automation and adaptable, real-world coding practices
  • Technology-independent, making it relevant for various programming environments
  • Emphasizes understanding the 'why' behind coding solutions

8. Head First Design Patterns: A Brain-Friendly Guide

Head First Design Patterns: A Brain-Friendly Guide 1st Edition

Published: Oct 2004

Publisher : O’Reilly Media

Securing a place on our list for its unique and engaging approach, this head-first programming book is a brilliant option for learning object-oriented design patterns.

If you're not familiar with their series of programming books, the head-first series takes a metacognitive approach by combining text, humor, images, and games to make complex design patterns understandable and fun to learn.

Yep, believe me, this book can make the often dry subject of software design patterns an entertaining and accessible learning experience.

While the examples are primarily in Java, the concepts are applicable across various programming languages, making it a valuable resource for a wide range of developers.

And as I've said, what really sets Head First Design Patterns apart is its ability to turn a complex topic into an engaging one, making it a great reference book to be revisited whenever you need a refresher.

  • Engaging and unique metacognitive approach to learning design patterns
  • Makes complex object-oriented design concepts accessible and enjoyable
  • Covers a wide range of essential design patterns with practical examples
  • Ideal for developers who prefer a more interactive and less formal learning style
  • Excellent as both a learning tool and a reference guide in software design

9. Refactoring: Improving the Design of Existing Code

Refactoring: Improving the Design of Existing Code (2nd Edition) (Addison-Wesley Signature Series (Fowler)) 2nd Edition

Published: Nov 2018

Publisher : Addison-Wesley Professional

Format(s) : Hardcover/Kindle

As any working programmer knows, writing your code is one thing, but refactoring is another skill altogether.

That's why it made sense to add Martin Fowler's guide to our list because if you're a software developer, you should always be aiming to improve your code's design and maintainability.

I really like that Fowler provides a comprehensive guide to refactoring, with a range of practical advice that's backed by real-world examples.

It's also nice to see that in the latest edition,  Folwer reflects key changes in programming, featuring a new catalog of refactorings with JavaScript examples and functional examples without classes.

This maintains the book's core focus on improving code understandability and maintainability but ensures the advice remains current.

I also appreciate that Fowler emphasizes building solid tests for refactorings and acknowledges trade-offs and obstacles in the process. Overall, I think it's a valuable resource for developers at all levels, as we can all benefit from writing clearer, more efficient code. 

  • In-depth exploration of refactoring techniques and principles
  • Practical advice on improving code design and maintainability
  • Suitable for both novice and experienced programmers
  • Essential for anyone looking to enhance their coding skills and software quality

10. The Art of Computer Programming, Volumes 1-4

The Art of Computer Programming, Volumes 1-4A Boxed Set 1st Edition

Pages: 3168

Published: March 2011

Format(s) : Hardcover

Rounding out my list of programming books, I've actually added a book series from Donald Knuth, who just happens to be a Turing Award laureate (this is like the Nobel Prize for computing) for his contributions to the analysis of algorithms and programming language design:

  • Volume 1: Fundamental Algorithms
  • Volume 2: Seminumerical Algorithms
  • Volume 3: Sorting and Searching
  • Volume 4A: Combinatorial Algorithms

This comprehensive collection makes up the Art Of Computer Programming. Known for its thoroughness and depth, these volumes cover a wide range of topics, from basic programming concepts to more advanced algorithms and data structures.

In fact, for many, Knuth's work is not just a series of books but more a monumental contribution to the field of computer programming, offering unparalleled insights into algorithmic thinking and problem-solving.

This series is also unique for its rigorous mathematical approach, blending theory with practical examples. It's a go-to resource for anyone serious about delving into the complexities of algorithms and programming techniques.

The detailed explanations, accompanied by Knuth’s meticulous and methodical style, make these volumes a hugely helpful body of knowledge for students, educators, and professional programmers alike.

  • Comprehensive coverage of fundamental and advanced topics in computer programming
  • Rigorous mathematics for algorithms and data structures
  • In-depth explanations with practical examples
  • Ideal for students, educators, and professionals in computer science
  • A foundational work in the field of computer programming
  • How To Choose The Best Programming Book?

Choosing the best books to learn programming can be tricky, especially if you’re a beginner and you're still trying to pick the best language to learn !

That's exactly why I created this article!

But if you want some tips for finding the best programming books, here are the criteria I used when creating this list:

  • Determine your skill level: If you are a beginner learning from scratch, look for programming books that cover the basics. If you’re experienced, look for advanced books on specific features.
  • Check the author's credentials: Focus on programming books written by authors with experience in programming and teaching programming.
  • Read reviews: Check out the programming book's reviews online to understand what other readers think. This is often a goldmine of information!
  • Consider your learning style: If you prefer a hands-on approach, focus on programming books that include exercises and projects.
  • Wrapping Up

And there you go, the 10 best programming books in 2024, including programming books for beginners and experienced coders.

Whether you’re just starting out in programming or you want to level up your skills, I’ve included programming books to help you achieve your goals in your career.

Happy reading!

Are you brand new to programming, and you're ready to learn Python? Check out:

Our very own Python Masterclass - Python with Dr. Johns

People are also reading:

  • What is Functional Programming
  • What is Procedural Programming
  • Programming Paradigm
  • Free Coding Bootcamp

1. Bureau of Labor Statistics, U.S. Department of Labor. Occupational Employment and Wages, May 2022, 15-1251 Computer Programmers [Internet]. [updated 2021 Mar 31; cited 2024 Jan 15]. Available from: https://www.bls.gov/oes/current/oes151251.htm

books on programming problem solving

Technical Editor for Hackr.io | 15+ Years in Python, Java, SQL, C++, C#, JavaScript, Ruby, PHP, .NET, MATLAB, HTML & CSS, and more... 10+ Years in Networking, Cloud, APIs, Linux | 5+ Years in Data Science | 2x PhDs in Structural & Blast Engineering

Subscribe to our Newsletter for Articles, News, & Jobs.

Disclosure: Hackr.io is supported by its audience. When you purchase through links on our site, we may earn an affiliate commission.

In this article

  • GitHub Copilot vs Amazon CodeWhisperer | Who's Best in 2024? Artificial Intelligence (AI) Code Editors IDEs AI Tools
  • 10 Python Concepts I Wish I Knew Earlier For Interviews [2024] Python Career Development Interview Questions
  • 7 Best AI Coding Assistants In 2024 [Free + Paid] Artificial Intelligence (AI) Code Editors IDEs AI Tools

Please login to leave comments

books on programming problem solving

Vibhor Tyagi

I engineer AI for a living, but have yet to get to these books soon enough

4 years ago

Always be in the loop.

Get news once a week, and don't worry — no spam.

  • Help center
  • We ❤️ Feedback
  • Advertise / Partner
  • Write for us
  • Privacy Policy
  • Cookie Policy
  • Change Privacy Settings
  • Disclosure Policy
  • Terms and Conditions
  • Refund Policy

Disclosure: This page may contain affliate links, meaning when you click the links and make a purchase, we receive a commission.

LTCWM > Blog > Reviews > Best of > 70 Best Programming Books for Every Coder in 2022

Computer Science Books

70 Best Programming Books for Every Coder in 2022

Updated on March 1st, 2022 | Sign up for learn to code tips

There are so many amazing programming books and computer science books out there.

Many of the best coding books are used by universities and professional developers to improve their skills. If you’re learning how to code on your own, there’s nothing to say you can’t independently pick up some top books on programming and do the same. 

You might look at this list and think “How do you learn programming from books?” Actually, books on computer science can be just as fun and helpful as a course. Many of the best programming books have hands-on challenges and projects to help you implement what you’ve learned. Plus, at least reading coding books for beginners gives you a break from staring at a screen!

Click To Tweet

The best books to learn coding for beginners (and beyond) can vary based on what language you’re pursuing, so the sections below are divided accordingly. Without further ado, here are some of the best books on coding every programmer should read.

Disclosure: I’m a proud affiliate for the books mentioned in this article, available on Amazon. As an Amazon Associate, I may get a small commission for referring you. Thanks!

Table of Contents

  • Coding Fundamentals
  • Jobs/Careers in Tech
  • HTML and CSS
  • Objective C

Please note that information below may change in the future!

Which Coding Books Should You Start Out With?

If you’re a complete newbie to coding, deciding which programming beginner books to buy can feel a little overwhelming, especially since there are thousands out there. 

It can be helpful to start with one or two coding fundamentals books and then an HTML/CSS book to get a good introduction to coding in general. From there, you can pick and choose based on the language or type of development you’re interested in (e.g., mobile dev, website dev).

☝️ Back to the table of contents

Start coding now

Stop waiting and start learning! Get my 10 tips on teaching yourself how to code.

Success! Now check your email to confirm your subscription.

There was an error submitting your subscription. Please try again.

Coding Fundamentals: The Best Books for Computer Science Beginners

Not sure where to start? Here are some of the best books for computer science that beginners can read to start thinking like a programmer.

1. Inside the Machine: An Illustrated Introduction to Microprocessors and Computer Architecture

Author: Jon Stokes | Available on Amazon

Programming Book: Inside the Machine

The central processing unit, or microprocessor, is at the heart of programming, as it’s responsible for executing the instructions of a computer program.

This top programming book will help you understand the basics of modern computing by learning the different parts of computer architecture and what goes on behind the scenes of programming. It starts with fundamental concepts and covers all the way up to advanced.

inside the machine tweet

2. Structure and Interpretation of Computer Programs

Authors: Harold Abelson, Gerald Jay Sussman, Julie Sussman | Available on Amazon

Structure and Interpretation - Book

This computer science book was written by the faculty of Electrical Engineering and Computer Science Department at MIT, and it’s based on the curriculum they teach.

As you might expect from prestigious academic authors, it’s fairly dense content that you’ll need to dedicate some brainpower to! If you do, you’ll gain deep and valuable knowledge of programming systems and procedures.

structure and interpretation of computer programs tweet

3. Design Patterns: Elements of Reusable Object-Oriented Software

Authors: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides | Available on Amazon

With an in-depth look at 23 different design patterns, this book will teach you how to create more flexible, elegant, and reusable programs. While the actual code written in the book might be outdated (it was published in 1994), it’s still one of the best coding books on object-oriented programming, as the concepts and approaches remain highly relevant even in 2022. 

design patterns tweet

4. Code: The Hidden Language of Computer Hardware and Software

Author: Charles Petzold  | Available on Amazon

Book - Code: The Hidden Language of Computer Hardware and Software

You might know how to code and still struggle to explain what exactly code is . That’s what Petzold is demystifying in this programming book for beginners to tech. He uses familiar examples to pull you in and write a narrative that’s both educational and pleasant to read.

code tweet

5. Cracking the Coding Interview: 189 Programming Questions and Solutions

Authors: Gayle Laakmann McDowell | Available on Amazon

Although it’s popularly known as the ultimate tech interview prep guide, Cracking the Coding Interview is also an excellent code book for learning core computer science concepts and understanding how to break down problems into manageable chunks. The author really knows her stuff. In fact, she passed coding interviews at big companies like Google, Microsoft, and Apple.

cracking the coding interview tweet

6. Code Complete: A Practical Handbook of Software Construction

Author: Steve McConnell | Available on Amazon

Programming Book - Code Complete: A Practical Handbook of Software Construction

This coding book is a highly popular guide to programming and software thanks to its clear, pragmatic writing style. It covers coding, debugging, design , testing, and more.

code complete tweet

7. Programming Pearls

Authors: Jon Bentley | Available on Amazon

Similar to an algorithm and data structures textbook (but with witty descriptions that are fun to read), this book offers ideas for solving coding problems, including how to choose the right algorithm, how to solve problems effectively and how to think like a software engineer . This is a bit of an advanced algorithms programming book, so it may not be the right choice for absolute beginners. 

programming pearls tweet

8. The Pragmatic Programmer: Your Journey to Mastery

Author: Andrew Hunt, David Thomas | Available on Amazon

The Pragmatic Programmer

This programming book combines useful information with entertaining anecdotes and examples, divided into easy-to-follow self-contained sections. You’ll learn core processes that enable you to be a better programmer and produce flexible, efficient code. And you’ll get tips for honing your career skills in other ways, from work ethic to common pitfalls to avoid.

pragmatic programmer tweet

9. Code Simplicity: The Fundamentals of Software

Author: Max Kanat-Alexander | Available on Amazon

Code Simplicity - Book to read

This programming book for beginners is the “KISS” of coding—going over principles you can follow to make your code simple and efficient no matter what language you’re using. 

Good software development results in simple code. The coding book will show you how to “keep it simple, stupid!”

code simplicity tweet

10. Algorithms to Live By: The Computer Science of Human Decisions

One of the best algorithms books for those also interested in psychology, this computer coding book offers a unique look at how computer algorithms can be applied to our everyday lives — from finding a spouse to finding a parking spot. Read this if you want to learn about the history and evolution of algorithms or want to understand what algorithmic thinking is all about. 

algorithms to live by tweet

11. Clean Code: A Handbook of Agile Software Craftsmanship

Author: Robert C. Martin | Available on Amazon

Clean Code coding book

With case studies and examples in Java , this programming book challenges you to make your code as clean as possible, and explains the principles and best practices you can use to accomplish that.

clean code tweet

12. Think Like a Programmer: An Introduction to Creative Problem Solving

Author: V. Anton Spraul  | Available on Amazon

Programming is more than memorizing principles of coding languages ; it’s learning to think outside the box and solve problems creatively. That’s the focus of this coding book, which goes over one programming concept in each chapter. Along the way, it gives open-ended exercises for you to try yourself and implement what you’ve learned. While you can apply what you’ve learned in any language, examples are in C++.

think like a programmer tweet

13. Introduction to Algorithms

Authors: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein | Available on Amazon

Algorithms are ways of efficiently solving problems, and they’re absolutely key to a developer’s day-to-day tasks. This code book is accessible to all levels and covers many different types of algorithms . You’ll be going through one of the best algorithms books used by universities and working professionals.

introduction to algorithms tweet

14. A Programmer’s Guide to Computer Science: A virtual degree for the self-taught developer

Authors: Dr. William M Springer II, Nicholas R Allgood, Brit Springer | Available on Amazon

This coding book is written by a senior developer at a major software company with a PhD in computer science. It takes you through what you would have learned while earning a four-year computer science degree, so it’s one of the best IT books for beginners who are self-taught. The coding book covers topics like algorithms and data structures, graphs, problem-solving techniques, and complexity theory.

Chris Stephens tweet

15. Everything You Need to Ace Computer Science and Coding in One Big Fat Notebook: The Complete Middle School Study Guide

Authors: Grant Smith | Available on Amazon

Although it’s technically a CS study guide for middle schoolers, this code book breaks down CS topics into easy-to-understand concepts. Includes mnemonic devices, definitions, diagrams, and doodles to help you understand computer science.

Everything you need to ace computer science tweet

16. Computer Science Distilled: Learn the Art of Solving Computational Problems

Authors: Wladston Ferreira Filho, Raimondo Pictet | Available on Amazon

This code book offers a walkthrough of computer science concepts you must know. Covers discrete math, common algorithms and data structures, and the principles that make computers and programming languages work.

Computer science distilled tweet

17. Help Your Kids with Computer Science

Authors: DK | Available on Amazon

This isn’t just a good computer science book for kids and parents! It’s a great visual intro to computer science for adults, too. This IT book for beginners condenses computer science topics into an informative, understandable format with clear, colorful pictures and concise definitions.

Careers in Tech: Books Every Career Techie Must Read

Do you have your sights set on a long-term tech career? Here are some good computer science books that shine a light on what it’s really like to work in tech.

18. Peopleware: Productive Projects and Teams

Authors: Tom DeMarco, Tim Lister | Available on Amazon

Peopleware: Productive Projects and Teams

Some of the major difficulties that software engineers face aren’t about tech at all—it’s human decisions and communication! This best software development book is great for both engineers and managers who want their team to run smoothly and be productive. 

Peopleware tweet

19. Soft Skills: The software developer’s life manual 

Authors: John Sonmez | Available on Amazon

Being a software developer isn’t just about coding; it involves dealing with clients, coworkers, managers, and more. This is one of the best books for software developers that covers all of the social and soft skills developers need to truly excel in many areas of life, including career, productivity, personal finance, and relationship advice — all from the perspective of a developer.

soft skills tweet

20. Rapid Development: Taming Wild Software Schedules

Rapid Development - book for coders

This book for coders focuses on time-management aspects of software development. It goes over efficient strategies and best practices you can use for an efficient workflow. 

rapid development tweet

21. Coders at Work: Reflections on the Craft of Programming

Authors: Peter Seibel | Available on Amazon

Through a collection of 15 interviews with accomplished software developers, you’ll find out how big names in the field learned to program and what they’ve discovered along the way. This programming book offers tons of different perspectives and viewpoints on the world of coding.

coders at work tweet

22. Don’t Make Me Think, Revisited: A Common Sense Approach to Web Usability

Author: Steve Krug | Available on Amazon

Tech Book - Don't Make Me Think

In a funny and down-to-earth way, this programming beginner book covers how to design websites so they’re easy and pleasant for users to navigate . It contains illustrations to help you visualize concepts. 

don't make me think tweet

23 . The Passionate Programmer: Creating a Remarkable Career in Software Development

Authors: Chad Fowler | Available on Amazon

In this book for coders, you’ll learn how to build your software development career step by step, “following the same path that you would follow if you were building, marketing, and selling a product.” A perfect read for junior programmers or those feeling unmotivated in their career. 

passionate programmer tweet

24. Working Effectively with Legacy Code

Author: Michael Feathers | Available on Amazon

Book - Working Effectively with Legacy Code

Legacy code can be frustrating to work with if it’s clunky and difficult to change. This programming book goes over strategies for working with legacy code and make changes as necessary so you can focus on what matters instead of getting bogged down.

working effectively tweet

25. The Self-Taught Programmer: The Definitive Guide to Programming Professionally

Author: Cory Althoff | Available on Amazon

What are the other best coding books for beginners and courses not telling you? That’s what this programming book aims to cover. It starts with teaching you how to code Python , use various tools, learn CS fundamentals, etc. At the end, it goes beyond tech knowledge to cover job-search / interview tips and advice for working with a team.

self taught programmer tweet

26. The Mythical Man-Month: Essays on Software Engineering

Author: Frederick P. Brooks Jr. | Available on Amazon

Book Recommendation - The Mythical Man-Month

Originally published 40+ years ago, this influential tech-career book is updated with new insights on project management within software engineering. It covers how to structure work groups, communication tips, and more.

mythical man month tweet

27 . Refactoring: Improving the Design of Existing Code

Author: Martin Fowler | Available on Amazon

Refactoring is the process of improving poorly designed, inefficient programs so they are simpler and easier to maintain. This coding book breaks down the refactoring techniques you need to know — especially if you’re working with a large legacy code base. The author starts off with a “messy” sample application and goes through the process of refactoring it to make it as efficient as possible. 

refactoring tweet

HTML and CSS: The Best Books to Learn HTML and CSS

These are a few of the best books to learn HTML and CSS.

28. HTML and CSS: Design and Build Websites

Author: Jon Duckett | Available on Amazon

HTML & CSS book by Jon Duckett

Reading about code can be boring, but not with this book! Illustrations, photography, and an accessible writing style make this easy for anyone who wants to learn HTML and CSS . It’s one of the best programming books for beginners to coding. 

29 . Learning Web Design: A Beginner’s Guide to HTML, CSS, JavaScript, and Web Graphics

Author: Jennifer Robbins | Available on Amazon

Learning Web Design - book by Jennifer Robbins

Combining information with exercises and quizzes, this book for programming beginners lets you immediately practice the skills you’re learning. You’ll start by learning foundational skills like how the web works . By the end, you’ll be able to create your own mobile-friendly website. 

learning web design tweet

JavaScript: Top Rated JavaScript Books

These two computer programming books for beginners are some of the best books on coding with JavaScript .

30. Eloquent JavaScript: A Modern Introduction to Programming

Author: Marijn Haverbeke | Available on Amazon

Eloquent JavaScript - book for developers

With a very hands-on focus, this JavaScript introductory programming book shows you how to write real apps with clean code. While you study, you’ll see examples, do exercises, and build your own projects. 

eloquent javascript tweet

31. You Don’t Know JS Yet: Get Started

Author: Kyle Simpson | Available on Amazon

You Don't Know JS - book

Even experienced JavaScript developers don’t always know some of the trickier parts of the language! This top programming book aims to provide a full picture of JavaScript, from essential building blocks to more niche things you can do with the code. (Note: You Don’t Know JS Yet: Get Started is a newer edition of You Don’t Know JS: Up & Going , and was fully updated in 2020.)

you don't know js yet tweet

Java: Java Programming Books You Need in Your Library

Next, we’ll look at the best Java programming books, which take a variety of approaches to help you learn Java thoroughly.

32. Effective Java

Author: Joshua Bloch | Available on Amazon

Learn the subtleties and best practices of Java with this computer coding book nicknamed the “Bible of Java programming.” You’ll learn what to do, what not to do, and explanations of why. 

effective java tweet

33. Head First Java

Authors: Kathy Sierra, Bert Bates | Available on Amazon

Head First Java - book suggestion

Thanks to several forms of gamification that keep you engaged with learning Java objects, this may be the best object-oriented programming book for beginners. Puzzles, mysteries, illustrations, and interview-style info combined with key concepts to help you learn quickly and have fun.

head first java tweet

34. Java Concurrency in Practice

Author: Brian Goetz | Available on Amazon

Concurrency, or multi-threading, is the ability to run several tasks or programs at the same time, and it’s something that Java programmers should know. This Java programming book goes over techniques and patterns to help you build great concurrent programs. 

java concurrency tweet

PHP: The Top Books to Learn PHP

PHP is alive and well in the modern world! Learn it with the best PHP books on programming.

35. Modern PHP

Author: Josh Lockhart | Available on Amazon

Modern PHP - programming book

Best for those who have a beginner understanding of PHP, this computer science book takes you further into all the features and techniques to use for PHP application architecture and planning, databases, security, testing, debugging, and deployment.

modern php tweet

36. Head First PHP & MySQL: A Brain-Friendly Guide

Author: Lynn Beighley, Michael Morrison | Available on Amazon

Head First PHP & MySQL - book for coders

You’ll learn all the essentials of server-side programming with PHP and MySQL so you can build dynamic websites. The coding book engages you with puzzles, exercises, quizzes, and other interactive elements.

head first php tweet

Ruby: Become a Ruby Master with These Books

These are some of the best web development books for those coding with Ruby.

37. Eloquent Ruby

Author: Russ Olsen | Available on Amazon  

Eloquent Ruby by Russ Olsen

This programming textbook teaches you how to think in Ruby, which will enable you to write elegant, expressive Ruby code and intuitively solve problems. 

eloquent ruby tweet

38. The Well-Grounded Rubyist

Author: David A. Black  | Available on Amazon

Whether you’re a newcomer or you’ve worked with Ruby before, this computer coding book explores topics from foundational to sophisticated. The tutorial will take you through your first Ruby program.

well grounded rubyist tweet

Python: The Python Programming Books Every Coder Should Read

Check out these Check out these best books to learn programming quickly with Python.

39. Python Crash Course: A Hands-On, Project-Based Introduction to Programming

Author: Eric Matthes | Available on Amazon

Python Crash Course

This practical Python coding book is written to get you programming in Python quickly, teaching programming basics before introducing real projects. You’ll build graphs, charts, an interactive web app, and even a simple video game .

python crash course tweet

Want to master Python?

Then download my list of favorite Python learning resources.

40 . Head First Python: A Brain-Friendly Guide

Author: Paul Barry | Available on Amazon

Head First Python by Paul Barry

One of the best programming books for visual learners, thanks to its illustrative format. You’ll quickly grasp Python concepts and build your own web application. 

head first python tweet

41. Learn Python 3 the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code

Author: Zed A. Shaw  | Available on Amazon

Learn Python 3 the Hard Way by Zed A. Shaw

Think of this less as the “hard way” and more as throwing yourself in the deep end of the “hands-on” way. This is one of those programming textbooks you can actually work on, not just sit down and read through, with 52 exercises driving concepts home.

learn python 3 tweet

C#: Best C# Programming Books

These best books for C# programming will help you master key functions.

42. C# in Depth

Author: Jon Skeet | Available on Amazon

C# in Depth by Jon Skeet

Learn core C# coding components, including asynchronous functions, expression-bodied members, interpolated strings, tuples, and more, with real-world examples to bring them alive.

c# in depth tweet

43. C# 9.0 in a Nutshell: The Definitive Reference

Author: Joseph Albahari | Available on Amazon

C# in a Nutshell by Joseph Albahari, Ben Albahari

This top C# book is correctly labeled a “definitive reference,” going from basics to advanced topics. It’s written for readers with some prior programming experience who want to learn or improve at C#. 

c# nutshell tweet

C: The Best C Programming Books for Beginners

Read the best C programming books below, including content from the inventors of the language.

44. C Programming Language

Author: Brian W. Kernighan, Dennis M. Ritchie  | Available on Amazon

C Programming Language - Brian W. Kernighan, Dennis M. Ritchie

This best C programming book for beginners was written by the developers of C, so it’s straight from the source! You’ll need some prior programming knowledge of basics like loops, variables, and functions. The code book has a reference manual you can glance at when you need help as you code with C.

c programming language tweet

45. Practical C Programming: Why Does 2+2 = 5986?

Author: Steve Oualline | Available on Amazon

Practical C Programming - book by Steve Oualline

A clear, practical approach with no fluff teaches you how to program with C in a way that’s easy to read and debug. The best book on C programming for learners who like to get right to the code!

practical c programming tweet

Objective – C: Don’t Miss These Objective – C Resources

These are some of the best computer science books to help you improve your Objective-C programming in an actionable way.

4 6 . Objective-C Programming: The Big Nerd Ranch Guide

Authors: Aaron Hillegass, Mikey Ward | Available on Amazon

This programming book is based on the popular Objective-C Bootcamp from Big Nerd Ranch. It has an engaging style while covering C, Objective-C, and tips to work with Apple technologies.

objective c programming tweet

47. Effective Objective-C 2.0: 52 Specific Ways to Improve Your IOS and OS X Programs

Author: Matt Galloway | Available on Amazon

Book: Effective Objective-C 2.0

Divided into 52 sets of scenarios, tips, and shortcuts for Objective-C, this coding book is concise and practical. You’ll learn how to avoid little-known pitfalls and always choose the best, most efficient option possible.  

effective objective c tweet

C++: Best Books for Learning C++

Looking for good C++ books? Even if you’re new to the language, these top C++ books will get you coding in no time.

48. C++ Primer

Authors: Stanley B. Lippman, Josée Lajoie, Barbara E. Moo | Available on Amazon

C++ Primer - by Stanley B. Lippman, Josée Lajoie, Barbara E. Moo

This primer will help you learn C++ fast and start using it to write powerful code for modern applications. 

c++ primer tweet

49. Programming: Principles and Practice Using C++

Author: Bjarne Stroustrup | Available on Amazon

Written by the inventor of C++, this computer science book provides an introduction to programming in general and C++ in specific. The target audience is beginner programmers, and it’s often used as a programming textbook for computer science freshmen.

programming tweet

R: The Best R Programming Books on the Market

These best R programming books teach you how to use the language to analyze data and build software.

50. Learning R: A Step-by-Step Function Guide to Data Analysis

Author: Richard Cotton | Available on Amazon

Learning R book by Richard Cotton

Even coding newbies can learn how to start analyzing data with R, thanks to this best R programming book. At the end of each chapter, you can test yourself with a quiz and work on hands-on exercises. It also teaches you what to do with data after analyzing, e.g. publishing your results.

learning r tweet

51. R Cookbook: Proven Recipes for Data Analysis, Statistics, and Graphics

Author: Paul Teetor | Available on Amazon

There are over 200 practical R “recipes” in this “cookbook” for you to experiment with! You’ll do simple tasks like input and output, work with statistics, and more as you analyze data. 

r cookbook tweet

52. The Art of R Programming: A Tour of Statistical Software Design

Author: Norman Matloff | Available on Amazon

The Art of R Programming by Norman Matloff

You can also use R for software development, which is the focus of this best book for R programming. It’s accessible for hobbyist programmers, covering functional and object-oriented programming with R and going from beginner to advanced topics.

art of r programming tweet

SQL: Handy SQL Books

These are some of the top programming books for the popular database language SQL .

53. SQL in 10 Minutes, Sams Teach Yourself

Author: Ben Forta | Available on Amazon

Book SQL in 10 Minutes

This is a short-and-sweet coding book containing 22 ten-minute lessons, so it’s ideal for those who want to complete tasks in SQL quickly and methodically. From basic data retrieval to more in-depth topics like subqueries, table constraints, etc.

sql in 10 minutes tweet

54. SQL Queries for Mere Mortals: A Hands-On Guide to Data Manipulation in SQL

Authors: John L. Viescas, Michael J. Hernandez  | Available on Amazon

SQL Queries for Mere Mortals - book to read

This code book provides a clear, simple tutorial on creating reliable SQL queries for modern databases. It goes over every aspect of query writing so you can write effective ones of all types.

sql queries tweet

Android: The Top Android Programming Books

Pick up an Android programming book to turn yourself into a pro app builder !

55 . Android Application Development All-in-One For Dummies

Author: Barry Burd  | Available on Amazon

Android Application Development All-in-One For Dummies

This comprehensive guide is written to get you started developing Android apps . It goes over the key programming concepts you need to do things like program phone features, build and refine your apps, manage data, use the Android native development kit, and more.

android application development tweet

56. Head First Android Development: A Brain-Friendly Guide

Authors: Dawn Griffiths, David Griffiths | Available on Amazon

Mobile App Book - Head First Android Development

This is another “brain-friendly” guide with plenty of visual illustrations to help you learn and keep you engaged. The Android programming book will help you quickly build a working app and improve it with interactive design, cross-device functionality, and more.

head first android tweet

iOS / Swift: Become an iOS Pro With These Books

Last but not least, these are some of the best coding books for aspiring Apple developers .

57. iOS Programming: The Big Nerd Ranch Guide

Authors: Christian Keur, Aaron Hillegass | Available on Amazon

This mobile programming beginner book teaches you the foundations of iOS development and the tools and techniques you need to develop apps with awesome features yourself.

ios programming tweet

58. Swift Programming: The Big Nerd Ranch Guide

Authors: Matthew Mathias, John Gallagher | Available on Amazon

Swift is the language of Apple, and this guide will help you understand and use it effectively. From the hows and whys to the grammar and style of Swift, you’ll gain the knowledge and confidence to crush coding challenges and build better apps.

swift programming tweet

Typescript: Top TypeScript Books

TypeScript is a typed superset of JavaScript. These are some of the best books for those coding with TypeScript.

59. Programming TypeScript: Making Your JavaScript Applications Scale

Author: Boris Cherny | Available on Amazon

Ideal for programmers with intermediate JavaScript experience, this TypeScript book teaches both basic and advanced topics. It covers not just the language, but also the ecosystem. The casual, humorous style makes it a fun read, not just an educational one.

Programming typescript tweet

60. Effective TypeScript: 62 Specific Ways to Improve Your TypeScript

Author: Dan Vanderkam | Available on Amazon

This coding book guides you through 62 specific ways to improve your use of TypeScript. It helps you build mental models of how TypeScript and its ecosystem work and gives you the tools to avoid pitfalls and traps.

Effective Typescript tweet

61. Essential TypeScript: From Beginner to Pro

Author: Adam Freeman | Available on Amazon

This awesome TypeScript book shows you how to use TypeScript in realistic scenarios. It goes in-depth to give you the knowledge you need — starting from the nuts-and-bolts and going all the way up to the most advanced and sophisticated features.

Rust: Books to Help You Learn Rust

Here are some of the best coding books for beginners learning Rust, a multi-paradigm, general-purpose programming language designed for performance and safety.

62. Programming Rust: Fast, Safe Systems Development

Authors: Jim Blandy, Jason Orendorff, Leonora F. S. Tindall | Available on Amazon

This guide covers Rust’s fundamental data types, the core concepts of ownership and borrowing, how to write flexible, efficient code with traits and generics, and much more. Dives into both the how and why for a lot of the features and benefits of Rust.

Programming rust tweet

63. Rust for Rustaceans: Idiomatic Programming for Experienced Developers

Author: Jon Gjengset | Available on Amazon

This coding book is best for people who have already mastered the basics of Rust. It covers how to build and maintain larger code bases, write powerful and flexible applications and libraries, and expand the complexity of your projects.

Rust for rustaceans tweet

64. The Rust Programming Language

Authors: Steve Klabnik, Carol Nichols | Available on Amazon

This programmer book is the official book on the Rust programming language, written by the Rust development team at the Mozilla Foundation. Comes with code examples and three whole chapters dedicated to building complete projects using Rust.

Rust Programming Language tweet

Kotlin: Books Books For Learning Kotlin

Check out these three Kotlin books that can help you write better Android apps.

65. Kotlin in Action

Authors: Dmitry Jemerov, Svetlana Isakova | Available on Amazon

Best for experienced Java developers, this book on coding covers the basics of Kotlin all the way through building applications to run on the JVM and Android devices. Topics include functional programming on the JVM, writing clean and idiomatic code, and combining Kotlin and Java.

kotlin in action tweet

66. Kotlin Cookbook: A Problem-Focused Approach

Author: Ken Kousen | Available on Amazon

A great coding book for ​​both experienced programmers and those new to Kotlin. Includes over 80 code examples paired with simple explanations. Learn how to solve problems with Kotlin by concentrating on your own use cases rather than on basic syntax.

67. Head First Kotlin: A Brain-Friendly Guide

A complete introduction to coding in Kotlin. This programming book goes beyond syntax and how-to manuals and teaches you how to think like a great Kotlin developer. Written in a conversational way that keeps you turning the pages.

Head First Kotlin tweet

Go: Best Go Programming Language Books

Here are the top Golang books for people who want to learn Go, the statically typed, compiled programming language designed at Google.

68. The Go Programming Language

Authors: Alan Donovan, Brian Kernighan | Available on Amazon

Starts from the basic concepts of Go, including the structural elements of Go programs (e.g., syntax, control flow, data types) and goes all the way to how to build, test, and maintain projects with Go. Includes hundreds of interesting and practical examples of well-written Go code.

The programming Language tweet

69. Head First Go

Author: Jay McGavren | Available on Amazon

Great for visual learners, this beginner/intermediate level Go coding book features hand-drawn diagrams and clear examples.

70. Get Programming with Go

Authors: Nathan Youngman, Roger Peppe | Available on Amazon

In this Go coding book, you’ll master Go syntax, work with types and functions, and explore bigger ideas like state and concurrency. There are also seven capstone projects featuring spacefaring gophers, Mars rovers, ciphers, and simulations to help you learn concepts.

Ge programming with go tweet

With the help of the best books for computer science, you’ll be able to conquer any coding challenge ahead of you. Start your collection of the best books to learn programming today.

Disclaimer: We are part of the Amazon Associates program, meaning we earn from qualifying purchases .

15 Best Books for Programmers You Should Read

15 Best Books for Programmers You Should Read

1. developer hegemony - eric dietrich.

  • 2. The Pragmatic Programmer - David Thomas & Andrew Hunt

3. Clean Code - Robert C. Martin

4. design patterns: elements of reusable object-oriented software - erich gamma, 5. data structures and algorithms made easy - narasimha karumanchi, 6. refactoring - martin fowler, 7. the mythical man-month - frederick brooks jr., 8. coders at work - peter seibel, 9. test driven development: by example - kent beck, 10. pragmatic thinking and learning - andy hunt, 11. code complete - steve mcconnell, 12. cracking the coding interview - gayle laakmann mcdowell, 13. code - charles petzold, 14. the art of computer programming - donald knuth, 15. the effective engineer - edmund lau.

As software developers we constantly need to learn new concepts, programming languages and technologies to stay up to date.

One of my preferred methods for learning is by reading books, and there is no shortage of great books on software development.

The problem is, there are so many books that it can be difficult to find the ones that are worth your time.

That is why in this article I have covered some of the best books I have found over the years that are worth reading.

These books can be read at any level, but some of them are quite advanced, so I would recommend you have at least a couple of years experience already to get the most out of these books.

Developer Hegemony

For anyone who has read any of my other articles on books , you will know I love books that are thought-provoking and motivational.

A quick warning before reading this book. It will make you want to quit your job and become a consultant.

Software Developers hold an enormous amount of power. We are the ones who are producing the assets for the companies we work for. Often, if it wasn’t for the software developers, the company wouldn’t make any money.

So, why is it that we end up in subordinate positions, being dictated what to work on as well as how and where to work.

Developer Hegemony looks at the past, present, and future of corporations and what it means for software developers.

🚀 Are you looking to level up your engineering career?

You might like my free weekly newsletter, The Curious Engineer , where I give career advice and tackle complex engineering topics.

This is a great book that will make you realise your potential as a software developer and can help you find ways to gain more respect and freedom from your coding skills.

2. The Pragmatic Programmer - David Thomas & Andrew Hunt

The Pragmatic Programmer

It is no accident that the cover of this book has woodworking tools instead of a keyboard and mouse.

This book encourages you to see programming as a craft and not just a data input job. Although written 20 years ago, this book is still relevant today and covers various tips to help you can become a better programmer.

If you are keen to learn how to write flexible, adaptable code that is easy to maintain, then this book is a must-read.

Clean Code

What programming book list would be complete without mentioning Clean Code by Robert C. Martin?

There is a good reason why this book appears on every developer’s reading list. It is the bible for learning to write clean code, and practically, everything written on the topic originates from this book.

I think most of us are familiar with the damage that messy code can do to an application. On a personal level, you want to avoid being known as the person who writes bad code, either.

If you want to be known as the person who writes elegant code rather than other developers cursing your name under their breaths, then you need to read this book.

Design Patterns

Design patterns are mentioned in a lot of software development books. They are really the key to writing clean, maintainable code that other developers can work on easily.

When everyone is “singing from the same hymn sheet”, it makes developing code as a team a lot easier. One way to do this is by using reusable design patterns that other developers will recognise.

If you can become familiar with the main design patterns, it also makes writing code easier as well as you don’t have to solve the same common programming problems yourself.

Although this book was written nearly 30 years ago, the design patterns are still relevant today, and it is worth having this book on your desk to reference.

Data Structures and Algorithms Made Easy

Beginners always tend to get a bit stuck when it comes to data structures and algorithms, but like anything they become easier with practise.

This book will give you a good introduction to the topic, but also provides many puzzles and examples to see how data structures and algorithms can be used.

If you are preparing for an interview and are expecting plenty of questions on data structures and algorithms, then it is worth giving this book a read beforehand.

Refactoring

Anyone who has been a programmer for a little will have come across Martin Fowler. He writes numerous useful articles on his website, I especially like his posts about microservices.

This book is just as useful as his website and covers how to refactor your code to improve the maintainability of your applications.

Everyone is familiar with refactoring now, but it wasn’t as common when this book was released, and it has become the goto reference on the subject.

If refactoring isn’t your strong point, or you just want to find some more techniques you can use daily then it is worth giving this book a read.

The Mythical Man-Month

Another classic software development book, although some concepts are a little bit dated now.

Instead of covering programming, this book is more about the more project management side of developing software.

It is the book you wish your project manager had read.

The book covers the author’s experience as a project manager at IBM, where he was responsible for some massive software projects.

It has some great advice which some of us know but would be worth passing on to your PM. For example, how adding more engineers to an already late project isn’t going to help.

Coders at Work

This book isn’t like the other books on this list. It is a collection of 15 interviews by renowned programmers.

The book covers interviews with people like Brenden Eich (Inventor of JavaScript), Joe Armstrong (Inventor of Erlang) and Peter Norvig (Director of Research at Google and author of THE text on AI).

There are not many books that give us an insight into the minds of some of the best programmers of our time. The book is packed full of advice and inspiration that is useful, no matter where you are in your career.

Test Driven Development

Everyone has heard of Test Driven Development (TDD) but few people do it.

If you want to write maintainable, robust code, then you need to test it before you write it. Building up your application one test at a time helps you think through how your application is going to work before you waste lots of time writing code.

This is the goto book on Test Driven Development and is packed with examples, so you can see how to do it in practice.

If you want to get started with TDD, then it is worth reading this book first.

Pragmatic Thinking and Learning

From one of the authors of The Pragmatic Engineer (#2), this book’s subtitle is “Refactor Your Wetware” and refers to your brain and how we think about solving problems.

This book is full of tips on ways to improve your thinking, learn faster and remember what you learn.

Software development is more about problem solving than writing code, so it is important to improve your brain along with your coding skills.

Code Complete

Another classic which should be on every developers’ bookshelf.

Although some concepts are a little outdated now (waterfall anyone) this book is still packed with a practical tips on how to write better code.

This book covers everything from design, testing, naming conventions as well refactoring. Everything in this book is backed with data and real-world scenarios, so it isn’t just “fluff” that you see in plenty of other books.

Cracking the Coding Interview

Software developer interviews can be pretty daunting. Whether it is being asked to code with an audience or redesign the companies’ architecture on a whiteboard, they can cause anyone’s palms to sweat.

Before going to an interview, it is worth reading this book. Gayle is a former software developer and hiring manager and this book covers everything including problem-solving, data structures, and algorithms.

It is packed full of 189 interview questions that are most commonly asked in interviews, as well as giving us a behind-the-scenes look at how big companies such as Facebook and Google hire developers.

This book is a must-read for anyone considering applying for a software development job.

Code

Many of us understand how to write code, but don’t understand the inner workings of the very computers the code is running on.

This book covers topics such as the binary system and logic gates that many developers don’t understand.

Even though the subject is quite complex, Petzold does an impressive job of breaking down the concepts and making them accessible for a wider audience.

If you want to get a better understanding of the software hardware interface and how your computer actually works “under the hood” then I would recommend reading this book.

The Art of Computer Programming

This is a 5 books set covering everything from the fundamentals as well as algorithms and the mathematical foundations of computer science.

If you are serious about being a software developer, then this book set is a worthwhile investment. It is definitely an investment given the price of this set compared to the other books on this list.

If you are looking for a comprehensive resource on programming that you can reference throughout your career, then these books are worth getting.

The Effective Engineer

There is a key word in the subtitle of this book, “How to Leverage Your Efforts In Software Engineering to Make a Disproportionate and Meaningful Impact”.

Leverage. One of the greatest things about being a software developer is that you can impact so many people with your code. Once written, your code can scale indefinitely.

This book, written by the former CTO of Facebook, aims to help developers be more effective at their jobs by showing us how to focus on the most impactful project and tasks.

You have probably heard of the 10X engineer. These engineers are not a thing of myth and legend, they really can have a 10X impact compared to others; however, they don’t achieve this by working 10 times the hours.

If you want to find out how to be a more effective engineer and reap the success that comes with it, then it is worth reading this book.

✨ Are you looking to level up your skills in the tech industry?

This blog survives through word of mouth. If liked this post then I am sure your friends will too:

ALSO ON ALEXHYETT.COM

Knowledge Management for Software Developers

Knowledge Management for Software Developers

  • 02 June 2023

Why You Struggle to Learn to Code

Why You Struggle to Learn to Code

  • 20 January 2023

How I Take (and Organise) My Notes As a Software Engineer

How I Take (and Organise) My Notes As a Software Engineer

  • 05 January 2023

Code Katas: Can They Make You A Better Developer?

Code Katas: Can They Make You A Better Developer?

  • 21 November 2022

Why can’t all programming books look like this?

Why can’t all programming books look like this?

  • 12 January 2016

The Big List of Free Pluralsight Courses for Developers

The Big List of Free Pluralsight Courses for Developers

  • 09 October 2015
  • ← 5 Books That Changed My Life
  • Different Ways to Create Components in React →

Browse Topics

  • 🚀 Entrepreneurship
  • 👨‍💻 Software Design
  • 💼 Career Advice
  • 🔠 Fundamentals
  • 🖥 Infrastructure
  • 💻 Tools & Tech

📨 Newsletter

Software development is hard but it doesn't have to be.

My free weekly newsletter, The Curious Engineer is written just for engineers like you.

If you like my content then you might want to follow me in a few other places too.

📨 Subscribe to The Curious Engineer

Are you looking to level up your skills in the tech industry? My free weekly newsletter is written for engineers like you, providing you with the tools you need to excel in your career.

Join the growing community to receive thought provoking content and curated reads from across the web, directly to your inbox.

  • DSA Tutorial
  • Data Structures
  • Linked List
  • Dynamic Programming
  • Binary Tree
  • Binary Search Tree
  • Divide & Conquer
  • Mathematical
  • Backtracking
  • Branch and Bound
  • Pattern Searching
  • Competitive Programming - A Complete Guide
  • Competitive Programming (CP) Handbook with Complete Roadmap

Mathematics for Competitive Programming

  • Must do Math for Competitive Programming
  • Pigeonhole Principle for CP | Identification, Approach & Problems
  • Euler Totient for Competitive Programming
  • Essential Maths for Competitive Programming Course By GeeksforGeeks

Number Theory for CP

  • Binary Exponentiation for Competitive Programming
  • GCD (Greatest Common Divisor) Practice Problems for Competitive Programming

Bit Manipulation for CP

  • Bit Manipulation for Competitive Programming
  • Bit Tricks for Competitive Programming
  • Bitwise Hacks for Competitive Programming

Combinatorics for CP

  • Inclusion Exclusion principle for Competitive Programming

Greedy for CP

  • Binary Search on Answer Tutorial with Problems
  • Ternary Search for Competitive Programming

Array based concepts for CP

  • What are Online and Offline query-based questions in Competitive Programming
  • Precomputation Techniques for Competitive Programming
  • PreComputation Technique on Arrays
  • Frequency Measuring Techniques for Competitive Programming

Dynamic Programming (DP) for CP

  • DP on Trees for Competitive Programming
  • Dynamic Programming in Game Theory for Competitive Programming

Game Theory for CP

  • Interactive Problems in Competitive Programming
  • Mastering Bracket Problems for Competitive Programming
  • MEX (Minimum Excluded) in Competitive Programming

Graphs for CP

  • BFS using STL for competitive coding

Advanced Data Structure

  • Introduction to Heavy Light Decomposition
  • Meet in the middle
  • Policy based data structures in g++

Competitive Programming in Python

  • Getting Started with Competitive Programming in Python
  • Why is python best suited for Competitive Coding?
  • Python in Competitive Programming
  • Competitive Coding Setup for C++ and Python in VS Code using Python Script
  • Python Input Methods for Competitive Programming
  • Input/Output from external file in C/C++, Java and Python for Competitive Programming
  • Fast I/O for Competitive Programming in Python
  • Which Python Modules are useful for competitive programming?
  • Python Tricks for Competitive Coding

Competitive Programming in C++

  • Why C++ is best for Competitive Programming?
  • Setting up a C++ Competitive Programming Environment
  • How to setup Competitive Programming in Visual Studio Code for C++
  • Setting up Sublime Text For Competitive Programming (C++) Using Fast Olympic Coding Plugin
  • Setting Up Sublime Text For Competitive Coding in C++14 on Ubuntu
  • Writing C/C++ code efficiently in Competitive programming
  • Writing code faster during Competitive Programming in C++
  • Which C++ libraries are useful for competitive programming?
  • C++: Methods of code shortening in competitive programming
  • Common mistakes to be avoided in Competitive Programming in C++ | Beginners
  • C++ tricks for competitive programming (for C++ 11)

Competitive Programming in Java

  • Setting up Java Competitive Programming Environment
  • How to Setup IntelliJ IDEA For Java Competitive Programming Environment?
  • Fast I/O in Java in Competitive Programming
  • Efficiently Reading Input For Competitive Programming using Java 8
  • Java tricks for competitive programming (for Java 8)
  • Java Generics to Code Efficiently in Competitive Programming
  • Java Competitive Programming Setup in VS Code with Fast I/O and Snippets
  • Which Java libraries are useful for competitive programming?

Competitive Programming in JavaScript

  • How to get started with Competitive Programming in JavaScript
  • What is Competitive Programming/Coding and How to Prepare for It?
  • Fast I/O for Competitive Programming
  • Why Should You Do Competitive Programming?
  • How to Get Started with Competitive Programming?
  • How to begin with Competitive Programming?
  • How to read Competitive Programming Questions?
  • Top Programming Languages For Competitive Programming
  • 5 Best Languages for Competitive Programming
  • Competitive Programming - Myths and Mind Blowing Facts
  • What are Ad Hoc Problems in Competitive Programming?
  • Learning the art of Competitive Programming
  • How to become a master in competitive programming?

Tips & Tricks for CP

  • Tips and Tricks for Competitive Programmers | Set 1 (For Beginners)
  • Most Critical Mistakes & Tips in Competitive Programming
  • How To Make Competitive Programming Interesting?
  • Some important shortcuts in Competitive Programming
  • A Better Way To Approach Competitive Programming
  • Knowing the complexity in competitive programming
  • Logarithm tricks for Competitive Programming
  • Importance of Testing In Competitive Programming
  • Tips for testing code in Competitive programming

Resources for CP

  • What Are The Best Resources For Competitive Programming?
  • Top 10 Algorithms and Data Structures for Competitive Programming
  • Can ChatGPT be used to solve Competitive Coding Problems?
  • Top 15 Websites for Coding Challenges and Competitions

7 Best Books for Competitive Programming

Career with cp.

  • Companies that hire Interns through Competitive programming in India
  • Competitive Programming vs Software Development - Where Should I Invest My Time?
  • Is Competitive Programming Must For Software Development Roles?
  • How can competitive programming help you get a job?
  • Is Competitive Programming Must For Getting Jobs at Product-Based Companies?

Do you have a dream to win a Gold Medal in the Olympics of Programming (ACM ICPC)? Do you want to ace your career with Google Kickstart or want to win a prize amount of $20,000 to become a world champion in Facebook Hackercup or Google Code jam? Then you have to be an out-of-the-box problem solver. These are some most famous global algorithmic programming contests where programmers from all around the world put their coding skills to solve real-world problems with the power of thinking, creativity, collaboration, innovation, and the ability to perform under pressure.

Best Competitive Programming Books

Competitive programming is nothing but a sport where your code needs to beat others. So only solving a problem is not enough – you have to solve it in the most optimized way with the minimum time complexities and auxiliary space. Now if you want to code like that then you have to master the fundamentals and should learn in-depth concepts of every corner of programming, data structure , and algorithms . Only a good book can teach and guide you to become a Better Programmer. 

Here are some outstanding books which not only teach the syntax and semantics of programming languages but also help you to think, organize, and become a good problem solver, which is indeed the most important lesson for a coder. Also, if you want to lead the charts of competitive programming then get yourself enrolled in the Competitive Programming – Live course and enhance your problem-solving skills in one place only. 

1. Introduction to Algorithms By Thomas H . Cormen, Charles E. Leiserson: 

This book is the Bible of Competitive Coding, a beautifully written, comprehensive textbook that covers all the modern algorithms in-depth. It is a fully organized and definitive introductory book on the design and analysis of algorithms accessible to all levels of readers. Most books on algorithms available in the market are either rigorous and incomplete or cover huge material without rigor but this book is a rare example that uniquely combines both rigor and comprehensiveness. The first half of this book gives an effective method to study algorithms and the second half is focused on more advanced readers and curious students with compelling material on both the possibilities and the challenges in this fascinating field.

  • Every chapter is well organized and best for self-study.
  • Pseudocodes are designed to be readable by any beginner-level programmer.
  • Elementary explanation without sacrificing depth of coverage or mathematical rigidity.
  • Vastly used as a research reference in algorithms and commonly cited as a reference for algorithms in published papers(10,000+ citations).
  • Bestseller programming book with half a million sold copies during the initial years.

2. Competitive Programming 3 by Steven Halim:

This is a hardcore Competitive Programming book specially designed for the booming International Olympiad in Informatics (IOI) and ACM International Collegiate Programming Contest (ICPC), a must-have for every competitive programmer. From an ordinary coder to one of the world’s finest competitive programmers, mastering the contents of this book is very necessary. It contains a collection of relevant data structures, algorithms, and programming tips written to be more competitive in these competitions. This book is such a treat for those who love problem-solving with programming, and those who want to go for interviews with big IT companies.

  • Gives you a strong lower bound of problem-solving paradigm in computer science.
  • Covers a wide variety of problems, many of them known to the community for featuring popular Online Judges.
  • Explaining each algorithm with some example problems leads to a deep understanding of a pragmatic approach.
  • Specially focused on the practice with some sample exercises for each topic for a better grasp.
  • A masterpiece to guide any passionate algorithmic problem solver.

3. Guide to Competitive Programming by Antti Laaksonen:

This is an easy-to-follow, ideal reference book that presents a comprehensive introduction to modern competitive programming. It mainly focuses to learn algorithms through competitive programming to encourage the design of algorithms that work in real-world problems. This book also improves the debugging skills of a programmer and influences the thinking required to solve problems competitively. The book contains many tips and tricks which can be very useful for any competitive programmer.

  • Describes how to write efficient algorithms to process large data sets quickly,
  • Provides in-depth concepts on data structures of the C++ standard library,
  • An efficient algorithmic design technique for dynamic programming optimization and graph algorithms,
  • Easy and nice description of Advanced algorithm design topics like bit-parallelism and amortized analysis,
  • Specialized in trees, and geometric algorithms, and discusses mathematical topics for competitive programming,
  • Containing a broad range of topics of various levels of difficulty, this book is suitable for both beginners and more experienced readers.

4. Programming Challenges by Steven S Skiena:

This is a well-written competitive programming book for self-study, teaching innovative courses in algorithms and programming, and for international competition. International programming contests are the best way to improve your algorithmic and coding skills and for this reason, this book uses programming competition-type problems to motivate the study of algorithms and includes more than 100 programming challenges with the necessary theory and key concepts for approaching them. All the interesting problems in this book are well structured by topics to gain a concrete understanding of both algorithmic techniques and advanced coding topics.

  • A large no of quality programming problems suitable for self-study
  • Online judging at www.programming-challenges.com
  • Suitable to prepare for major programming contents like ACM ICPC, IOI, and Topcoder Challenges.
  • Contains quality concepts in brief on key elements like number theory, geometry, dynamic programming, and graph algorithms,
  • Programs are written in popular programming languages like C, C++, and Java.

5. The Algorithm Design Manual By Steven S Skiena:

It is one of the best-selling classic books which reveals the mystery behind designing algorithms and analyzing their optimized efficiency. It’s not only the primary textbook of choice for algorithm design courses but also the best practical reference guide to algorithms for programmers, researchers, and students which provides straightforward access to combinatorial algorithms technology. This book also provides many short tips and tricks for designing and analyzing computer algorithms with a catalog of algorithmic resources, implementations, and an extensive bibliography.

  • Online support for lectures with completely updated lecture slides, audio, and video.
  • Updated links for the very best algorithm implementations available in C++, and Java,
  • Contains the most popular algorithmic problems that arise most often in practice,
  • Provides unique problems from real-world applications,
  • Suitable for all levels of readers with complete guidance.

6. Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin

This book is best for people who want to gain insights into software development and code cleaning. If you are preparing for competitive programming then Clean Code is a good choice due to its step-by-step explanation of writing, cleaning, and refactoring codes. The book also has ample practical examples that the person can use to learn and practice in day-to-day life. The book is divided into 3 parts, the first one has principles, patterns, and practice for writing proper codes. The second part has numerous case studies regarding the complexity faced during writing codes. The third part is a kind of payoff that contains the list of heuristics and “smells” collected while creating new case studies. This book also helps in:

  • telling difference between good and bad code
  • creating good functions and classes
  • way of implementing complete error handling

7. The Pragmatic Programmer

The book is written in a way that every time you read there is something new to learn. Since 1999 the day of its creation the book has helped its readers to learn and develop better software and made them better programmers. The Pragmatic Programmer is a good choice for someone who is looking forward to competitive programming as it has everything from becoming a skilled developer to a full-fledged programmer. The book gives you a glimpse of fascinating analogies, classic and modern anecdotes, and thought-provoking examples in order to make learning a more interesting and fun process. 

  • The book covers a comprehensive range of programming
  • Helps in software, career, and personality development of the reader
  • Will help you in fighting rot software and avoid duplicating knowledge

Here’s a complete guide to Competitive Programming.

Conclusion:

The most important thing is to learn the core fundamental concepts and practice a lot. You can select any one of these books and start learning and start coding. The best thing about these books is that they will keep you motivated during your journey toward a good competitive programmer. So don’t stop keep learning, keep chasing, and most importantly keep practicing.

Please Login to comment...

Similar reads.

  • GBlog-Competitive-Programming
  • Competitive Programming
  • What are Tiktok AI Avatars?
  • Poe Introduces A Price-per-message Revenue Model For AI Bot Creators
  • Truecaller For Web Now Available For Android Users In India
  • Google Introduces New AI-powered Vids App
  • 30 OOPs Interview Questions and Answers (2024)

Improve your Coding Skills with Practice

 alt=

What kind of Experience do you want to share?

How to think like a programmer — lessons in problem solving

How to think like a programmer — lessons in problem solving

by Richard Reis

aNP21-ICMABUCyfdi4Pys7P0D2wiZqTd3iRY

If you’re interested in programming, you may well have seen this quote before:

“Everyone in this country should learn to program a computer, because it teaches you to think.” — Steve Jobs

You probably also wondered what does it mean, exactly, to think like a programmer? And how do you do it??

Essentially, it’s all about a more effective way for problem solving .

In this post, my goal is to teach you that way.

By the end of it, you’ll know exactly what steps to take to be a better problem-solver.

Why is this important?

Problem solving is the meta-skill.

We all have problems. Big and small. How we deal with them is sometimes, well…pretty random.

Unless you have a system, this is probably how you “solve” problems (which is what I did when I started coding):

  • Try a solution.
  • If that doesn’t work, try another one.
  • If that doesn’t work, repeat step 2 until you luck out.

Look, sometimes you luck out. But that is the worst way to solve problems! And it’s a huge, huge waste of time.

The best way involves a) having a framework and b) practicing it.

“Almost all employers prioritize problem-solving skills first.
Problem-solving skills are almost unanimously the most important qualification that employers look for….more than programming languages proficiency, debugging, and system design.
Demonstrating computational thinking or the ability to break down large, complex problems is just as valuable (if not more so) than the baseline technical skills required for a job.” — Hacker Rank ( 2018 Developer Skills Report )

Have a framework

To find the right framework, I followed the advice in Tim Ferriss’ book on learning, “ The 4-Hour Chef ”.

It led me to interview two really impressive people: C. Jordan Ball (ranked 1st or 2nd out of 65,000+ users on Coderbyte ), and V. Anton Spraul (author of the book “ Think Like a Programmer: An Introduction to Creative Problem Solving ”).

I asked them the same questions, and guess what? Their answers were pretty similar!

Soon, you too will know them.

Sidenote: this doesn’t mean they did everything the same way. Everyone is different. You’ll be different. But if you start with principles we all agree are good, you’ll get a lot further a lot quicker.

“The biggest mistake I see new programmers make is focusing on learning syntax instead of learning how to solve problems.” — V. Anton Spraul

So, what should you do when you encounter a new problem?

Here are the steps:

1. Understand

Know exactly what is being asked. Most hard problems are hard because you don’t understand them (hence why this is the first step).

How to know when you understand a problem? When you can explain it in plain English.

Do you remember being stuck on a problem, you start explaining it, and you instantly see holes in the logic you didn’t see before?

Most programmers know this feeling.

This is why you should write down your problem, doodle a diagram, or tell someone else about it (or thing… some people use a rubber duck ).

“If you can’t explain something in simple terms, you don’t understand it.” — Richard Feynman

Don’t dive right into solving without a plan (and somehow hope you can muddle your way through). Plan your solution!

Nothing can help you if you can’t write down the exact steps.

In programming, this means don’t start hacking straight away. Give your brain time to analyze the problem and process the information.

To get a good plan, answer this question:

“Given input X, what are the steps necessary to return output Y?”

Sidenote: Programmers have a great tool to help them with this… Comments!

Pay attention. This is the most important step of all.

Do not try to solve one big problem. You will cry.

Instead, break it into sub-problems. These sub-problems are much easier to solve.

Then, solve each sub-problem one by one. Begin with the simplest. Simplest means you know the answer (or are closer to that answer).

After that, simplest means this sub-problem being solved doesn’t depend on others being solved.

Once you solved every sub-problem, connect the dots.

Connecting all your “sub-solutions” will give you the solution to the original problem. Congratulations!

This technique is a cornerstone of problem-solving. Remember it (read this step again, if you must).

“If I could teach every beginning programmer one problem-solving skill, it would be the ‘reduce the problem technique.’
For example, suppose you’re a new programmer and you’re asked to write a program that reads ten numbers and figures out which number is the third highest. For a brand-new programmer, that can be a tough assignment, even though it only requires basic programming syntax.
If you’re stuck, you should reduce the problem to something simpler. Instead of the third-highest number, what about finding the highest overall? Still too tough? What about finding the largest of just three numbers? Or the larger of two?
Reduce the problem to the point where you know how to solve it and write the solution. Then expand the problem slightly and rewrite the solution to match, and keep going until you are back where you started.” — V. Anton Spraul

By now, you’re probably sitting there thinking “Hey Richard... That’s cool and all, but what if I’m stuck and can’t even solve a sub-problem??”

First off, take a deep breath. Second, that’s fair.

Don’t worry though, friend. This happens to everyone!

The difference is the best programmers/problem-solvers are more curious about bugs/errors than irritated.

In fact, here are three things to try when facing a whammy:

  • Debug: Go step by step through your solution trying to find where you went wrong. Programmers call this debugging (in fact, this is all a debugger does).
“The art of debugging is figuring out what you really told your program to do rather than what you thought you told it to do.”” — Andrew Singer
  • Reassess: Take a step back. Look at the problem from another perspective. Is there anything that can be abstracted to a more general approach?
“Sometimes we get so lost in the details of a problem that we overlook general principles that would solve the problem at a more general level. […]
The classic example of this, of course, is the summation of a long list of consecutive integers, 1 + 2 + 3 + … + n, which a very young Gauss quickly recognized was simply n(n+1)/2, thus avoiding the effort of having to do the addition.” — C. Jordan Ball

Sidenote: Another way of reassessing is starting anew. Delete everything and begin again with fresh eyes. I’m serious. You’ll be dumbfounded at how effective this is.

  • Research: Ahh, good ol’ Google. You read that right. No matter what problem you have, someone has probably solved it. Find that person/ solution. In fact, do this even if you solved the problem! (You can learn a lot from other people’s solutions).

Caveat: Don’t look for a solution to the big problem. Only look for solutions to sub-problems. Why? Because unless you struggle (even a little bit), you won’t learn anything. If you don’t learn anything, you wasted your time.

Don’t expect to be great after just one week. If you want to be a good problem-solver, solve a lot of problems!

Practice. Practice. Practice. It’ll only be a matter of time before you recognize that “this problem could easily be solved with <insert concept here>.”

How to practice? There are options out the wazoo!

Chess puzzles, math problems, Sudoku, Go, Monopoly, video-games, cryptokitties, bla… bla… bla….

In fact, a common pattern amongst successful people is their habit of practicing “micro problem-solving.” For example, Peter Thiel plays chess, and Elon Musk plays video-games.

“Byron Reeves said ‘If you want to see what business leadership may look like in three to five years, look at what’s happening in online games.’
Fast-forward to today. Elon [Musk], Reid [Hoffman], Mark Zuckerberg and many others say that games have been foundational to their success in building their companies.” — Mary Meeker ( 2017 internet trends report )

Does this mean you should just play video-games? Not at all.

But what are video-games all about? That’s right, problem-solving!

So, what you should do is find an outlet to practice. Something that allows you to solve many micro-problems (ideally, something you enjoy).

For example, I enjoy coding challenges. Every day, I try to solve at least one challenge (usually on Coderbyte ).

Like I said, all problems share similar patterns.

That’s all folks!

Now, you know better what it means to “think like a programmer.”

You also know that problem-solving is an incredible skill to cultivate (the meta-skill).

As if that wasn’t enough, notice how you also know what to do to practice your problem-solving skills!

Phew… Pretty cool right?

Finally, I wish you encounter many problems.

You read that right. At least now you know how to solve them! (also, you’ll learn that with every solution, you improve).

“Just when you think you’ve successfully navigated one obstacle, another emerges. But that’s what keeps life interesting.[…]
Life is a process of breaking through these impediments — a series of fortified lines that we must break through.
Each time, you’ll learn something.
Each time, you’ll develop strength, wisdom, and perspective.
Each time, a little more of the competition falls away. Until all that is left is you: the best version of you.” — Ryan Holiday ( The Obstacle is the Way )

Now, go solve some problems!

And best of luck ?

Special thanks to C. Jordan Ball and V. Anton Spraul . All the good advice here came from them.

Thanks for reading! If you enjoyed it, test how many times can you hit in 5 seconds. It’s great cardio for your fingers AND will help other people see the story.

If this article was helpful, share it .

Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. Get started

Get full access to Programming and Problem Solving with C++: Comprehensive, 6th Edition and 60K+ other titles, with a free 10-day trial of O'Reilly.

There are also live events, courses curated by job role, and more.

Programming and Problem Solving with C++: Comprehensive, 6th Edition

Programming and Problem Solving with C++: Comprehensive, 6th Edition

Read it now on the O’Reilly learning platform with a 10-day free trial.

O’Reilly members get unlimited access to books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.

Book description

The best-selling Programming and Problem Solving with C++, now in it's Sixth Edition, remains the clearest introduction to C++, object-oriented programming, and software development available. Renowned author team Nell Dale and Chip Weems are careful to include all topics and guidelines put forth by the ACM/IEEE to make this text ideal for the one- or two-term CS1 course. Their philosophy centers on making the difficult concepts of computer science programming accessible to all students, while maintaining the breadth of detail and topics covered.

Key Features: -The coverage of advanced object-oriented design and data structures has been moved to later in the text. -Provides the highly successful concise and student-friendly writing style that is a trademark for the Dale/Weems textbook series in computer science. -Introduces C++ language constructs in parallel with the appropriate theory so students see and understand its practical application. -Strong pedagogical elements, a hallmark feature of Dale/Weems' successful hands-on teaching approach, include Software Maintenance case studies, Problem-Solving case studies, Testing & Debugging exercises, Exam Preparation exercises, Programming Warm-up exercises, Programming Problems, Demonstration Projects, and Quick Check exercises. -A complete package of student and instructor resources include a student companion website containing all the source code for the programs and exercises in the text, additional appendices with C++ reference material and further discussion of topics from the text, and a complete digital lab manual in C++. Instructors are provided all the solutions to the exercises in the text, the source code, a Test Bank, and PowerPoint Lecture Outlines organized by chapter.

Table of contents

  • What Is Programming?
  • How Do We Write a Program?
  • What Is an Algorithm?
  • What Is a Programming Language?
  • What Kinds of Instructions Can Be Written in a Programming Language?
  • What Is Software Maintenance?
  • Software Maintenance Case Study: An Introduction to Software Maintenance
  • 1.3 What’s Inside the Computer?
  • Software Piracy
  • Privacy of Data
  • Use of Computer Resources
  • Software Engineering
  • Ask Questions
  • Look for Things That Are Familiar
  • Solve by Analogy
  • Means-Ends Analysis
  • Divide and Conquer
  • The Building-Block Approach
  • Merging Solutions
  • Mental Blocks: The Fear of Starting
  • Algorithmic Problem Solving
  • Problem-Solving Case Study: Leap Year Algorithm
  • Quick Check Answers
  • Exam Preparation Exercises
  • Programming Warm-Up Exercises
  • Case Study Follow-Up
  • Line Number
  • C++ Program Structure
  • Syntax and Semantics
  • Syntax Templates
  • Naming Program Elements: Identifiers
  • Data and Data Types
  • Naming Elements: Declarations
  • Taking Action: Executable Statements
  • Beyond Minimalism: Adding Comments to a Program
  • Blocks (Compound Statements)
  • The C++ Preprocessor
  • Software Maintenance Case Study: Adding Titles to Names
  • Creating Blank Lines
  • Inserting Blanks Within a Line
  • Special Characters
  • Entering a Program
  • Compiling and Running a Program
  • Problem-Solving Case Study: Printing a Chessboard
  • Testing and Debugging
  • Programming Problems
  • 3.1 Overview of C++ Data Types
  • Integral Types
  • Floating-Point Types
  • Named Constant Declarations
  • Variable Declarations
  • Arithmetic Operators
  • Increment and Decrement Operators
  • Precedence Rules
  • Type Coercion and Type Casting
  • Software Maintenance Case Study: Precedence Error
  • Value-Returning Functions
  • Library Functions
  • Void Functions
  • Integers and Strings
  • Floating-Point Numbers
  • The length and size Functions
  • The find Function
  • The substr Function
  • Accessing Characters Within a String: The at Function
  • Converting to Lowercase and Uppercase
  • Problem-Solving Case Study: Mortgage Payment Calculator
  • Input Streams and the Extraction Operator (>>)
  • The Reading Marker and the Newline Character
  • Reading Character Data with the get Function
  • Skipping Characters with the ignore Function
  • Reading String Data
  • 4.2 Interactive Input/Output
  • 4.3 Noninteractive Input/Output
  • Using Files
  • Run-Time Input of File Names
  • 4.5 Input Failure
  • 4.6 Software Design Methodologies
  • Implementing the Design
  • A Perspective on Design
  • Problem-Solving Case Study: Displaying a Name in Multiple Formats
  • The bool Data Type
  • Logical Expressions
  • The If-Then-Else Form
  • The If-Then Form
  • A Common Mistake
  • Software Maintenance Case Study: Incorrect Output
  • The Dangling else
  • Precedence of Operators
  • Relational Operators with Floating-Point Types
  • 5.6 Testing the State of an I/O Stream
  • Problem-Solving Case Study: BMI Calculator
  • Testing in the Problem-Solving Phase: The Algorithm Walk-Through
  • Testing in the Implementation Phase
  • The Test Plan
  • Tests Performed Automatically During Compilation and Execution
  • 6.1 The While Statement
  • 6.2 Phases of Loop Execution
  • Count-Controlled Loops
  • Event-Controlled Loops
  • Looping Subtasks
  • Software Maintenance Case Study: Make a Program General
  • Designing the Flow of Control
  • Designing the Process Within the Loop
  • The Loop Exit
  • Designing Nested Loops
  • Problem-Solving Case Study: Recording Studio Design
  • Loop-Testing Strategy
  • Test Plans Involving Loops
  • 7.1 The Switch Statement
  • 7.2 The Do-While Statement
  • 7.3 The For Statement
  • Software Maintenance Case Study: Changing a Loop Implementation
  • 7.4 The Break and Continue Statements
  • 7.5 Guidelines for Choosing a Looping Statement
  • Assignment Operators and Assignment Expressions
  • Bitwise Operators
  • The Cast Operation
  • The sizeof Operator
  • The ?: Operator
  • Operator Precedence
  • Type Coercion in Arithmetic and Relational Expressions
  • Problem-Solving Case Study: The Rich Uncle
  • When to Use Functions
  • Why Do Modules Need an Interface Design?
  • Designing Interfaces
  • Writing Modules as Void Functions
  • Flow of Control in Function Calls
  • Function Parameters
  • Function Call (Invocation)
  • Function Declarations and Definitions
  • Local Variables
  • The Return Statement
  • Value Parameters
  • Reference Parameters
  • Using Expressions with Parameters
  • A Last Word of Caution About Argument and Parameter Lists
  • Writing Assertions as Function Documentation
  • Problem-Solving Case Study: Lawn Care Company Billing
  • The assert Library Function
  • Scope Rules
  • Variable Declarations and Definitions
  • Initializations in Declarations
  • Software Maintenance Case Study: Debug a Simple Program
  • Side Effects
  • Global Constants
  • Complete Example
  • Boolean Functions
  • Interface Design and Side Effects
  • When to Use Value-Returning Functions
  • 9.5 Type Coercion in Assignments, Argument Passing, and Return of a Function Value
  • Problem-Solving Case Study: Health Profile
  • Stubs and Drivers
  • Numeric Types
  • The Typedef Statement
  • Enumeration Types
  • Named and Anonymous Data Types
  • 10.3 Simple Versus Structured Data Types
  • Accessing Individual Components
  • Aggregate Operations on Structs
  • More About Struct Declarations
  • Binding Like Items
  • 10.5 Hierarchical Records
  • 10.6 Unions
  • Pointer Variables
  • Pointers Expressions
  • 10.8 Reference Types
  • Problem-Solving Case Study: Stylistical Analysis of Text
  • Coping with Input Errors
  • Debugging with Pointers
  • Declaring Arrays
  • Out-of-Bounds Array Indexes
  • Initializing Arrays in Declarations
  • (Lack of) Aggregate Array Operations
  • Examples of Declaring and Accessing Arrays
  • Passing Arrays as Arguments
  • Commenting Arrays
  • Using Typedef with Arrays
  • Pointer Expressions and Arrays
  • C-Style Strings
  • Strings as Arrays
  • C String Operations
  • Converting C Strings to C++ Strings
  • Which String Representation to Use
  • Arrays of Records
  • Subarray Processing
  • Indexes with Semantic Content
  • 11.4 Two-Dimensional Arrays
  • 11.5 Passing Two-Dimensional Arrays as Arguments
  • Sum the Rows
  • Sum the Columns Revised
  • Sum the Columns
  • Initialize the Array
  • Print the Array
  • 11.7 Another Way of Defining Two-Dimensional Arrays
  • 11.8 Multidimensional Arrays
  • Problem-Solving Case Study: Calculating Exam Statistics
  • Problem-Solving Case Study: Favorite Rock Group
  • One-Dimensional Arrays
  • Complex Structures
  • Multidimensional Arrays
  • 12.1 Abstract Data Types
  • Implementing the Member Functions
  • Classes, Objects, and Members
  • Built-in Operations on Objects
  • Class Scope
  • User-Written Header Files
  • Specification and Implementation Files
  • Compiling and Linking a Multifile Program
  • 12.4 What Is an Object?
  • Encapsulation
  • Abstraction
  • Designing for Modifiability and Reuse
  • Software Maintenance Case Study: Comparing Two TimeOfDay Objects
  • Specification of the ADT
  • Implementation File
  • Design of an Entry Class
  • Diagramming a Class
  • Diagramming Composition of Classes
  • Problem-Solving Case Study: Create an Array of Name Objects
  • 13.1 What Is a List?
  • Refining Responsibilities
  • Data Representation
  • Example Program
  • Basic Operations
  • Insertion and Deletion
  • Sequential Search
  • Software Maintenance Case Study: Enhancing Class List with a Sort
  • Binary Search
  • Insert and Delete
  • 13.6 More on UML Diagrams
  • Problem-Solving Case Study: Calculating Exam Statistics Revisited
  • Allocating Dynamic Data
  • Deleting Dynamic Data
  • Constants and Dynamic Data
  • 14.2 Sequential Versus Linked Structures
  • 14.3 Creating a Dynamic Linked List: A Walk-Through Example
  • Creating an Empty Linked List
  • Inserting into a Linked List
  • Traversals of a Linked List
  • Deleting from a Linked List
  • Resetting the List
  • Getting the Next Item
  • Testing for the Full Linked List
  • Searching the List
  • Shallow Versus Deep Copying
  • Copy-Constructor
  • Insert(60) (pick up with loop)
  • Insert(100)
  • Problem-Solving Case Study: Creating a Sorted List of Entry Objects
  • 15.1 Object-Oriented Programming
  • Inheritance and the Object-Oriented Design Process
  • Deriving One Class from Another Class
  • Specification of the ExpandedEntry Class
  • Implementation of the ExpandedEntry Class
  • Constructor Execution Order
  • Software Maintenance Case Study: Extending TimeOfDay with Support for a Time Zone
  • The Slicing Problem
  • Virtual Functions
  • Brainstorming
  • Scenario Exploration
  • Responsibility Algorithms
  • A Final Word
  • 15.5 Implementing a Design
  • Problem-Solving Case Study: Creating an Appointment Calendar
  • Defining a Class Template
  • Instantiating a Class Template
  • Another Way of Implementing Incoming Parameters: const References
  • Organization of Program Code
  • A Word of Caution
  • Function Overloading
  • Defining a Function Template Outside a Class
  • Instantiating a Function Template
  • Using *this
  • The throw Statement
  • The try-catch Statement
  • Nonlocal Exception Handlers
  • Rethrowing an Exception
  • Standard Exceptions
  • Software Maintenance Case Study: Adding Exceptions to the Date Class
  • Problem-Solving Case Study: Starship Weight and Balance
  • 17.1 Abstract Data Structures versus Implementations
  • Priority Queues
  • Bidirectional Lists
  • The vector Template
  • The list Template
  • The stack Template
  • The queue Template
  • The priority_queue Template
  • The deque Template
  • Software Maintenance Case Study: Appointment Calendar Using STL List
  • Binary Trees
  • Hash Tables
  • The set Template
  • The map Template
  • Problem-Solving Case Study: Creating a Deck of Cards
  • 18.1 What Is Recursion?
  • 18.2 Recursive Algorithms with Simple Variables
  • 18.3 Towers of Hanoi
  • 18.4 Recursive Algorithms with Structured Variables
  • Software Maintenance Case Study: Substituting Binary Search for Linear Search
  • Printing a Dynamic Linked List in Reverse Order
  • Copying a Dynamic Linked List
  • 18.6 Recursion or Iteration?
  • Problem-Solving Case Study: Quicksort
  • Appendix A: Reserved Words
  • Appendix B: Operator Precedence
  • Appendix C: A Selection of Standard Library Routines
  • Appendix D: Using This Book with a Prestandard Version of C++
  • Appendix E: Character Sets
  • Appendix F: Program Style, Formatting, and Documentation
  • Appendix G: More on Floating-Point Numbers
  • Appendix H: Using C Strings
  • Appendix I: C++ char Constants

Product information

  • Title: Programming and Problem Solving with C++: Comprehensive, 6th Edition
  • Author(s): Nell Dale, Chip Weems
  • Release date: March 2013
  • Publisher(s): Jones & Bartlett Learning
  • ISBN: 9781449694272

You might also like

Programming and problem solving with c++, 5th edition.

by Nell Dale, Chip Weems

Completely revised and updated with the latest version of C++, the new Fifth Edition of Programming …

Programming and Problem Solving with C++: Brief Edition, 5th Edition

Based off the highly successful Programming and Problem Solving with C++ which Dale is famous for, …

Programming and Problem Solving with C++: Brief, 6th Edition

Based off the best-selling Programming and Problem Solving with C++, which Dale is famous for, the …

Imperfect C++ Practical Solutions for Real-Life Programming

by Matthew Wilson

Imperfect C++ C++, although a marvelous language, isn't perfect. Matthew Wilson has been working with it …

Don’t leave empty-handed

Get Mark Richards’s Software Architecture Patterns ebook to better understand how to design components—and how they should interact.

It’s yours, free.

Cover of Software Architecture Patterns

Check it out now on O’Reilly

Dive in for free with a 10-day trial of the O’Reilly learning platform—then explore all the other resources our members count on to build skills and solve problems every day.

books on programming problem solving

Problem Solving

Foundations course, introduction.

Before we start digging into some pretty nifty JavaScript, we need to begin talking about problem solving : the most important skill a developer needs.

Problem solving is the core thing software developers do. The programming languages and tools they use are secondary to this fundamental skill.

From his book, “Think Like a Programmer” , V. Anton Spraul defines problem solving in programming as:

Problem solving is writing an original program that performs a particular set of tasks and meets all stated constraints.

The set of tasks can range from solving small coding exercises all the way up to building a social network site like Facebook or a search engine like Google. Each problem has its own set of constraints, for example, high performance and scalability may not matter too much in a coding exercise but it will be vital in apps like Google that need to service billions of search queries each day.

New programmers often find problem solving the hardest skill to build. It’s not uncommon for budding programmers to breeze through learning syntax and programming concepts, yet when trying to code something on their own, they find themselves staring blankly at their text editor not knowing where to start.

The best way to improve your problem solving ability is by building experience by making lots and lots of programs. The more practice you have the better you’ll be prepared to solve real world problems.

In this lesson we will walk through a few techniques that can be used to help with the problem solving process.

Lesson overview

This section contains a general overview of topics that you will learn in this lesson.

  • Explain the three steps in the problem solving process.
  • Explain what pseudocode is and be able to use it to solve problems.
  • Be able to break a problem down into subproblems.

Understand the problem

The first step to solving a problem is understanding exactly what the problem is. If you don’t understand the problem, you won’t know when you’ve successfully solved it and may waste a lot of time on a wrong solution .

To gain clarity and understanding of the problem, write it down on paper, reword it in plain English until it makes sense to you, and draw diagrams if that helps. When you can explain the problem to someone else in plain English, you understand it.

Now that you know what you’re aiming to solve, don’t jump into coding just yet. It’s time to plan out how you’re going to solve it first. Some of the questions you should answer at this stage of the process:

  • Does your program have a user interface? What will it look like? What functionality will the interface have? Sketch this out on paper.
  • What inputs will your program have? Will the user enter data or will you get input from somewhere else?
  • What’s the desired output?
  • Given your inputs, what are the steps necessary to return the desired output?

The last question is where you will write out an algorithm to solve the problem. You can think of an algorithm as a recipe for solving a particular problem. It defines the steps that need to be taken by the computer to solve a problem in pseudocode.

Pseudocode is writing out the logic for your program in natural language instead of code. It helps you slow down and think through the steps your program will have to go through to solve the problem.

Here’s an example of what the pseudocode for a program that prints all numbers up to an inputted number might look like:

This is a basic program to demonstrate how pseudocode looks. There will be more examples of pseudocode included in the assignments.

Divide and conquer

From your planning, you should have identified some subproblems of the big problem you’re solving. Each of the steps in the algorithm we wrote out in the last section are subproblems. Pick the smallest or simplest one and start there with coding.

It’s important to remember that you might not know all the steps that you might need up front, so your algorithm may be incomplete -— this is fine. Getting started with and solving one of the subproblems you have identified in the planning stage often reveals the next subproblem you can work on. Or, if you already know the next subproblem, it’s often simpler with the first subproblem solved.

Many beginners try to solve the big problem in one go. Don’t do this . If the problem is sufficiently complex, you’ll get yourself tied in knots and make life a lot harder for yourself. Decomposing problems into smaller and easier to solve subproblems is a much better approach. Decomposition is the main way to deal with complexity, making problems easier and more approachable to solve and understand.

In short, break the big problem down and solve each of the smaller problems until you’ve solved the big problem.

Solving Fizz Buzz

To demonstrate this workflow in action, let’s solve a common programming exercise: Fizz Buzz, explained in this wiki article .

Understanding the problem

Write a program that takes a user’s input and prints the numbers from one to the number the user entered. However, for multiples of three print Fizz instead of the number and for the multiples of five print Buzz . For numbers which are multiples of both three and five print FizzBuzz .

This is the big picture problem we will be solving. But we can always make it clearer by rewording it.

Write a program that allows the user to enter a number, print each number between one and the number the user entered, but for numbers that divide by 3 without a remainder print Fizz instead. For numbers that divide by 5 without a remainder print Buzz and finally for numbers that divide by both 3 and 5 without a remainder print FizzBuzz .

Does your program have an interface? What will it look like? Our FizzBuzz solution will be a browser console program, so we don’t need an interface. The only user interaction will be allowing users to enter a number.

What inputs will your program have? Will the user enter data or will you get input from somewhere else? The user will enter a number from a prompt (popup box).

What’s the desired output? The desired output is a list of numbers from 1 to the number the user entered. But each number that is divisible by 3 will output Fizz , each number that is divisible by 5 will output Buzz and each number that is divisible by both 3 and 5 will output FizzBuzz .

Writing the pseudocode

What are the steps necessary to return the desired output? Here is an algorithm in pseudocode for this problem:

Dividing and conquering

As we can see from the algorithm we developed, the first subproblem we can solve is getting input from the user. So let’s start there and verify it works by printing the entered number.

With JavaScript, we’ll use the “prompt” method.

The above code should create a little popup box that asks the user for a number. The input we get back will be stored in our variable answer .

We wrapped the prompt call in a parseInt function so that a number is returned from the user’s input.

With that done, let’s move on to the next subproblem: “Loop from 1 to the entered number”. There are many ways to do this in JavaScript. One of the common ways - that you actually see in many other languages like Java, C++, and Ruby - is with the for loop :

If you haven’t seen this before and it looks strange, it’s actually straightforward. We declare a variable i and assign it 1: the initial value of the variable i in our loop. The second clause, i <= answer is our condition. We want to loop until i is greater than answer . The third clause, i++ , tells our loop to increment i by 1 every iteration. As a result, if the user inputs 10, this loop would print numbers 1 - 10 to the console.

Most of the time, programmers find themselves looping from 0. Due to the needs of our program, we’re starting from 1

With that working, let’s move on to the next problem: If the current number is divisible by 3, then print Fizz .

We are using the modulus operator ( % ) here to divide the current number by three. If you recall from a previous lesson, the modulus operator returns the remainder of a division. So if a remainder of 0 is returned from the division, it means the current number is divisible by 3.

After this change the program will now output this when you run it and the user inputs 10:

The program is starting to take shape. The final few subproblems should be easy to solve as the basic structure is in place and they are just different variations of the condition we’ve already got in place. Let’s tackle the next one: If the current number is divisible by 5 then print Buzz .

When you run the program now, you should see this output if the user inputs 10:

We have one more subproblem to solve to complete the program: If the current number is divisible by 3 and 5 then print FizzBuzz .

We’ve had to move the conditionals around a little to get it to work. The first condition now checks if i is divisible by 3 and 5 instead of checking if i is just divisible by 3. We’ve had to do this because if we kept it the way it was, it would run the first condition if (i % 3 === 0) , so that if i was divisible by 3, it would print Fizz and then move on to the next number in the iteration, even if i was divisible by 5 as well.

With the condition if (i % 3 === 0 && i % 5 === 0) coming first, we check that i is divisible by both 3 and 5 before moving on to check if it is divisible by 3 or 5 individually in the else if conditions.

The program is now complete! If you run it now you should get this output when the user inputs 20:

  • Read How to Think Like a Programmer - Lessons in Problem Solving by Richard Reis.
  • Watch How to Begin Thinking Like a Programmer by Coding Tech. It’s an hour long but packed full of information and definitely worth your time watching.
  • Read this Pseudocode: What It Is and How to Write It article from Built In.

Knowledge check

This section contains questions for you to check your understanding of this lesson on your own. If you’re having trouble answering a question, click it and review the material it links to.

  • What are the three stages in the problem solving process?
  • Why is it important to clearly understand the problem first?
  • What can you do to help get a clearer understanding of the problem?
  • What are some of the things you should do in the planning stage of the problem solving process?
  • What is an algorithm?
  • What is pseudocode?
  • What are the advantages of breaking a problem down and solving the smaller problems?

Additional resources

This section contains helpful links to other content. It isn’t required, so consider it supplemental.

  • Read the first chapter in Think Like a Programmer: An Introduction to Creative Problem Solving ( not free ). This book’s examples are in C++, but you will understand everything since the main idea of the book is to teach programmers to better solve problems. It’s an amazing book and worth every penny. It will make you a better programmer.
  • Watch this video on repetitive programming techniques .
  • Watch Jonathan Blow on solving hard problems where he gives sage advice on how to approach problem solving in software projects.

Support us!

The odin project is funded by the community. join us in empowering learners around the globe by supporting the odin project.

  • Virtual Experiences
  • In-Person Experiences
  • Hybrid Experiences
  • Social Calendar [New]
  • Experience FAQ
  • Features & Benefits
  • How Pricing Works
  • Client Testimonials
  • Happiness Guarantee
  • Blog Articles
  • Video Library
  • View Experiences

12 Best Problem Solving Books to Read in 2024

You found our list of top problem solving books .

Problem solving books are guides that improve critical thinking capability and the ability to resolve issues in the workplace. These works cover topics like bias and logical fallacies, problem prevention, and prioritizing. The purpose of these books is to help workers remain calm under pressure and come up with solutions more quickly.

These guides are similar to decision making books , negotiation books , and conflict resolution books . To improve competency in this area, one can also play problem solving games .

This list includes:

  • problem solving books for adults
  • creative problem solving books
  • business problem solving books
  • problem solving books for programmers

Here we go!

List of problem solving books

Here is a list of books to improve problem solving skills in the workplace.

1. Fixed: How to Perfect the Fine Art of Problem Solving by Amy E Herman

Fixed book cover

Fixed is one of the most useful new books on problem solving. The book calls for problem solvers to look beyond instinctual and obvious answers and provides a framework for more creative thinking. While most folks think about problem solving in terms of logic, reason, and disciplines like math and science, this book shows the role that art and imagination play in the process. Amy Herman consulted on leadership training with Silicon Valley companies and military organizations and brings this expertise into the text to train readers on how to adopt a more innovative critical thinking approach.

Notable Quote: “Working through problems is critical for productivity, profit, and peace. Our problem-solving skills, however, have been short-circuited by our complicated, technology-reliant world.”

Read Fixed .

2. Cracked it!: How to solve big problems and sell solutions like top strategy consultants by Bernard Garrette, Corey Phelps, and Olivier Sibony

Cracked It book cover

Cracked it! is one of the best creative problem solving books. Drawing inspiration from the tactics of consultants, this guide is a practical playbook for approaching business problems. The authors outline a “4S” method– State – Structure – Solve – Sell– to tackle obstacles and get support from stakeholders. While many problem solving books simply focus on how to think through issues, this guide also demonstrates how to gain approval for ideas and get others onboard with the solution. The book explains how to best use these techniques, and presents case studies that show the theories in action. Cracked it! is a handy reference for any professional that faces tough challenges on the regular.

Notable Quote: “If you want to know how a lion hunts, don’t go to a zoo. Go to the jungle.”

Read Cracked it!

Get our free team building toolbox

  • icebreaker games
  • bingo cards

heart

3. Upstream: The Quest to Solve Problems Before They Happen by Dan Heath

Upstream book cover

Upstream takes a proactive approach to problem solving. The book urges readers to not only be responsive to issues, but also try to prevent obstacles from occurring. The guide opens with an exploration of “problem blindness,” and the psychological factors that cause folks to be oblivious to issues, along with a reminder that many problems are more controllable and avoidable than first assumed. The pages that follow outline a series of questions leaders can ask to fine-tune the system and steer clear of major headaches, for instance, “How Will You Unite the Right People?” and “How Will You Avoid Doing Harm?” Upstream is full of real world examples of how minor tweaks achieved major results and allowed organizations to sidestep serious holdups.

Notable Quote: “The postmortem for a problem can be the preamble to a solution.”

Read Upstream .

4. Problem Solving 101: A Simple Book for Smart People by Ken Watanabe

book cover

Problem Solving 101 is one of the most fun problem solving books for adults. Written by Ken Watanabe, the guide draws on Japanese philosophy as well as the author’s experience as a consultant at McKinsey to help readers understand and approach problems in productive ways. The pages provide blueprints for problem-solving methods such as logic trees and matrixes, and include scenarios and illustrations that help readers visualize the process more clearly. Problem Solving 101 breaks down the problem solving procedure into the most basic parts and lays out step-by-step instructions for choosing the best action in any situation.

Notable Quote: “When you do take action, every result is an opportunity to reflect and learn valuable lessons. Even if what you take away from your assessment seems to be of small consequence, all of these small improvements taken together make a huge difference in the long term.”

Read Problem Solving 101 .

5. What’s Your Problem?: To Solve Your Toughest Problems, Change the Problems You Solve by Thomas Wedell-Wedellsborg

What's your problem book cover

What’s Your Problem? insists that the most important step in the problem solving process is to start by honing in on the correct problem. The root of much frustration and wasted efforts is that professionals often pick the wrong points to focus on. This book teaches readers how to reframe and approach issues from a different perspective. The guide outlines a repeatable three step process “Frame, Reframe, and Move Forward” to ensure that workers prioritize effectively and stay on track to achieve desired results. What’s Your Problem? teaches professionals of all levels how to be less rigid and more results-focused and adopt a more agile approach to fixing issues.

Notable Quote: “The problems we’re trained on in school are often quite different from the ones we encounter in real life.”

Read What’s Your Problem?

6. Sprint: How to Solve Big Problems and Test New Ideas in Just Five Days by Jake Knapp, John Zeratsky, et al

sprint book cover

Sprint is one of the best problem solving books for programmers. The authors are the creators of the five-day-process at Google. This guide describes best practices for conducting sprints and solving problems in limited timeframes. The book provides a day-by-day breakdown of tasks for each day of the workweek, with the final steps being designing a prototype and a plan for implementation. Though this idea originated in the tech world and is most widely used in the software industry, this problem-solving and product design approach can be useful for any position that needs to find fixes in a time crunch.

Notable Quote: “We’ve found that magic happens when we use big whiteboards to solve problems. As humans, our short-term memory is not all that good, but our spatial memory is awesome. A sprint room, plastered with notes, diagrams, printouts, and more, takes advantage of that spatial memory. The room itself becomes a sort of shared brain for the team.”

Read Sprint , and check out this guide to virtual hackathons and this list of product design books .

7. Think Like a Rocket Scientist: Simple Strategies You Can Use to Make Giant Leaps in Work and Life by Ozan Varol

Think like a rocket scientist book cover

Think Like a Rocket Scientist lays out formulas and instructions for thinking more strategically. The guide reveals common problem solving approaches used by rocket scientists when exploring the unknown and testing new technology. The book is split into three sections– launch, accelerate, and achieve– with deep dives into concepts such as moonshot thinking and overcoming failure. The anecdotes revolve around space exploration and rocket science yet the methods can be applied to more commonplace and less complex problems as well. Think Like a Rocket Scientist proves that one does not need to be a genius to be a genius problem solver and lets readers learn tricks from one of the most complex professions on the planet.

Notable Quote: “Critical thinking and creativity don’t come naturally to us. We’re hesitant to think big, reluctant to dance with uncertainty, and afraid of failure. These were necessary during the Paleolithic Period, keeping us safe from poisonous foods and predators. But here in the information age, they’re bugs.”

Read Think Like a Rocket Scientist .

8. Bulletproof Problem Solving: The One Skill That Changes Everything by Charles Conn and Robert McLean

Bulletproof problem solving book cover

Bulletproof Problem Solving is one of the best business problem solving books. This workbook-style-guide breaks down a “bulletproof” method of problem solving favored by consultants at McKinsey. The authors distill the process into seven simple steps–define the problem, disaggregate, prioritize, workplan, analyze, synthesize, and communicate– and give numerous examples of how to follow this cycle with different dilemmas. The chapters explore each stage in depth and outline the importance and finer points of each phase. The book also provides practical tools for readers to build skills, including an appendix with exercise worksheets.

Notable Quote: “Problem solving doesn’t stop at the point of reaching conclusions from individual analyses. Findings have to be assembled into a logical structure to test validity and then synthesized in a way that convinces others that you have a good solution. Great team processes are also important at this stage.”

Read Bulletproof Problem Solving .

9. Think Like a Programmer: An Introduction to Creative Problem Solving by by V. Anton Spraul

Think like a programmer book cover

Think Like a Programmer is one of the top problem solving books for programmers. The guide lays out methods for finding and fixing bugs and creating clean, workable code. The text emphasizes that programming is not merely a matter of being competent in the language, but also knowing how to troubleshoot and respond to unexpected occurrences. The chapters present examples of problems and puzzles and work through the answers to help strengthen professional competencies. The book provides an introductory crash course and practical toolkit for beginning coders, with a focus on C++. Yet since the text outlines general theory and approach, the book is also helpful for dealing with other programming languages, or for solving problems in non-tech industries as well. The point of the text is to provide a proper mindset and attitude for reacting to these developments, and the book can be a benefit for folks in any field.

Notable Quote: “Don’t Get Frustrated The final technique isn’t so much a technique, but a maxim: Don’t get frustrated. When you are frustrated, you won’t think as clearly, you won’t work as efficiently, and everything will take longer and seem harder. Even worse, frustration tends to feed on itself, so that what begins as mild irritation ends as outright anger.”

Read Think Like a Programmer .

10. The Founder’s Dilemmas: Anticipating and Avoiding the Pitfalls That Can Sink a Startup by by Noam Wasserman

The Founders Dilemmas Book Cover

The Founder’s Dilemmas lays out the most common problems entrepreneurs face and gives advice on how to avoid or solve these issues. The book tackles topics such as managing relationships, hiring, and rewarding or correcting employees. The chapters outline the mistakes inexperienced leaders often make and offer strategies for handling these tough situations with more smarts and skill. By reading this book, founders can learn from predecessors and avoid making obvious and avoidable errors in judgment. The Founder’s Dilemmas is a problem-solving resource for startup leaders and team members who lack more traditional guidance.

Notable Quote: “Ideas are cheap; execution is dear.”

Read The Founder’s Dilemmas , and check out more entrepreneurial books .

11. The Scout Mindset: Why Some People See Things Clearly and Others Don’t by Julia Galef

The scout mindset book cover

The Scout Mindset challenges readers to move beyond gut reactions and preconceptions and rethink problems. The book offers instructions for overcoming bias and central beliefs to gather more objective data. Julia Galef encourages readers to act more like scouts than soldiers and gather information without judging to make more informed decisions. The text outlines the common reasons folks jump to conclusions and offers advice on how to avoid incorrect assumptions and conduct level-headed analyses. The Scout Mindset is a call to action for objectivity and an instruction manual for breaking away from unhelpful mental patterns that can lead to poor choices.

Notable Quote: “Discovering you were wrong is an update, not a failure, and your worldview is a living document meant to be revised.”

Read The Scout Mindset .

12. Super Thinking: The Big Book of Mental Models by Gabriel Weinberg and Lauren McCann

Super Thinking book cover

Super Thinking is a comprehensive resource that explains various mental models for problem solving. The book identifies logical fallacies and shows readers how to avoid these pitfalls. The pages also lay out appropriate strategies, tools, techniques to use in different situations, such as matrices, pointed questions, and philosophies. The point of the guide is to teach readers how to evaluate information and make quick yet accurate judgements. The guide helps readers decide the best approach to use for each circumstance. Though packed with information, the pages also contain images and humor that prevent the material from getting too dry. Super Thinking is the ultimate cheat sheet for thinking rationally and acting with intention.

Notable Quote: “Unfortunately, people often make the mistake of doing way too much work before testing assumptions in the real world.”

Read Super Thinking .

Final Thoughts

Problem solving is one of the most essential skills for modern industry. With the breakneck pace at which the current business world changes, there is no shortage of new developments that professionals must contend with on a daily basis. Operating the same way for years at a time is impossible, and it is almost guaranteed that workers at every level will have issues to unravel at some point in their careers.

Books about problem solving help professionals predict, prevent, and overcome issues and find more viable and sustainable solutions. These guides not only provide skills, but also methods for survival in a highly competitive business landscape. These texts show workers that they are more capable than may first appear and that sometimes, seemingly insurmountable obstacles are beatable with a combination of creativity, teamwork, and proper process.

For more ways to beat the odds, check out this list of books on innovation and this list of books on business strategy .

We also have a list of the best communication books .

Book wildly fun team building events with expert hosts

team building event banner

FAQ: Problem solving books

Here are answers to common questions about problem solving books.

What are problem solving books?

Problem solving books are guides that teach critical thinking skills and strategies for resolving issues. The purpose of these works is to help professionals be more creative and strategic in problem solving approaches.

What are some good problem solving books for work?

Some good problem solving books for work include Sprint by Jake Knapp, John Zeratsky, et al, Upstream by Dan Heath, and Think Like a Rocket Scientist by Ozan Varol.

Author avatar

Author: Angela Robinson

Marketing Coordinator at teambuilding.com. Team building content expert. Angela has a Master of Fine Arts in Creative Writing and worked as a community manager with Yelp to plan events for businesses.

We lead wildly fun experiences for teams with 1,000,000+ players to date.

event cards

4.96 / 5.0 rating on

50,225 Google Reviews

books on programming problem solving

Programming for Problem Solving

This book provides an introduction to computer programming using Python as a way to solve problems. It focuses on programming concepts and fundamentals within the context of solving real world problems.

book-cover

Table of Contents

  • Attributions
  • Acknowledgments
  • Learning Objectives
  • Introduction
  • Computational Thinking
  • An Example Algorithm
  • Verifying your Algorithm
  • The Process of Computational Problem Solving
  • Values and Variables
  • What is a Program?
  • Computational Problem Design Using the Basic Programming Constructs
  • The Role of Programming in the Field of Informatics
  • Unit Summary
  • Practice Problems
  • Computer Hardware Architecture
  • Digital Computing: It’s All about 0’s and 1’s
  • Operating Systems—Bridging Software and Hardware
  • Software Development Tools
  • Learning Programming with Python
  • Writing a Python Program
  • The Python Interactive Shell
  • The Basics of Python Programming
  • Example: Using Variables and Literal Constants
  • Operators and Expressions
  • Practice with Operators & Expressions
  • Evaluation Order
  • Input/Process/Output Pattern
  • Type Converter Functions
  • Python’s Standard Library
  • More on Strings
  • Object Oriented Programming
  • Simple Graphics Programming
  • Graphics Windows: Coordinate Systems
  • GraphWin Objects
  • Text Methods
  • Entry Objects
  • Displaying Images
  • Generating Colors
  • Interactive Graphics
  • Boolean Expressions
  • Logical Operators
  • Conditional Execution
  • Exception Handling
  • Practice with Handling Exceptions in our Programs
  • The for…in Statement
  • Nested Loops
  • Basic File Processing
  • Installing Python 3 and IDLE
  • Using Python and its IDE 
  • Appendix B: Python Cheat Sheet

This courseware includes resources copyrighted and openly licensed by multiple individuals and organizations. Click the words "Licenses and Attributions" at the bottom of each page for copyright and licensing information specific to the material on that page. If you believe that this courseware violates your copyright, please contact us .

Lumen Learning

Lumen Learning provides a simple, supported path for faculty members to adopt and teach effectively with open educational resources (OER). Read more about what we do.

Footer Logo Lumen Candela

Privacy Policy

books on programming problem solving

  • Computers & Technology
  • Programming

Amazon prime logo

Enjoy fast, free delivery, exclusive deals, and award-winning movies & TV shows with Prime Try Prime and start saving today with fast, free delivery

Amazon Prime includes:

Fast, FREE Delivery is available to Prime members. To join, select "Try Amazon Prime and start saving today with Fast, FREE Delivery" below the Add to Cart button.

  • Cardmembers earn 5% Back at Amazon.com with a Prime Credit Card.
  • Unlimited Free Two-Day Delivery
  • Streaming of thousands of movies and TV shows with limited ads on Prime Video.
  • A Kindle book to borrow for free each month - with no due dates
  • Listen to over 2 million songs and hundreds of playlists
  • Unlimited photo storage with anywhere access

Important:  Your credit card will NOT be charged when you start your free trial or if you cancel during the trial period. If you're happy with Amazon Prime, do nothing. At the end of the free trial, your membership will automatically upgrade to a monthly membership.

Buy new: $18.36 $18.36 FREE delivery: Tuesday, April 23 on orders over $35.00 shipped by Amazon. Ships from: Amazon.com Sold by: Amazon.com

Return this item for free.

Free returns are available for the shipping address you chose. You can return the item for any reason in new and unused condition: no shipping charges

  • Go to your orders and start the return
  • Select the return method

Buy used: $15.44

Fulfillment by Amazon (FBA) is a service we offer sellers that lets them store their products in Amazon's fulfillment centers, and we directly pack, ship, and provide customer service for these products. Something we hope you'll especially enjoy: FBA items qualify for FREE Shipping and Amazon Prime.

If you're a seller, Fulfillment by Amazon can help you grow your business. Learn more about the program.

Kindle app logo image

Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required .

Read instantly on your browser with Kindle for Web.

Using your mobile phone camera - scan the code below and download the Kindle app.

QR code to download the Kindle App

Image Unavailable

Exercises for Programmers: 57 Challenges to Develop Your Coding Skills

  • To view this video download Flash Player

Follow the author

Brian Hogan

Exercises for Programmers: 57 Challenges to Develop Your Coding Skills 1st Edition

Purchase options and add-ons.

Each problem includes constraints and challenges to push you further, but it's up to you to come up with the solutions. And next year, when you want to learn a new programming language or style of programming (perhaps OOP vs. functional), you can work through this book again, using new approaches to solve familiar problems. What You Need: You need access to a computer, a programming language reference, and the programming language you want to use.

  • ISBN-10 1680501224
  • ISBN-13 978-1680501223
  • Edition 1st
  • Publisher Pragmatic Bookshelf
  • Publication date October 13, 2015
  • Language English
  • Dimensions 6 x 0.25 x 9 inches
  • Print length 120 pages
  • See all details

Amazon First Reads | Editors' picks at exclusive prices

Frequently bought together

Exercises for Programmers: 57 Challenges to Develop Your Coding Skills

Similar items that may ship from close to you

Cracking the Coding Interview: 189 Programming Questions and Solutions (Cracking the Interview & Career)

From the brand

The Pragmatic Programmers

The Pragmatic Programmers publishes hands-on, practical books on classic and cutting-edge software development and engineering management topics. We help professionals solve real-world problems, hone their skills, and advance their careers.

A Common-Sense Guide to Data Structures and Algorithms, Second Edition: Level Up Your Core Progra...

Explore our collections

Visit the Store

From the Publisher

books on programming problem solving

Q&A with Brian Hogan, author of Exercises for Programmers

Why did you decide to write this book.

I learned to program when I was in fourth grade. I was struggling with some math problems at the time, and my dad showed me how to write a program to quiz me at math problems. My dad wasn't formally trained, he just knew enough to show me what to do. And so programming, to me, was about solving problems.

But when I got to college, my professors were more interested in doing algorithms and puzzles. I was never great at mentally connecting the dots. But I had one teacher who was very focused on real-world programming; writing programs to solve business problems. And everything clicked.

When I got into the field, I found myself in many situations where I was teaching people to code, and I needed exercises for them to do, so I started looking at the things I had to write at work and simplifying them down. I've written BMI calculators, widgets for web sites that pulled down the weather, URL shorteners, and many other things that can teach programming concepts in context.

So when I became a teacher full-time a few years ago, I began introducing these exercises into my classes for additional practice in order to prepare students for assessments. I saw student performance improve significantly. And I figured that if it worked for me, it would work for everyone.

So this book is for beginners?

Over the years I've had to learn some new programming languages, and I've returned to these programs to get me through that. When I was learning Go a few years ago, I tried these programs. And I just did the same thing this last year with Elixir. I've seen how the "todo list" program has become the way for developers to get their minds around an MVC framework, so I think there's a ton of value in solving known problems with a new language. I also think it's easier to learn a language when you have some goals and direction. When you've never used Swift before, even something as simple as making a mad-lib program can be a great experience.

What's your favorite exercise in this book?

One of the exercises in the book uses an API to show you how many people are in space. The API shows you their names and which spacecraft they are on. First, I think it's awesome we live in a time where people are in space. But also, I think the exercise is interesting and engaging, while still having you work through the concepts of pulling down remote data and formatting it.

books on programming problem solving

What do you hope readers take away from the book?

I think we get better with practice. If you are playing piano and you only go to your lessons, and you never practice in between, you won't be as good as you could be. And I think that is the same with writing code. I think if you go through a degree program and only do the work that's assigned, you won't get as much experience. And I believe that the more languages you explore, the better you'll get at solving problems. So I hope that by reading this book, people will be inspired to practice with the language they know, or even to try a new language.

Editorial Reviews

About the author, product details.

  • Publisher ‏ : ‎ Pragmatic Bookshelf; 1st edition (October 13, 2015)
  • Language ‏ : ‎ English
  • Paperback ‏ : ‎ 120 pages
  • ISBN-10 ‏ : ‎ 1680501224
  • ISBN-13 ‏ : ‎ 978-1680501223
  • Item Weight ‏ : ‎ 10.1 ounces
  • Dimensions ‏ : ‎ 6 x 0.25 x 9 inches
  • #989 in Microsoft Programming (Books)
  • #1,021 in Software Development (Books)
  • #2,361 in Programming Languages (Books)

About the author

Brian hogan.

Brian Hogan is a web developer, editor, and author of over 9 technical books, including Exercises For Programmers and tmux 2: Productive Mouse-Driven Development. He currently works at DigitalOcean, where he helps people learn how to deploy applications to the cloud. When he's not working, he's hacking on code, composing music, or spending time with family and friends.

Customer reviews

Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.

To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.

  • Sort reviews by Top reviews Most recent Top reviews

Top reviews from the United States

There was a problem filtering reviews right now. please try again later..

books on programming problem solving

Top reviews from other countries

books on programming problem solving

  • Amazon Newsletter
  • About Amazon
  • Accessibility
  • Sustainability
  • Press Center
  • Investor Relations
  • Amazon Devices
  • Amazon Science
  • Sell on Amazon
  • Sell apps on Amazon
  • Supply to Amazon
  • Protect & Build Your Brand
  • Become an Affiliate
  • Become a Delivery Driver
  • Start a Package Delivery Business
  • Advertise Your Products
  • Self-Publish with Us
  • Become an Amazon Hub Partner
  • › See More Ways to Make Money
  • Amazon Visa
  • Amazon Store Card
  • Amazon Secured Card
  • Amazon Business Card
  • Shop with Points
  • Credit Card Marketplace
  • Reload Your Balance
  • Amazon Currency Converter
  • Your Account
  • Your Orders
  • Shipping Rates & Policies
  • Amazon Prime
  • Returns & Replacements
  • Manage Your Content and Devices
  • Recalls and Product Safety Alerts
  • Conditions of Use
  • Privacy Notice
  • Consumer Health Data Privacy Disclosure
  • Your Ads Privacy Choices

Books on Code

Top 5 Books on Dynamic Programming for Beginners (2023)

IMG_20200716_221604+%281%29.jpg

As a programmer, you may feel fear and frustration whenever you hear the phrase “dynamic programming.”

You may actively be avoiding dynamic programming as we speak, finally mustering up the courage to look it up or purchase a book.

It’s a scary topic, but it will put you ahead in your coding interviews and improve you as a programmer.

And it’s true: dynamic programming concepts are challenging to grasp and apply. If you learn programming by looking for repeatable and reusable patterns, you’ll struggle with dynamic programming — since, after all — it’s dynamic.

With dynamic programming, patterns are tricky and difficult to master. Despite endless hours of research and trial and error, you may feel like you haven’t made that much progress. This is especially true if you’re trying to learn as much as you can in a short amount of time. 

With the books on dynamic programming by your side, you’ll be amazed by how much easier dynamic programming problems can become. Today, we’re going to talk about the top five books that can help you learn dynamic programming.

READ THE SERIES ON ALGORITHMS AND CODING INTERVIEWS

Other Books on Code articles about solving complex programming problems:

7 Effective Steps to Cracking the Code Interview

The 5 Best Books on Algorithms for Mastering the Code Interview

The Absolute Best Algorithm Book for Beginner Programmers

What Is Dynamic Programming?

Finding the coins needed for a specific value is a common problem that can be solved with dynamic programming.

Finding the coins needed for a specific value is a common problem that can be solved with dynamic programming.

Before we jump into our list, you still may be fuzzy about what ‘dynamic programming’ is. The term itself is a bit loaded, with dynamic being a broad word that can apply to many things. So really, what is dynamic programming?

First of all, the concept of recursion is a prerequisite to understanding dynamic programming. If you do not already have a foundation in data structures & algorithms, I highly recommend studying Grokking Algorithms first, which is the same book that introduced me to these concepts.

Simply put, dynamic programming is an optimization technique used to solve problems. This technique chunks the work into tiny pieces so that the same work is being performed over and over again. You may opt to use dynamic programming techniques in a coding interview or throughout your programming career.

Dynamic programming caches values so that you don’t have to re-compute operations. This allows you to compute every value just once.

Great examples of problems you can solve with dynamic programming:

Calculating the Fibonacci sequence.

Calculating the amount of change you need to make up a dollar amount. For example, 32 cents USD is one quarter, one nickel, and two pennies.

Calculating the number of ways you can add or subtract an array of values to reach a target number.

Calculating the optimum combination of items you can include in a knapsack by the knapsack’s weight capacity.

Dynamic programming isn’t best for all problems. In many instances, dynamic programming just can’t help us in the improvement of the runtime of a problem. If your program isn’t performing repeated work, no amount of caching will make any difference.

If you’re very new to the concept of dynamic programming or have never even heard of it before, don't worry. All of these books on dynamic programming explain the idea in the simplest terms.

Overview of the Criteria For the Best Books on Dynamic Programming

Another problem you can solve using dynamic programming: Calculate the optimum combination of items you can include in a knapsack by the knapsack’s weight capacity.

Another problem you can solve using dynamic programming: Calculate the optimum combination of items you can include in a knapsack by the knapsack’s weight capacity.

Not all dynamic programming books are made equal. The best dynamic programming books available on the market do at least one of the following:

Use clear and precise language

Thoroughly explain the most important concepts

Contain practice problems and solutions

Structure themselves in such a way that self-taught programmers do not get left behind

Catch and hold the attention of readers

You’ll find many books out there that either focuses exclusively on dynamic programming or touches on the topic of dynamic programming in passing.

At Books on Code, we focus on the joy of reading. In my article How to Read Programming Books , I make a case that studying technical books should not be a miserable experience. Text books should always be doing as much work for you to digest and present the information in a way that you can best absorb it.

But dynamic programming is a heavy topic and not very sexy or marketable, so unfortunately, most books are dense and difficult to read. In the following list, I did my best to include books that are well-structured and informative.

Top 5 Books on Dynamic Programming

The Fibonacci sequence, which is a numerical pattern found in nature, such as in the number of petals on a flower, can be calculated using dynamic programming.

The Fibonacci sequence, which is a numerical pattern found in nature, such as in the number of petals on a flower, can be calculated using dynamic programming.

We’ve made it to the list!

See the following top 5 books on dynamic programming.

Book 1: Dynamic Programming and Optimal Control, Vol. I, 4th Edition

books on programming problem solving

Dynamic Programming and Optimal Control by Dimitri Bertsekas prides itself on containing special features that allow it to stand out amongst the sea of introductory textbooks on dynamic programming. It touches and presents the following topics very clearly:

Deterministic control problems

Stochastic control problems

Pontryagin’s Minimum Principle

Also, it dedicates a full chapter to sub-optimal control and related techniques, such as:

Open-loop feedback controls

Limited look-ahead policies

Rollout algorithms

Model predictive control

As you can see, the book’s coverage is super complete. This makes it easy for me to recommend this book to you, regardless of whether you are a student in a graduate course on dynamic programming or self-learner.

Those who work as mathematicians, control theorists, and all those working with systems and control theory may find this book quite useful. Also, you’ll be glad to know that the material is clear and concise.

Book 2: Decision Theory: An Introduction to Dynamic Programming and Sequential Decisions

books on programming problem solving

John Bather's Decision Theory: An Introduction to Dynamic Programming and Sequential Decisions does not exaggerate its title. It is an introductory book that focuses significantly on the basics of dynamic programming.

You may absorb more information when doing rather than merely reading. The teaching style of this book reflects this. The book provides many practice problems with explanations of all the techniques required to solve the problems.

As a bonus, the author's fluent style does an excellent job of igniting an avid interest in the subject. Listed below are some of the highlights of the textbook.

Tailored to the needs of learners of decision theory and optimization theory

Written in a conversational style with many applications and examples

Provides coverage of deterministic models: scheduling, convexity, maximizing utilities, directed networks, critical path analysis, and shortest paths

Provides coverage of stochastic models: optimal stopping problems, stochastic dynamic problems, and other special topics

Provides coverage of advanced topics: minimizing expected costs, policy improvements, problems with unknown statistical parameters, and Markov decision processes

Contains practical exercises along with hints and explanations

Although the book is aimed primarily at students of statistics and mathematics, the content also appeals significantly to engineering students, science students, and those working in the fields of optimization and operations research.

Book 3: Dynamic Programming for Coding Interviews: A Bottom-Up Approach to Problem Solving  

books on programming problem solving

Coding interviews test your ability to not only program but also to think critically. Kamal Rawat’s Dynamic Programming for Coding Interviews: A Bottom-Up Approach to Problem Solving may be helpful for you if you’re hoping to ace your upcoming coding interview. 

In fact, the first few pages of the book include a handy reference entitled “How to Read This Book.” It basically comes in the form of if-else statements that guide you to the chapters that you should focus on, depending on your situation.

Even though you may not have a coding interview coming up, consider spending some time reading this book.

Sadly, most algorithm books only dedicate one chapter to dynamic programming. That chapter also discusses its related concepts, such as optimal substructure and overlapping-sub problems. But, those books tend to lack complex examples showcasing dynamic programming in action.

Dynamic Programming for Coding Interviews takes a different approach. This book dedicates one chapter per concept under dynamic programming. While discussing the ideas, the author provides straightforward examples. This allows you to maintain focus on the chapter's concept.

Once the concept is clear to you, the author then shifts focus to complex problem-solving.

Book 4: Algorithms Illuminated (Part 3): Greedy Algorithms and Dynamic Programming

books on programming problem solving

Tim Roughgarden describes his Algorithms Illuminated (Part 3): Greedy Algorithms and Dynamic Programming book as an “accessible, no-nonsense, and programming language-agnostic introduction to algorithms.” 

The book includes hints and solutions for all quizzes and problems in the book. Also, the book provides links to supplemental Youtube videos by the author that accompany each chapter.

This book covers the following topics under greedy algorithms:

Minimum spanning trees

Huffman codes

This book covers the following dynamic programming topics:

Sequence alignment

Shortest paths

Optimal search trees

Book 5: Algorithm Design Techniques: Recursion, Backtracking, Greedy, Divide and Conquer, and Dynamic Programming

books on programming problem solving

Narasimha Karumanchi’s Algorithm Design Techniques is a detailed and easy-to-read guide that teaches you how to apply common algorithms to practical problems that coders face daily.

The following are a few things that make this book stand out:

Enumeration of the many possible solutions for a given problem

Performance trade-offs between algorithms

Example interview questions covering algorithms and data structures

Clear discussion of concepts

Python-based code samples

Final Thoughts

Don’t give up on dynamic programming! Yes, these algorithms may seem and feel frustrating at first. But with a book by your side, learning may become a little easier.

After some time spent reading any of the books listed above, along with some practice, writing dynamic programs will come to you more naturally. I hope you've found this list helpful in making your learning journey more enjoyable.

If you enjoyed this article, be sure to check out my free email course on reading faster and better .

If are interested in also learning all of your computer science fundamentals in one place, I cannot recommend Coursera’s Fundamentals of Computing by Rice University highly enough. The courses cover “much of the material that first-year Computer Science students take at Rice University.” And being honest — I got far more from this than I did my local university curriculum.

Looking for more recommendations on algorithms books? Well, I have just the article for you. Check out these top books on algorithms , and I will see you over there. 👋😊

Miranda is the founder of Books on Code , with a mission to bring book-lover culture to programmers. Learn more by checking out Miranda on LinkedIn .

IMAGES

  1. Programming for Problem Solving

    books on programming problem solving

  2. Python Programming: Using Problem Solving Approach by Reema Thareja-Buy

    books on programming problem solving

  3. Routemybook

    books on programming problem solving

  4. Problem Solving and Programming Concepts, 8th Edition

    books on programming problem solving

  5. Java: An Introduction to Problem Solving and Programming (7th Edition

    books on programming problem solving

  6. Programming for Problem Solving

    books on programming problem solving

VIDEO

  1. 5 книг для программиста

  2. Изучаем программирование на Python (Пол Бэрри)

  3. TOP 5 BEST BOOKS FOR CODING PART-4 ✅

  4. Top Programming Books You Must Read! 📚💻 #programming #books #learntocode2024 #tech #literature

  5. Competitive Programming Training: Beginner to Specialist at Codeforces

  6. 52 problem books solution Bangla C Program introduction video@LearnCodingOfficial @HabluProgrammer

COMMENTS

  1. Think Like a Programmer: An Introduction to Creative Problem Solving

    —Lucas Westermann, Full Circle Magazine "The book is well-written, with tons of excellent advice and solid, well-thought-out examples. If you're willing to devote some time to studying the material, you'll soon find yourself equipped with an impressive array of problem-solving strategies and, maybe, a new outlook on programming."

  2. Top 11 Coding Books for Beginners: Worth a Read

    1. Think Like a Programmer: An Introduction to Creative Problem Solving Author: V Anton Spraul Latest Edition: August 2012 Buy on Amazon. Shown to help you develop your skills in every programming language, this book helps you develop the type of problem-solving skills needed to be a successful programmer.

  3. The 10 Best Programming Books for Beginners & Pros [2024]

    Published: August 2008. Publisher: Prentice Hall. Format (s): Kindle/Paperback. Why we chose this book. Taking the top spot on my list is Clean Code by Robert C. Martin, who you may also know as Uncle Bob. For me, this isn't just about programming but a definitive guide for any software development professional.

  4. 70 Best Programming Books for Every Coder in 2022

    Programming books are great resources to have on hand as you learn to code. Here are 70 of the best coding books, arranged by programming language, to help you learn to code in 2022 and beyond. ... The coding book covers topics like algorithms and data structures, graphs, problem-solving techniques, and complexity theory. Via @sno_c0ne 15 ...

  5. 10 Programming Books That Every Programmer Must Read (2023)

    Let's get started with the list: 1. Clean Code: By Robert C. Martin. This is one of the best classic books for beginners and will teach you all tricks and patterns of writing good and clean code. Every code which runs is not a clean code. Most beginner programmer done this mistake, they just try to solve the problem and hence forgets these ...

  6. 15 Best Books for Programmers You Should Read

    12. Cracking the Coding Interview - Gayle Laakmann McDowell. 13. Code - Charles Petzold. 14. The Art of Computer Programming - Donald Knuth. 15. The Effective Engineer - Edmund Lau. As software developers we constantly need to learn new concepts, programming languages and technologies to stay up to date.

  7. 7 Best Books for Competitive Programming

    Programs are written in popular programming languages like C, C++, and Java. 5. The Algorithm Design Manual By Steven S Skiena: It is one of the best-selling classic books which reveals the mystery behind designing algorithms and analyzing their optimized efficiency.

  8. How to think like a programmer

    Simplest means you know the answer (or are closer to that answer). After that, simplest means this sub-problem being solved doesn't depend on others being solved. Once you solved every sub-problem, connect the dots. Connecting all your "sub-solutions" will give you the solution to the original problem. Congratulations!

  9. Learn to Code by Solving Problems: A Python Programming Primer

    Computers are capable of solving almost any problem when given the right instructions. That's where programming comes in. This beginner's book will have you writing Python programs right away. You'll solve interesting problems drawn from real coding competitions and build your programming skills as you go.

  10. Programming and Problem Solving with C++: Comprehensive, 6th Edition [Book]

    The best-selling Programming and Problem Solving with C++, now in it's Sixth Edition, remains the clearest introduction to C++, object-oriented programming, and software development available. Renowned author team Nell Dale … - Selection from Programming and Problem Solving with C++: Comprehensive, 6th Edition [Book]

  11. Problem Solving & Programming Concepts

    A core or supplementary text for one-semester, freshman/sophomore-level introductory courses taken by programming majors in Problem Solving for Programmers, Problem Solving for Applications, any Computer Language Course, or Introduction to Programming. Revised to reflect the most current issues in the programming industry, this widely adopted text emphasizes that problem solving is the same in ...

  12. Problem Solving and Programming Concepts, 9th edition

    Revised to reflect the most current issues in the programming industry, this widely adopted text emphasizes that problem solving is the same in all computer languages, regardless of syntax. Sprankle and Hubbard use a generic, non-language-specific approach to present the tools and concepts required when using any programming language to develop ...

  13. Problem Solving

    From his book, "Think Like a Programmer", V. Anton Spraul defines problem solving in programming as: Problem solving is writing an original program that performs a particular set of tasks and meets all stated constraints. The set of tasks can range from solving small coding exercises all the way up to building a social network site like ...

  14. 12 Best Problem Solving Books to Read in 2024

    8. Bulletproof Problem Solving: The One Skill That Changes Everything by Charles Conn and Robert McLean. Bulletproof Problem Solving is one of the best business problem solving books. This workbook-style-guide breaks down a "bulletproof" method of problem solving favored by consultants at McKinsey.

  15. Programming for Problem Solving

    This book provides an introduction to computer programming using Python as a way to solve problems. It focuses on programming concepts and fundamentals within the context of solving real world problems. What is a Program? UNIT 4: Control Structures: Making Decisions and Looping in Computing. Data and Information Processing in Python.

  16. Exercises for Programmers: 57 Challenges to Develop Your Coding Skills

    Each problem includes constraints and challenges to push you further, but it's up to you to come up with the solutions. And next year, when you want to learn a new programming language or style of programming (perhaps OOP vs. functional), you can work through this book again, using new approaches to solve familiar problems.

  17. Top 5 Books on Dynamic Programming for Beginners (2023)

    Book 2: Decision Theory: An Introduction to Dynamic Programming and Sequential Decisions. John Bather's Decision Theory: An Introduction to Dynamic Programming and Sequential Decisions does not exaggerate its title. It is an introductory book that focuses significantly on the basics of dynamic programming.

  18. Programming for Problem Solving

    Programming for Problem Solving. Atul P. Godse, Dr. Deepali A. Godse. Technical Publications, Jan 1, 2021 - Computers - 460 pages. The book enumerates the concepts related to C programming language. The best way to learn any programming language is through examples. The book uses the same approach - each concept is followed by an appropriate ...

  19. Problem Solving Coding Computer Books

    avg rating 3.99 — 897 ratings — published 2006. Want to Read. Rate this book. 1 of 5 stars 2 of 5 stars 3 of 5 stars 4 of 5 stars 5 of 5 stars. Books shelved as problem-solving-coding-computer: Assembly Language Step-By-Step by Jeff Duntemann, The Art of Scalability: Scalable Web Architecture, Pr...

  20. is there a book about programming that focuses on "problem-solving

    Again, a programming language can be used to implement it. That kind of problem solving is so much more about the math, and much less about what a programming language can do for you. So, it can be very useful to split the idea of solving a problem, which can be immensely difficult, and the program to solve that problem.