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 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
- Be sure to have Python 3.x installed
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 co-author 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 right-triangle arrangement of cells in which numbers cannot repeat in a horizontal row, vertical column or diagonal in any direction.
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
Basic Data Structures (30 mins)
- Presentation: Data structures (Queue / Stack / Dequeue/ Bag/ Symbol Table/ Heap/ Graph/ Sorted Containers)
- Exercise: Python lists
- Break – 5 minutes
Sorting algorithms (30 mins)
- Presentation: Python TimSort
- Exercise: Code InsertionSort and MergeSort
Graph Algorithms (45 mins)
- Presentation: Graph algorithms
- Exercise: Using a GUI program to construct sample graphs
- Break – 5 minutes
Skip List Implementation (30 mins)
- Presentation: Skip Lists
- Exercise: Working with lists