Learning Data Structures Algorithms In Python From Scratch

Implement Data Structures and Algorithms in Python

Last updated 2022-01-10 | 4.4

- Learn Data Structures
- Abstract Data Types and their implementation in Python
- Implementation of Searching Algorithms in Python
- Implementation of Stacks
- Queues
- Linked List
- Binary Trees
- Heaps and Graphs in Python

What you'll learn

Learn Data Structures
Abstract Data Types and their implementation in Python
Implementation of Searching Algorithms in Python
Implementation of Stacks
Queues
Linked List
Binary Trees
Heaps and Graphs in Python
Implementation of Binary Tree Traversal Techniques in Python
Graph traversals techniques ie Depth First Search and Breadth-First Search in Python
Implementation of Sorting Algorithms in Python
Enhance Analytical Skill and efficiently use searching and sorting algorithms in real applications

* Requirements

* Prior knowledge of Programming any high level language
* Basic knowledge of Python Programming

Description

This course will help you in better understanding of the basics of Data Structures and how algorithms are implemented in high-level programming language. This course consists of lectures on data structures and algorithms which covers the computer science theory + implementation of data structures in python language. This course will also help students to face interviews at the top technology companies. This course is like having personal tutors to teach you about data structures and algorithms.


There’s tons of concepts and content in this course. To begin the course:

  • We have a discussion of why we need data structures.

  • Then we move on to discuss Analysis of Algorithms ie Time and Space complexity, though the Asymptotic Notation ie Big O, Omega and Theta are taken up at the end of this course so that you do not get confused and concentrate on understanding the concepts of data structures.

  • We have a programming environment setup to make sure you have all the software you need in order to get the hands-on experience in implementing Data structures and algorithms.


Then we get to the essence of the course; algorithms and data structures. Each of the specific algorithms and data structures is divided into two sections. Theory lectures and implementation of those concepts in Python. We then move on to learn:

  1. Recursion

  2. Stacks, Queues, Deques

  3. Linked List

  4. Trees & Binary Trees

  5. Binary Search Trees

  6. Priority Queues and Heaps

  7. Graphs & Graph Traversal Algorithms

  8. Searching and Sorting algorithms


Again, each of these sections includes theory lectures covering data structures & their Abstract Data Types and/or algorithms. Plus the implementation of these topics in Python.


Who this course is for:

  • Students who want to have better understanding of Data Structures
  • Python programmers curious about Data Structures
  • IT Professional experimenting implementation of Data Structures in Python

Course content

16 sections • 261 lectures

Course Introduction Preview 03:12

Get the most out of this course Preview 02:40

Why we need Data Structure ? Preview 02:35

Why Learn Algorithms ? Preview 05:12

Abstract Data Type (ADT) Preview 09:17

Python Installation on Windows Preview 03:51

PyCharm (IDE) Installation on Windows Preview 05:33

First Python Program, Data Types and Variables Preview 15:13

Integers & Float Data Types Preview 02:18

Strings Data Types Preview 05:12

Boolean & None Data Types Preview 06:06

Arithmetic Operators & Integer Division Preview 09:27

Relational or Comparison Operators Preview 09:58

Logical Operators Preview 08:26

input() Function Preview 07:13

print() Function Preview 05:06

if, if-else and elif Statements Preview 22:27

range() Function Preview 05:43

while() & for() Loops Preview 19:10

break & continue Statements Preview 08:30

What are Lists? Preview 08:00

Using Lists and List Indexing Preview 05:08

What are Tuples ? Preview 04:24

Tuple Indexing Preview 04:45

Membership & Identity Operators Preview 02:19

What are Dictionaries? Preview 04:26

Using Dictionaries Preview 08:13

What are Functions? Preview 08:10

Writing Functions in Python? Preview 04:48

Importing Modules in Python Preview 07:32

Creating Your Own Modules Preview 06:37

Fundamentals of Object Oriented Programming Preview 02:49

Defining Classes & Creating Objects Preview 12:44

More on __init__ Method (Constructor) Preview 03:06

Understanding self Parameter Preview 03:11

Static and Local Variables Preview 06:49

Time Complexity Preview 15:06

