You've heard the term algorithm at some point in your programming journey, but how, exactly, are you supposed to turn an arcane series of steps into a solution for a problem that doesn't even look like the intended purpose? How do we combine algorithms to conquer tasks neither could handle alone? In this installment from How to Train Your Scrappy Programmer, we will explore various algorithms that can help solve hard problems, like: Graph data structures and their algorithms Pathfinding with Breadth-first Search Topological sorts Polygon inclusion Flood fills And more! We will discuss when and how to use them and why they excel at what they do. We will dive into the world of algorithms to create dynamic solutions that not only work well together to solve a difficult problem, but create fun animations in the process. By the end of this interactive guide, you will have practiced finding and adapting multiple algorithms to turn seemingly insurmountable problems into fun and solvable puzzles.