Week - 01 Introduction
- Abstract data type and Data Structure
- Complexity Analysis
- Asymptotic analysis
- Comparison of functions
- Recurrence Relations
- Time complexity
- Space complexity
- Iteration
- Recursion
Week - 02 Lists
- Arrays
- Static arrays
- Dynamic arrays
- 2D arrays
- Strings
- Linked List
- Singly Linked List and its operations
- Doubly Linked List and its operations
- Circular Linked List and its operations
Week - 03 Stacks and Queues
- Stacks
- Implementations- using arrays, using linked lists
- Operations
- Applications
- Queues
- Implementations- using arrays, using linked list, using two stacks
- Circular queues
- Priority queues
- Amortized Analysis
- Stacks and Queues in Python
Week -04 Trees
- Binary Trees:
- Representations
- Pre-order, In-order
- Post-order traversals
- Expression trees
- Successor and Predecessor
- Binary Search Trees and their operations
- AVL Trees and their operations
- Red-Black trees, Interval trees, Segment trees, B-trees, B+ trees
Week - 05 Heaps and Tries
- Heaps
- Min Heap
- Max Heap
- Implementation
- Operations
- Priority Queues
- Tries
Week - 06 Graphs
- Graphs
- Representation
- Implementation
- Types of Graphs
- Minimum cost spanning tree problem
- Traversing Graph
- Depth First Search
- Breadth-First Search
- Single-Source Shortest path problem
- Dijkstra's algorithm
- Bellman-Ford algorithm
- Disjoint Sets
- Union by rank
- Path compression
- Applications
Week - 07 Sorting
- Types of sorting techniques
- Bubble Sort
- Insertion Sort
- Selection Sort
- Quick Sort
- Merge Sort
- Heap Sort
- Count Sort
- Bucket Sort
- Radix Sort
- Shell Sort
- Topological Sort
Week - 08 Searching and Hashing
- Searching
- Linear Search
- Binary Search
- Hashing
- Hash function
- Collision handling
- Chaining
- Open addressing
- Linear probing, primary clustering
- Quadratic probing, secondary clustering
- Double hashing
- Hash Tables
- Collection Module in Python
Week - 09 Greedy Algorithms
- Optimization Problems
- Types of algorithms
- Greedy Algorithms
- The strategies of Greedy Algorithms
- Elements of Greedy Algorithms
- Advantages of Greedy Algorithms
- Disadvantages of Greedy Algorithms
- Applications of Greedy Algorithms
Week - 10 Divide and Conquer
- Divide and Conquer Techniques
- Strategies
- Advantages
- Disadvantages
- Master theorem
- Applications
- Special types of problems
- Bit Manipulation problems
- Two pointer problems
- Sliding Window problems
- Merge Intervals problems
Week - 11 Backtracking
- Backtracking
- Brute Force Approach
- N Queens Problem
- String matching Algorithms
- Brute Force Method
- KMP
- Rabin Karp
- Data Structures for storing strings
Week - 12 Dynamic Programming
- Dynamic Programming
- Approaches of Dynamic Programming
- Top-down approach
- Bottom-up approach
- Properties of Dynamic Programming
- Comparison of Algorithmic Techniques learned
- Regular Expressions
- Pattern matching algorithm
- Complexity Classes
- P, NP, NP-Hard, NP-Complete
- Is P==NP?
- Problem Solving Summary