Introduction to Algorithms and Data Structures
Python has become one of the most popular programming languages for beginners as well as experienced developers. In most cases, the builtin 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 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. You would like some advice on choosing useful thirdparty 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 opensource 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
Prerequisites
 Familiarity with Python
Recommended preparation:
 Be sure to have Python 3.x installed
Recommended followup:
About your instructor

George T. Heineman is an Associate Professor of Computer Science at WPI. His research interests are in Software Engineering and modularity. He is coauthor of Algorithms in a Nutshell, 2nd Edition and the video course Working with Algorithms in Python. Aside from his professional pursuits, George is an avid puzzler. He invented Sujiken®, a Sudoku variation played on a righttriangle arrangement of cells in which numbers cannot repeat in a horizontal row, vertical column or diagonal in any direction.
Schedule
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