Time and Space Complexity

Order of Growth Preview 03:12

Asymptotic Analysis Preview 06:37

Big-Oh Notation Preview 05:07

Big Omega Notation Preview 02:50

Big Theta Notation Preview 02:17

Performance Summary Preview 02:45

Space Complexity Preview 05:11

Quiz

How Recursion Works ? Preview 09:57

Iteration vs recursion lets Implement Preview 06:54

Time Complexity of Recursion - Recurrence Relation Preview 12:29

Recurrence Relation - Another example Preview 08:33

Types of Recursion - Tail and Head Recursion Preview 09:35

Types of Recursion - Tree Recursion Preview 23:30

Types of Recursion - Indirect Recursion Preview 03:03

Sum of N Natural Numbers Preview 07:06

Lets Implement Sum of N Numbers Preview 03:35

Factorial Preview 05:57

Lets Implement Factorial Preview 04:41

Linear Search Algorithm Preview 10:05

Lets Implement Linear Search Preview 05:22

Binary Search Iterative Algorithm Preview 11:18

Lets Implement Binary Search using Iterations Preview 06:30

Binary Search Recursive Algorithm Preview 06:41

Lets Implement Binary Search using Recursion Preview 07:12

Sorting Introduction Preview 02:45

Stable and Unstable Sorting Preview 03:20

Selection Sort - Explanation, Algorithm and Analysis Preview 11:32

Selection Sort - Implementation Preview 06:05

Insertion Sort - Explanation, Algorithm and Analysis Preview 14:04

Insertion Sort - Implementation Preview 05:14

Bubble Sort - Explanation, Algorithm and Analysis Preview 16:49

Bubble Sort - Implementation Preview 05:42

Shell Sort - Explanation, Algorithm and Analysis Preview 13:01

Shell Sort - Implementation Preview 06:15

Merge Sort Preview 08:28

Merge Sort - Algorithm Preview 05:40

Merging - Algorithm Preview 11:36

Merge Sort - Complexity Analysis Preview 03:38

Merge Sort - Implementation Preview 10:13

Quick Sort Preview 28:31

Quick Sort - Algorithm Preview 05:36

Quick Sort - Complexity Analysis Preview 06:43

Quick Sort - Implementation Preview 10:39

Count Sort - Explanation, Algorithm and Analysis Preview 16:21

Count Sort - Implementation Preview 07:37

Radix Sort - Explanation, Algorithm and Analysis Preview 17:57

Radix Sort - Implementation Preview 09:32

Python's Built-in Sorting Functions Preview 05:16

Sorting Algorithms - Summary of Complexities Preview 07:58

Why do we use Linked List Preview 17:09

Creating Node of Linked List Preview 12:28

Playing with the links of Linked List Preview 06:31

How to Create Linked List Preview 05:09

Displaying or Traversing Linked List Preview 08:25

Lets Implement Creating and Displaying Linked List Preview 20:48

Searching Element in Linked List Preview 07:09

Lets Implement Search in Linked List Preview 05:24

Insert Element at the Beginning of Linked List Preview 04:59

Lets Implement Insert Element at the Beginning of Linked List Preview 05:50

Insert Element Anywhere in between the Linked List Preview 09:45

Lets Implement Insert Element Anywhere in Between the Linked List Preview 06:11

Delete Element at Beginning of Linked List Preview 06:09

Lets Implement Delete Element at Beginning of the Linked List Preview 05:09

Delete Element at End of Linked List Preview 08:15

Lets Implement Delete Element at End of Linked List Preview 05:55

Delete Element Anywhere in between Linked List Preview 07:22

Lets Implement Delete Element Anywhere in between Linked List Preview 05:38

Circular Linked List Preview 05:02

Creating Circular Linked List Preview 05:54

Traversing Circular Linked List Preview 08:50

Lets Implement Creating and Displaying Circular Linked List Preview 10:54

Insert Element at the Beginning of Circular Linked List Preview 04:41

Lets Implement Insert Element at the Beginning of Circular Linked List Preview 05:02

Insert Element Anywhere in between the Circular Linked List Preview 07:53

Lets Implement Insert Element Anywhere in between the Circular Linked List Preview 05:19

