This class is to teach Data Structures and Algorithms(DSA) with Python.
- They are necessary to make our code time and memory efficient.
- The questions related to them are generally asked in all the coding tests and interviews.
- Mastering DSA can help you get Software Development jobs in companies like Google, Microsoft, Amazon, Meta, etc.
Please find the course syllabus below:
1. Introduction
- Importance of Data Structures and Algorithms
- Basics of Python for DSA
- Big O Notation (Time and Space Complexity)
2. Arrays and Strings
- Arrays: Introduction, Operations (Insert, Delete, Traverse)
- Multi-dimensional Arrays
- Strings: Basics, Manipulations, Substrings, Pattern Matching (e.g., KMP Algorithm)
3. Lists and Linked Lists
- Singly Linked List
- Doubly Linked List
- Circular Linked List
- Common Operations (Insertion, Deletion, Traversal, Reversal)
4. Stacks and Queues
- Stack: Implementation (Using Lists, Linked List), Applications (Balanced Parentheses, Postfix Evaluation)
- Queue: Implementation (Simple Queue, Circular Queue, Priority Queue)
- Deque (Double-Ended Queue)
5. Recursion
- Basics of Recursion
- Tail Recursion
- Recursion vs Iteration
- Problems (Factorial, Fibonacci, Tower of Hanoi)
6. Trees
- Binary Trees: Basics, Traversals (Inorder, Preorder, Postorder)
- Binary Search Tree (BST): Insertion, Deletion, Search
- AVL Trees, Red-Black Trees (optional advanced topics)
- Heap: Min-Heap, Max-Heap
- Applications: Huffman Encoding, Priority Queue
7. Graphs
- Basics: Representation (Adjacency Matrix, List)
- Graph Traversals: BFS, DFS
- Shortest Path Algorithms: Dijkstra, Bellman-Ford
- Minimum Spanning Tree: Prim's, Kruskal's Algorithm
- Topological Sort
- Applications (Social Networks, Web Crawlers)
8. Hashing
- Hash Tables
- Hash Functions
- Collision Resolution Techniques (Chaining, Open Addressing)
- Applications (Anagrams, Frequency Count)
9. Searching and Sorting
- Searching Algorithms: Linear Search, Binary Search
- Sorting Algorithms:
- Bubble Sort
- Insertion Sort
- Selection Sort
- Merge Sort
- Quick Sort
- Heap Sort
10. Dynamic Programming
- Basics of Dynamic Programming (Memoization vs Tabulation)
- Problems:
- Fibonacci
- Longest Common Subsequence
- Longest Increasing Subsequence
- Knapsack Problem
- Matrix Chain Multiplication
11. Greedy Algorithms
- Basics of Greedy Strategy
- Problems:
- Activity Selection
- Fractional Knapsack
- Huffman Encoding
- Minimum Spanning Tree (Prim's, Kruskal's)
12. Backtracking
- Basics of Backtracking
- Problems:
- N-Queens Problem
- Sudoku Solver
- Subset Sum
13. Advanced Data Structures (Optional for Beginners)
- Trie
- Segment Trees
- Fenwick Tree (Binary Indexed Tree)
- Disjoint Set Union (Union-Find)