Data Structures and Algorithms in Python

(DS-Algo)/ISBN:978-1-64459-105-5

This course includes
Lessons
TestPrep
Lab
AI Tutor (Add-on)

Use the Data Structures and Algorithms in Python course and lab to master all the concepts associated with Data Structures algorithms. The lab is cloud-based, device-enabled, and can easily be integrated with an LMS. With this course, you will learn common data structures and algorithms in Python and gain skills on topics like object-oriented programming, algorithm analysis, graph algorithms, array-based sequences, memory management, text processing, linked lists, and recursions.

Lessons

17+ Lessons | 149+ Quizzes | 89+ Flashcards | 89+ Glossary of terms

TestPrep

75+ Pre Assessment Questions | 75+ Post Assessment Questions |

Here's what you will learn

Download Course Outline

Lessons 1: Python Primer

  • Python Overview
  • Objects in Python
  • Expressions, Operators, and Precedence
  • Control Flow
  • Functions
  • Simple Input and Output
  • Exception Handling
  • Iterators and Generators
  • Additional Python Conveniences
  • Scopes and Namespaces
  • Modules and the Import Statement
  • Exercises

Lessons 2: Object-Oriented Programming

  • Goals, Principles, and Patterns
  • Software Development
  • Class Definitions
  • Inheritance
  • Namespaces and Object-Orientation
  • Shallow and Deep Copying
  • Exercises

Lessons 3: Algorithm Analysis

  • Experimental Studies
  • The Seven Functions Used in This Course
  • Asymptotic Analysis
  • Simple Justification Techniques
  • Exercises

Lessons 4: Recursion

  • Illustrative Examples
  • Analyzing Recursive Algorithms
  • Recursion Run Amok
  • Further Examples of Recursion
  • Designing Recursive Algorithms
  • Eliminating Tail Recursion
  • Exercises

Lessons 5: Array-Based Sequences

  • Python's Sequence Types
  • Low-Level Arrays
  • Dynamic Arrays and Amortization
  • Efficiency of Python's Sequence Types
  • Using Array-Based Sequences
  • Multidimensional Data Sets
  • Exercises

Lessons 6: Stacks, Queues, and Deques

  • Stacks
  • Queues
  • Double-Ended Queues
  • Exercises

Lessons 7: Linked Lists

  • Singly Linked Lists
  • Circularly Linked Lists
  • Doubly Linked Lists
  • The Positional List ADT
  • Sorting a Positional List
  • Case Study: Maintaining Access Frequencies
  • Link-Based vs. Array-Based Sequences
  • Exercises

Lessons 8: Trees

  • General Trees
  • Binary Trees
  • Implementing Trees
  • Tree Traversal Algorithms
  • Case Study: An Expression Tree
  • Exercises

Lessons 9: Priority Queues

  • The Priority Queue Abstract Data Type
  • Implementing a Priority Queue
  • Heaps
  • Sorting with a Priority Queue
  • Adaptable Priority Queues
  • Exercises

Lessons 10: Maps, Hash Tables, and Skip Lists

  • Maps and Dictionaries
  • Hash Tables
  • Sorted Maps
  • Skip Lists
  • Sets, Multisets, and Multimaps
  • Exercises

Lessons 11: Search Trees

  • Binary Search Trees
  • Balanced Search Trees
  • AVL Trees
  • Splay Trees
  • (2,4) Trees
  • Red-Black Trees
  • Exercises

Lessons 12: Sorting and Selection

  • Why Study Sorting Algorithms?
  • Merge-Sort
  • Quick-Sort
  • Studying Sorting through an Algorithmic Lens
  • Comparing Sorting Algorithms
  • Python's Built-In Sorting Functions
  • Selection
  • Exercises

Lessons 13: Text Processing

  • Abundance of Digitized Text
  • Pattern-Matching Algorithms
  • Dynamic Programming
  • Text Compression and the Greedy Method
  • Tries
  • Exercises

Lessons 14: Graph Algorithms

  • Graphs
  • Data Structures for Graphs
  • Graph Traversals
  • Transitive Closure
  • Directed Acyclic Graphs
  • Shortest Paths
  • Minimum Spanning Trees
  • Exercises

Lessons 15: Memory Management and B-Trees

  • Memory Management
  • Memory Hierarchies and Caching
  • External Searching and B-Trees
  • External-Memory Sorting
  • Exercises

Appendix A: Character Strings in Python

Appendix B: Useful Mathematical Facts

Hands-on LAB Activities (Performance Labs)

Python Primer

  • Using the Bitwise Operator
  • Using the Equality Operator and the list Class
  • Using Arithmetic Operators
  • Performing Bitwise Operations
  • Using the Comparison Operator
  • Using the if-elif-else Statement - Part 1
  • Using the if-elif-else Statement - Part 2
  • Using the if-else Statement
  • Determining the Armstrong Number
  • Rectifying Errors
  • Finding LCM of Two Numbers
  • Creating a Function with its Default Value
  • Handling Exception
  • Using the dir Function
  • Using the math Module

Object-Oriented Programming

  • Understanding the init Method
  • Understanding Numeric Progressions

Recursion

  • Calculating the Product of Two Positive Integers
  • Finding the Minimum Element

Array-Based Sequences

  • Using the getsizeof Function
  • Implementing a Dynamic Array
  • Adding Elements to a List
  • Using the extend Method
  • Removing Elements from a List
  • Constructing the Caesar Cipher Algorithm

Stacks, Queues, and Deques

  • Using Stack Abstract Data Type Method

Linked Lists

  • Implementing a Stack
  • Implementing a Queue
  • Implementing a Queue with a Circular Linked List
  • Implementing a Deque with a Doubly Linked List

Maps, Hash Tables, and Skip Lists

  • Adding Elements to a Set
  • Performing Set Operations

Sorting and Selection

  • Using a Sorting Function
  • Using the len() Built-In Function

Text Processing

  • Performing Pattern Matching