Delete Element at Beginning of Circular Linked List Preview 05:13

Lets Implement Delete Element at Beginning of Circular Linked List Preview 06:37

Delete Element at End of Circular Linked List Preview 07:15

Lets Implement Delete Element at End of Circular Linked List Preview 06:23

Delete Element Anywhere in between Circular Linked List Preview 07:14

Lets Implement Delete Element Anywhere in between Circular Linked List Preview 05:10

Double Linked List Preview 01:22

Creating Node of Doubly Linked List Preview 12:53

Playing with links of Doubly Linked List Preview 08:05

Creating Doubly Linked List Preview 05:33

Traversing Doubly Linked List Preview 04:44

Lets Implement Creating and Displaying Doubly Linked List Preview 17:37

Insert Element at the Beginning of Doubly Linked List Preview 04:53

Lets Implement Insert Element at the Beginning of Doubly Linked List Preview 05:15

Insert Element Anywhere in between the Doubly Linked List Preview 08:20

Lets Implement Insert Element Anywhere in between the Doubly Linked List Preview 06:16

Delete Element at Beginning of Doubly Linked List Preview 05:31

Lets Implement Delete Element at Beginning of Doubly Linked List Preview 05:18

Delete Element at End of Doubly Linked List Preview 04:30

Lets Implement Delete Element at End of Doubly Linked List Preview 04:51

Delete Element Anywhere in between Doubly Linked List Preview 07:16

Lets Implement Delete Element Anywhere in between Doubly Linked List Preview 06:14

What is Stack Data Structure ? Preview 10:33

Stacks using Arrays Preview 11:38

Lets Implement Stacks using Arrays Preview 12:19

Stacks using Linked List Preview 13:58

Lets Implement Stacks using Linked List Preview 15:25

What is Queue Data Structure ? Preview 07:01

Queues using Arrays Preview 10:25

Lets Implement Queues using Arrays Preview 12:04

Queues using Linked List Preview 13:28

Lets Implement Queues using Linked List Preview 15:37

What are Double Ended Queues (DEQue) ? Preview 05:10

Lets Implement Double Ended Queues using Arrays Preview 14:05

Lets Implement Double Ended Queues using Linked List Preview 09:31

Trees Definition and Properties Preview 05:54

Trees - Terminology Preview 06:33

Trees - Height and Levels Preview 03:21

Degree of Node and Tree Preview 03:43

Binary Trees and it's Properties Preview 12:46

Proper Binary Tree Preview 05:20

Full Binary Tree Preview 06:30

Complete Binary Tree Preview 07:17

Full Vs Complete Vs Proper Binary Tree Preview 07:55

Binary Tree Representation - Array Based Preview 14:43

Binary Tree Representation - Linked Based Preview 07:19

Traversing Binary Trees Preview 01:34

Binary Trees Traversal - Preorder Preview 05:33

Binary Trees Traversal - Inorder Preview 05:23

Binary Trees Traversal - Postorder Preview 05:26

Binary Trees Traversal - Level Order Preview 03:48

Easy way of remembering Binary Trees Traversals Preview 03:04

Creating Binary Trees Preview 15:37

Function for Preorder Traversal Preview 09:51

Function for Inorder Traversal Preview 09:29

Function for Postorder Traversal Preview 10:07

Lets Implement Creating Binary Trees Preview 06:00

Lets Implement Traversing Binary Trees Preview 06:02

Lets Create Binary Trees Preview 06:37

Lets Create Binary Trees - Another Example Preview 05:04

Function for Level Order Traversal Preview 08:40

Lets Implement Level Order Traversal Preview 06:49

Count Number of Nodes in Binary Tree Preview 14:10

Lets Implement Count Operations of Binary Tree Preview 03:44

Find Height of Binary Tree Preview 13:44

Lets Implement Height Operations of Binary Tree Preview 04:19

What are Binary Search Trees ? Preview 11:02

Binary Search Trees - Searching (Concept) Preview 06:58

Binary Search Trees - Iterative Search Function Preview 11:28

Binary Search Trees - Recursive Search Function Preview 10:49

Binary Search Trees - Insertion (Concept) Preview 05:22

