Introduction to algorithms and data structures
Python is one of the most popular programming languages. In most cases, the built-in 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 third-party libraries that implement these data structures and learn how to install and use them.
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 runtime 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 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 third-party 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.
- Familiarity with Python
- A machine with Python 3.x installed
- 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 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 minutes)
- Lecture: Terms; BinaryArraySearch, an O(log n) algorithm
- Hands-on exercise: Write the binary array search code
Basic data structures (30 minutes)
- Lecture: The data structures queue, stack, dequeue, bag, symbol table, heap, graph, and sorted containers
- Hands-on exercise: Write Python lists
- Break (5 minutes)
Sorting algorithms (30 minutes)
- Lecture: Python TimSort
- Hands-on exercise: Code InsertionSort and MergeSort
Graph algorithms (45 minutes)
- Lecture: Graph algorithms
- Hands-on exercise: Construct sample graphs using a GUI program
- Break (5 minutes)
Skip list implementation (30 minutes)
- Lecture: Skip lists; Trexagon puzzles
- Hands-on exercise: Work with lists
Wrap-up and Q&A (5 minutes)