O'Reilly logo
live online training icon Live Online training

Introduction to Algorithms and Data Structures

Topic: Programming
George Heineman

Python has become one of the most popular programming languages for beginners as well as experienced developers. In most cases, the built-in types provided by Python are sufficient. Invariably, however, programmers will need to work with some of the more complicated (and standard) data structures used in computer science for performance reasons or because it is necessary for a desired algorithm. In this course I will describe seven fundamental data structures and show how they can be used to improve the efficiency of your code. Rather than reimplementing these data structures from scratch, I will identify existing Python third party libraries that implement these data structures and show how they can be installed and used.

Programmers must learn algorithms to write efficient code. Using these algorithms, practitioners can solve a range of similar problems. Learning data structures “in context” will ensure students will understand the rationale for the design of a wide range of data structures.

This content is designed for software practitioners, programmers, and designers who desire to learn how to apply real algorithms to solve real problems. Python Programmers will also find this material useful since it shows how to avoid “reinventing the wheel” by providing guidance on how to use existing libraries to implement the fundamental data structures used by algorithms.

What you'll learn-and how you can apply it

By the end of this live, hands-on, online course, you’ll understand:

  • Seven fundamental data structures in computer science (Queue, Stack, Dequeue, Bag, Symbol Table, Heap, and Graph)
  • Asymptotic analysis and its application to modeling run-time performance in terms of memory (space) and CPU (time)
  • How to install third-party Python libraries using pip

And you’ll be able to:

  • Write more efficient and dependable code using high-quality third-party libraries
  • Assess the run-time and space performance of a data structure and associated algorithms
  • Choose the most efficient data structures to use for your programs

This training course is for you because...

  • You’re a Python programmer seeking to improve your skills. You would like some advice on choosing useful third-party Python libraries
  • You want to learn the most efficient structures to use when processing large amounts of data
  • You want to become a more efficient and productive programmer. Where possible, you want to use trusted, independently developed open-source code libraries so you can be more efficient and avoid “reimplementing the wheel.”
  • You want to learn the reasons behind the efficiency of key data structures and algorithms


  • Familiarity with Python

Recommended preparation:

Recommended follow-up:

About your instructor

  • George T. Heineman is an associate professor of computer science at Worcester Polytechnic Institute, with research interests in software engineering. He coedited Component-Based Software Engineering: Putting the Pieces Together and coauthored Algorithms in a Nutshell: A Desktop Quick Reference (with Gary Pollice and Stanley Selkow), now in its second edition. He also developed several online courses for the O’Reilly School of Technology, including Java 5: Distributed Java Applications and Data Structures and Algorithms.Aside from his professional pursuits, George is an avid puzzler. He invented Sujiken, a Sudoku variation played on a right triangle arrangement of cells in which numbers cannot repeat in a horizontal row, vertical column, or diagonal in any direction. Books published include Sudoku on the Half Shell: 150 Addictive Sujiken Puzzles (Puzzlewright Press). He also invented Trexagon, a Ken-Ken variation involving triangles instead of a square arrangement and wrote Trexagon Puzzles: Mathematically Logical. See more at sujiken.com and trexagon.com.


The timeframes are only estimates and may vary according to how the class is progressing

Algorithm to describe Log(n) behavior (30 mins)

  • Presentation: Introduction to terms
  • Presentation: BinaryArraySearch, an O(log n) algorithm
  • Exercise: Write the binary array search code
  • Q&A

Basic Data Structures (30 mins)

  • Presentation: Data structures (Queue / Stack / Dequeue/ Bag/ Symbol Table/ Heap/ Graph/ Sorted Containers)
  • Exercise: Python lists
  • Q&A
  • Break – 5 minutes

Sorting algorithms (30 mins)

  • Presentation: Python TimSort
  • Exercise: Code InsertionSort and MergeSort
  • Q&A

Graph Algorithms (45 mins)

  • Presentation: Graph algorithms
  • Exercise: Using a GUI program to construct sample graphs
  • Q&A
  • Break – 5 minutes

Skip List Implementation (30 mins)

  • Presentation: Skip Lists
  • Exercise: Working with lists
  • Q&A