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

Book Review: Guide to Competitive Programming

Hi everyone, Readers who’ve worked through the material in Algorithmic Thinking might be interested to know what’s out there to read next. In the book, I offer some pointers to more traditional algorithms textbooks that you might consider if you’d like to dig deeper into the theory of algorithms. But if I’ve managed to whet your appetite for c... Read more

Solution to the Other COCI Programming Competition Puzzle

Hi everyone, Let’s solve the COCI (Croatian Open Competition in Informatics) programming puzzle that I gave at the end of Last week’s post. Give it a try if you haven’t already done so… This problem is a … a … a … a hash table problem! In Chapter 1 of my book Algorithmic Thinking, I offered a clue for when hash tables might apply: it’s whe... Read more

Solution to the COCI Programming Competition Puzzle, and Another Problem!

Hi everyone, Last week, I suggested a programming puzzle. I asked you to peruse the material from each chapter of the book and choose the best approach for solving this problem… check out that post now if you haven’t already :) This problem is a … a … a … a binary search problem! It’s the Aerodrom problem from COCI 2012-2013 Contest 3. As I... Read more

A COCI Programming Competition Puzzle

Hi everyone, I wrote Algorithmic Thinking to teach data structures and algorithms motivated by competitive programming examples. To begin each chapter, we meet a new problem that requires us to learn new data structures or algorithmic techniques. We then use what we learned to solve the remaining problems in the chapter. One skill that’s hard ... Read more

[Chapter 3, Dynamic Programming] Solving Baltic OI 2005- Ancient Manuscript

Hi everyone, At the end of Chapter 3 of Algorithmic Thinking, I included one example of using memoization to compute the number of valid solutions to a problem. I’ve gotten a few requests to cover another example, so I’ll do that here! I’ll assume that you’re familiar with the memoization/dynamic programming material from Chapter 3. The proble... Read more