Algorithmic Thinking: A Problem-Based Introduction Homepage for the book Algorithmic Thinking: A Problem-Based Introduction

The 2nd Edition of Algorithmic Thinking is Coming!

Hello, readers,

I’m happy to announce that I’ve completed a 2nd edition of Algorithmic Thinking.

I posted this on LinkedIn but wanted to share with my readers here as well.

The TL;DR is that if you’re looking for the latest stuff, there’s a new book website for Algorithmic Thinking 2nd Edition.

I did quite a bit of writing on this old website and I hope that you continue to learn from the blog articles! So if you’re here on purpose, please stick around… but if you want to learn more about the 2nd edition, please visit the new book website for Algorithmic Thinking 2nd Edition.

Three years ago, I published a book called Algorithmic Thinking to help programmers solve challenging problems using algorithms and data structures.

My five rules were

  1. No pseudocode allowed
  2. No math
  3. No proofs (OK OK I may have sneaked one or two in there but maybe no one will notice?)
  4. Examples examples examples
  5. Explain everything that we use before just using it

It’s an honour to have been able to engage with so many readers through this project.

I thought that the first edition contained everything I could teach.

My readers and students have shown and encouraged me that I was wrong. :)

I’m happy to announce that a second edition of the book is available in Early Access now.

I added some new spicy dynamic programming problems. (My former Algorithms students may be happy that now I can’t use these as homeworks anymore :P ) I also added lots of material on trying to solve dynamic programming problems both backwards and forwards, in case one of them isn’t working out (I hope I’ve done justice to this one… I spent like my whole summer last year until I was happy with my teaching approach :D). I really worked on helping readers identify the subproblems, and what to do when the subproblems aren’t good enough. (I know how challenging this topic is to learn so I really went for it!)

I added a doozie of a hash tables problem.

I added a whole chapter on using randomization (yep, just random numbers) to solve some really tough programming challenges in easier ways.

I fixed small errors that got past me in the first edition. (I always strive for no errors but wow – I have a new respect whenever I find an error in someone else’s book now.)

I improved explanations based on my discussions with readers.

I worked with a wonderful Developmental Editor and Technical Reviewer.

The first edition is genuinely the best I could do in 2020. This second edition is genuinely the best I can do right now.

I hope any reader who trusts me with their valuable time will be successful with this book.