Introduction to algorithms and data structures
Python is one of the most popular programming languages. In most cases, the builtin types provided by Python are sufficient. Invariably, however, you’ll need the more complicated (and standard) data structures to solve the problems you encounter over the course of your work. Join expert George Heineman on a deep dive into seven fundamental data structures and explore how they can be used to improve the efficiency of your code. Rather than reimplementing these data structures from scratch, you’ll discover existing Python thirdparty libraries that implement these data structures and learn how to install and use them.
What you'll learnand how you can apply it
By the end of this live, handson, 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 runtime performance in terms of memory (space) and CPU (time)
 How to install thirdparty Python libraries using pip
And you’ll be able to:
 Write more efficient and dependable code using highquality thirdparty libraries
 Assess the runtime 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, and you want advice on choosing useful thirdparty Python libraries.
 You’re a software practitioner, programmer, or designer who wants to learn the most efficient structures to use when processing large amounts of data.
 You’re a programmer who wants to become more efficient and productive and use trusted, independently developed open source code libraries.
 You want to understand the efficiency behind key data structures and algorithms.
Prerequisites
 Familiarity with Python
 A machine with Python 3.x installed
Recommended followup:
 Read Python Data Structures and Algorithms (book)
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 ComponentBased 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 KenKen variation involving triangles instead of a square arrangement and wrote Trexagon Puzzles: Mathematically Logical. See more at sujiken.com and trexagon.com.
Schedule
The timeframes are only estimates and may vary according to how the class is progressing
Algorithm to describe log(n) behavior (30 minutes)
 Lecture: Terms; BinaryArraySearch, an O(log n) algorithm
 Handson exercise: Write the binary array search code
 Q&A
Basic data structures (30 minutes)
 Lecture: The data structures queue, stack, dequeue, bag, symbol table, heap, graph, and sorted containers
 Handson exercise: Write Python lists
 Q&A
Break (5 minutes)
Sorting algorithms (30 minutes)
 Lecture: Python TimSort
 Handson exercise: Code InsertionSort and MergeSort
 Q&A
Graph algorithms (45 minutes)
 Lecture: Graph algorithms
 Handson exercise: Construct sample graphs using a GUI program
 Q&A
Break (5 minutes)
Skip list implementation (30 minutes)
 Lecture: Skip lists; Trexagon puzzles
 Handson exercise: Work with lists
Wrapup and Q&A (5 minutes)