Course Overview
  • Course Introduction
  • Get the most out of this course
  • Why we need Data Structure ?
  • Why Learn Algorithms ?
  • Abstract Data Type (ADT)
  • Python Installation on Windows
  • PyCharm (IDE) Installation on Windows
Bonus: Python Crash Course (Basics and Fundamentals)
  • First Python Program, Data Types and Variables
  • Integers & Float Data Types
  • Strings Data Types
  • Boolean & None Data Types
  • Arithmetic Operators & Integer Division
  • Relational or Comparison Operators
  • Logical Operators
  • input() Function
  • print() Function
  • if, if-else and elif Statements
  • range() Function
  • while() & for() Loops
  • break & continue Statements
  • What are Lists?
  • Using Lists and List Indexing
  • What are Tuples ?
  • Tuple Indexing
  • Membership & Identity Operators
  • What are Dictionaries?
  • Using Dictionaries
  • What are Functions?
  • Writing Functions in Python?
  • Importing Modules in Python
  • Creating Your Own Modules
  • Fundamentals of Object Oriented Programming
  • Defining Classes & Creating Objects
  • More on __init__ Method (Constructor)
  • Understanding self Parameter
  • Static and Local Variables
Analysis of Algorithms
  • Time Complexity
  • Order of Growth
  • Asymptotic Analysis
  • Big-Oh Notation
  • Big Omega Notation
  • Big Theta Notation
  • Performance Summary
  • Space Complexity
  • Quiz
Recursion and Analysis of Recursive Functions
  • How Recursion Works ?
  • Iteration vs recursion lets Implement
  • Time Complexity of Recursion - Recurrence Relation
  • Recurrence Relation - Another example
  • Types of Recursion - Tail and Head Recursion
  • Types of Recursion - Tree Recursion
  • Types of Recursion - Indirect Recursion
  • Sum of N Natural Numbers
  • Lets Implement Sum of N Numbers
  • Factorial
  • Lets Implement Factorial
Searching Algorithms
  • Linear Search Algorithm
  • Lets Implement Linear Search
  • Binary Search Iterative Algorithm
  • Lets Implement Binary Search using Iterations
  • Binary Search Recursive Algorithm
  • Lets Implement Binary Search using Recursion
Sorting Algorithms
  • Sorting Introduction
  • Stable and Unstable Sorting
  • Selection Sort - Explanation, Algorithm and Analysis
  • Selection Sort - Implementation
  • Insertion Sort - Explanation, Algorithm and Analysis
  • Insertion Sort - Implementation
  • Bubble Sort - Explanation, Algorithm and Analysis
  • Bubble Sort - Implementation
  • Shell Sort - Explanation, Algorithm and Analysis
  • Shell Sort - Implementation
  • Merge Sort
  • Merge Sort - Algorithm
  • Merging - Algorithm
  • Merge Sort - Complexity Analysis
  • Merge Sort - Implementation
  • Quick Sort
  • Quick Sort - Algorithm
  • Quick Sort - Complexity Analysis
  • Quick Sort - Implementation
  • Count Sort - Explanation, Algorithm and Analysis
  • Count Sort - Implementation
  • Radix Sort - Explanation, Algorithm and Analysis
  • Radix Sort - Implementation
  • Python's Built-in Sorting Functions
  • Sorting Algorithms - Summary of Complexities
Linked List
  • Why do we use Linked List
  • Creating Node of Linked List
  • Playing with the links of Linked List
  • How to Create Linked List
  • Displaying or Traversing Linked List
  • Lets Implement Creating and Displaying Linked List