# Data Structures and Algorithms in Python – Full Course for Beginners

A beginner-friendly introduction to common data structures (linked lists, stacks, queues, graphs) and algorithms (search, sorting, recursion, dynamic programming) in Python. This course will help you prepare for coding interviews and assessments. 🔗 Course website: https://jovian.ai/learn/data-structures-and-algorithms-in-python ✏️ Created by Aakash N S, founder and CEO of Jovian. ⭐️ Course Lessons with Code ⭐️
🟢 Lesson 1 – Binary Search, Linked Lists and Complexity 💻 Linear and Binary Search: https://jovian.ai/aakashns/python-binary-search 💻 Problem Solving Template: https://jovian.ai/aakashns/python-problem-solving-template 💻 Linked Lists in Python: https://jovian.ai/aakashns/python-classes-and-linked-lists
🟢 Assignment 1 – Binary Search Practice 💻 Starter Notebook: https://jovian.ai/aakashns/python-binary-search-assignment
🟢 Lesson 2 – Binary Search Trees, Traversals and Recursion 💻 Binary Search Trees in Python: https://jovian.ai/aakashns/python-binary-search-trees 💻 Problem Solving Template: https://jovian.ai/aakashns/python-problem-solving-template 💻 Linked Lists in Python: https://jovian.ai/aakashns/python-classes-and-linked-lists
🟢 Assignment 2 – Hash Tables and Python Dictionaries 💻 Starter Notebook: https://jovian.ai/aakashns/python-hash-tables-assignment
🟢 Lesson 3 – Sorting Algorithms and Divide & Conquer 💻 Sorting and Divide & Conquer: https://jovian.ai/aakashns/python-sorting-divide-and-conquer 💻 Problem Solving Template: https://jovian.ai/aakashns/python-problem-solving-template
🟢 Assignment 3 – Divide and Conquer Practice 💻 Starter Notebook: https://jovian.ai/aakashns/python-divide-and-conquer-assignment
🟢 Lesson 4 – Recursion and Dynamic Programming 💻 Problem-solving template: https://jovian.ai/aakashns/python-problem-solving-template 💻 Dynamic Programming problems: https://jovian.ai/aakashns/dynamic-programming-problems
🟢 Lesson 5 – Graph Algorithms (BFS, DFS & Shortest Paths) 💻 Graphs and Graph Algorithms (Starter Notebook): https://jovian.ai/aakashns/python-graph-algorithms
🟢 Project – Step-by-Step Solution to a Programming Problem 💻 Starter Notebook: https://jovian.ai/aakashns/python-problem-solving-template
🟢 Lesson 6 – Python Interview Questions, Tips & Advice 💻 Problem solving template: https://jovian.ai/aakashns/python-problem-solving-template 💻 Coding problem 1: https://jovian.ai/aakashns/python-subarray-with-given-sum 💻 Coding problem 2: https://jovian.ai/aakashns/python-minimum-edit-distance ⭐️ Course Contents ⭐️
⌨️ (00:00:00) Introduction
⌨️ (00:01:43) Binary Search Linked Lists and Complexity
⌨️ (00:03:43) Introduction
⌨️ (00:08:35) Problem
⌨️ (00:12:17) The Method
⌨️ (00:13:55) Solution
⌨️ (00:50:52) Complexity and Big O notation
⌨️ (01:24:57) Binary Search vs Linear Search
⌨️ (01:31:40) Generic Binary Search
⌨️ (01:40:08) Summary and Conclusion
⌨️ (01:44:30) Assignment Walkthrough
⌨️ (01:45:05) Introduction
⌨️ (01:50:01) Problem- Rotated Lists
⌨️ (01:53:02) The Method
⌨️ (01:54:03) Solution
⌨️ (02:30:47) Summary and Conclusion
⌨️ (02:33:29) Binary Search Trees Python Tutorial
⌨️ (02:34:41) Introduction
⌨️ (02:37:36) Problem
⌨️ (02:38:40) The Method
⌨️ (03:13:58) Binary tree
⌨️ (03:27:16) Traversing Binary Tree
⌨️ (03:36:10) Binary Search Tree
⌨️ (04:22:37) Self-Balancing Binary Trees and AVL Trees
⌨️ (04:26:27) Summary and Conclusion
⌨️ (04:30:33) Hash Tables and Python Dictionaries
⌨️ (04:31:09) Introduction
⌨️ (04:34:00) Problem
⌨️ (04:40:28) Data List
⌨️ (04:42:52) Hash Function
⌨️ (04:54:52) Basic Hash Table Implementation
⌨️ (05:03:07) Handling Collisions with Linear Probing
⌨️ (05:09:24) Summary and Conclusion
⌨️ (05:16:47) Sorting Algorithms and Divide & Conquer
⌨️ (05:17:48) Introduction
⌨️ (05:20:19) Problem
⌨️ (05:21:27) The Method
⌨️ (06:40:49) Custom Comparison Functions
⌨️ (06:48:53) Summary and Conclusion
⌨️ (06:54:57) Recursion Memoization & Dynamic Programming
⌨️ (06:56:37) Introduction
⌨️ (07:00:04) Problem
⌨️ (07:04:28) The Method
⌨️ (07:06:21) Solution
⌨️ (08:06:13) Knapsack Problems
⌨️ (08:08:48) The Method
⌨️ (08:09:24) Solution
⌨️ (08:43:26) Summary and Conclusion
⌨️ (08:44:05) Graph Algorithms BFS, DFS & Shortest Paths
⌨️ (08:45:02) Introduction
⌨️ (08:51:00) Graph Data Structure
⌨️ (09:15:57) Graph Algorithms – Breadth-First Search
⌨️ (09:37:28) Depth-First Search
⌨️ (10:08:26) Shortest Paths
⌨️ (10:40:39) Summary and Conclusion
⌨️ (10:42:21) Python Interview Questions Tips & Advice
⌨️ (10:43:09) Introduction
⌨️ (10:44:08) The Method
⌨️ (10:47:10) Solution
⌨️ (12:30:51) Summary and Conclusion

Data Structures and Algorithms in Python – Full Course for Beginners