O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Working with Algorithms in Python

Video Description

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.

Table of Contents

  1. BinarySearch
    1. Efficient Searching using BinaryArraySearch and Binary Search Trees Part 1 00:26:19
    2. Efficient Searching using BinaryArraySearch and Binary Search Trees Part 2 00:30:10
    3. Creating a Balanced Binary Search Tree from a Sorted List 00:06:22
    4. An Informal Introduction to the Analysis of Algorithms 00:38:54
  2. O (n log n) Behavior
    1. MergeSort: A Divide and Conquer Algorithm 00:45:32
    2. Using MergeSort to Sort External Data 00:11:06
  3. Mathematical Algorithms
    1. Mathematical Algorithms: Exponentiation By Squaring 00:37:13
    2. Using Exponentiation by Squaring to Determine Whether an Integer Is Prime 00:10:25
  4. Brute Force Algorithms
    1. Brute Force: An Algorithm for Solving Combinatoric Problems 00:45:44
    2. Using Brute Force to Generate Magic Squares 00:16:47
  5. K-Dimensional Trees
    1. KD Trees: Efficient Processing of Two-Dimensional Datasets Part 1 00:38:09
    2. KD Trees: Efficient Processing of Two-Dimensional Datasets Part 2 00:13:45
    3. Using KD Trees to Compute Nearest Neighbor Queries 00:13:56
  6. Graph Algorithms
    1. Graph Algorithms: Depth First Search Part 1 00:26:57
    2. Graph Algorithms: Depth First Search Part 2 00:18:43
    3. Using Depth First Search to Construct a Rectangular Maze 00:11:56
  7. AllPairsShortestPath
    1. Graph Algorithms: All Pairs Shortest Path 00:40:49
    2. Using Dynamic Programming to Compute Minimum Edit Distance 00:08:04
  8. Heap Data Structure
    1. The Heap Data Structure and Its Use in HeapSort 00:26:53
    2. Using HeapSort to Sort a Collection 00:07:38
  9. Single-Source Shortest Path
    1. Single-Source Shortest Path: Using Priority Queues 00:35:23
    2. Using Priority Queues to Compute the Minimum Spanning Tree 00:07:11
  10. Summary
    1. Course Summary 00:01:56