Learn how to make your Python code more efficient by using algorithms to solve a variety of tasks or computational problems. In this video course, you’ll learn algorithm basics and then tackle a series of problems—such as determining the shortest path through a graph and the minimum edit distance between two genomic sequences—using existing algorithms.

Computer scientist George Heineman fully implements each algorithm from scratch in real time, narrating key concepts and steps along the way, and then demonstrates the execution performance of the algorithm implementations on the model problems.

Algorithms are essential to the way computers process data. The examples you’ll learn in this course are among the most common algorithms in computer science, but they illustrate many of the concerns you’ll face as you work to create algorithms on your own. All code is available on GitHub (https://github.com/heineman/python-algorithms).

The topics in this video course include:

- Just enough mathematical concepts to understand how to analyze algorithms
- Practical advice to identify code inefficiencies, using algorithm analysis
- A description of fundamental data structures (such as binary trees, heaps, and graphs) and their use in efficient algorithms
- Problem-solving strategies, including Divide and Conquer, Dynamic Programming, Greedy, and Brute Force approaches
- Full implementations of each algorithm in Python within the context of a specific problem
- A description of the most common algorithmic families, including constant-time, logarithmic time, linear time, polynomial time, and exponential time

George T. Heineman is an Associate Professor of Computer Science at Worcester Polytechnic Institute in Massachusetts.