Binary Search Trees - Iterative Insert Function Preview 12:21

Binary Search Trees - Recursive Insert Function Preview 08:40

Traversing Binary Search Tree Preview 05:05

Lets Implement Binary Search Tree - Insertion Preview 11:57

Lets Implement Recursive Insertion Preview 06:49

Lets Implement Iterative Search Preview 05:10

Lets Implement Recursive Search Preview 05:02

Binary Search Tree - Deletion Preview 01:41

Binary Search Tree - Deletion Case-Leaf Node Preview 01:43

Binary Search Tree - Deletion Case-Node with One Subtree Preview 05:09

Binary Search Tree - Deletion Case-Node with Both Subtrees Preview 10:54

Lets Implement Deletion in Binary Search Tree Preview 16:54

Performance and Problem of Binary Search Trees Preview 10:15

Balanced Search Trees Preview 02:20

AVL Trees Preview 10:03

AVL Tree Rotations for Insertion Preview 17:11

AVL Tree - LL Rotation Preview 10:22

AVL Tree - RR Rotation Preview 10:36

AVL Tree - LR Rotation Preview 09:15

AVL Tree - RL Rotation Preview 09:00

AVL Tree Rotations after Deletion Preview 18:14

Performance Analysis of AVL Trees Preview 02:16

Red-Black Trees Preview 05:02

Red-Black Trees - Restructuring Preview 10:18

Red-Black Trees - Insertion Preview 09:54

Red-Black Trees - Deletion Preview 10:49

Performance Analysis of Red-Black Trees Preview 02:14

Splay Trees Preview 03:28

Splay Trees - Zig-Zig Restructuring Preview 04:36

Splay Trees - Zig-Zag Restructuring Preview 04:22

Splay Trees - Zig Restructuring Preview 03:28

Splay Trees - Splaying Preview 05:39

Performance Analysis of Splay Trees Preview 03:30

What are Priority Queues ? Preview 04:17

Heaps Data Structure Preview 08:36

Heaps - Insertion Preview 07:59

Heaps - Insert Function Preview 19:18

Lets Implement Creating Heaps using Insert function Preview 12:04

Heaps - Deletion Preview 06:47

Heaps - Delete Function Preview 09:04

Lets Implement Deletion from Heaps Preview 08:52

heapq Module in Python Preview 12:57

Heap Sort - Explanation, Algorithm and Analysis Preview 09:38

Lets Implement Heap Sort Preview 06:17

What is Hashing Preview 12:29

Chaining - Collision Detection Scheme Preview 11:49

Let us Implement Chaining Preview 17:21

Linear Probing Preview 09:56

Let us Implement Linear Probing Preview 10:56

Quadratic Probing Preview 07:51

Double Hashing Preview 08:58

Bucket Sort - Explanation, Algorithm and Analysis Preview 11:30

Lets Implement Bucket Sort Preview 07:52

Graphs - Introduction Preview 08:04

Graphs - Degree of a Vertex Preview 03:57

Graphs - Path and Cycle Preview 05:18

Graphs - Subgraphs and Connected Components Preview 06:39

Graph Abstract Data Type (ADT) Preview 03:14

Graphs Representations Preview 01:54

Graphs - Edge List Representation Preview 05:37

Graphs - Adjacency List Representation Preview 10:43

Graphs - Adjacency Matrix Representation Preview 15:01

Graphs Representation - Summary of Performance Preview 03:50

Lets Implement Graphs ADT Preview 18:45

Lets Implement Undirected Graph Preview 10:27

Lets Implement Weighted Undirected Graph Preview 06:15

Lets Implement Directed Graph Preview 08:32

Lets Implement Weighted Directed Graph Preview 05:03

Graph Traversals Preview 03:32

Breadth First Search Preview 10:10

Breadth First Search Algorithm Preview 09:52

Lets Implement Breadth First Search Preview 08:50

Depth First Search Preview 06:25

Depth First Search Algorithm Preview 09:12

Lets Implement Depth First Search Preview 07:00

How to install Numpy Python module in PyCharm on Windows Preview 02:46

Getting Certificate of Completion Preview 00:41