Algorithms are designed to solve common problems that arise frequently in software applications. When teaching algorithms to undergraduate students, I try to bridge the gap between the students’ background knowledge and the algorithm concepts I’m teaching. Many textbooks have carefully written—but always too brief—explanations. Without having a guide to explain how to navigate this material, students are often unable to learn algorithms on their own.

LearningAlgorithms.org pulls together a diverse set of resources to help you learn this material from many different perspectives:

  • Learning Algorithms  is appropriate for beginning programmers. The book uses Python exclusively
  • Algorithms in a Nutshell (2ed) is suitable for intermediate to advanced programmers, providing code examples in C, C++, Java and Python.
  • Twenty-four KataCoda scenarios offers opportunity to dynamically explore algorithms within a browser, where you can edit and execute Python code.
  • I have several video courses in Python, covering data structures and algorithms.