- Foundational Skills (35-40 hours)
- Mathematics for DSA (10-15 hours)
- Time Complexity (Big O Notation) (3-4 hours)
- Learn common complexities and derive them
- Practice: 10-15 questions
- Space Complexity (2-3 hours)
- Understand stack vs. heap memory usage
- Practice: 5-10 questions
- Recursion (2-3 hours)
- Learn recursion fundamentals, base cases, recursive calls
- Practice: 15-20 problems
- Logarithms and Exponentials (2-3 hours)
- Understand logarithmic functions in algorithms
- Practice: 5-10 problems
- Programming Fundamentals (8-10 hours)
- Data Types and Variables (1-2 hours)
- Control Structures (2-3 hours)
- Functions and Recursion (2-3 hours)
- Object-Oriented Programming (2 hours)
- Practice: 10-15 coding problems
- Problem-Solving Techniques (12-15 hours)
- Divide and Conquer (3-4 hours)
- Study algorithms like Merge Sort
- Practice: 10-15 problems
- Backtracking (3-4 hours)
- Solve problems like N-Queens, Sudoku Solver
- Practice: 10-12 problems
- Memoization (3 hours)
- Learn dynamic programming with memoization
- Practice: 10 problems
- Iteration vs. Recursion (1-2 hours)
- Practice: 5 problems
- Two-Pointer Technique (2-3 hours)
- Apply to solve array problems
- Practice: 10-15 problems
- Data Structures (30-40 hours)
- Primitive Data Structures (5-7 hours)
- Focus on integers, floats, characters, pointers
- Practice: 10-15 problems
- Non-Primitive Data Structures (25-30 hours)
- Linear Data Structures
- Arrays (4-5 hours)
- Learn operations (insert, delete, search)
- Practice: 20-25 problems
- Linked Lists (5-6 hours)
- Learn singly and doubly linked lists
- Practice: 20-25 problems
- Stacks & Queues (4-5 hours)
- Learn using arrays and linked lists
- Practice: 15-20 problems
- Non-Linear Data Structures
- Trees (6-8 hours)
- Focus on binary trees, BSTs, tree traversal
- Practice: 15-20 problems
- Graphs (8-10 hours)
- Learn representation and traversal (BFS, DFS)
- Practice: 15-20 problems
- Heaps (3-4 hours)
- Learn min-heap and max-heap
- Practice: 10 problems
- Hash Tables (3-4 hours)
- Focus on hash functions and collision resolution
- Practice: 10-15 problems
- Algorithms (40-50 hours)
- Searching Algorithms (5-6 hours)
- Linear Search (1 hour)
- Practice: 5-10 problems
- Binary Search (2-3 hours)
- Learn recursive and iterative implementations
- Practice: 10-15 problems
- Sorting Algorithms (10-12 hours)
- Bubble Sort, Insertion Sort (2-3 hours)
- Practice: 10 problems
- Merge Sort, Quick Sort (3-4 hours each)
- Practice: 10-15 problems each
- Graph Algorithms (12-15 hours)
- BFS, DFS (4-5 hours)
- Practice: 15-20 problems
- Dijkstra’s, Kruskal’s (4-5 hours)
- Practice: 10-15 problems
- Topological Sort (2-3 hours)
- Practice: 5-10 problems
- Dynamic Programming (15-20 hours)
- Learn fundamentals (Fibonacci, Knapsack)
- Practice: 20-30 problems
- Greedy Algorithms (8-10 hours)
- Learn strategy and common problems
- Practice: 15-20 problems
- Key Topics to Deep Dive (30-40 hours)
- Trees (12-15 hours)
- Study advanced trees like AVL, Red-Black
- Practice: 15-20 problems
- Graphs (10-12 hours)
- Focus on weighted/unweighted graphs
- Practice: 15-20 problems
- Hashing (5-6 hours)
- Focus on hash tables, collision resolution
- Practice: 10-15 problems
- Heaps (3-4 hours)
- Practice: 10-15 problems
- Practical Skills (20-25 hours)
- Coding Platforms (10-12 hours)
- Spend time on LeetCode, Codeforces, etc.
- Solve 50-100 questions across different difficulties
- System Design Basics (5-8 hours)
- Learn concepts like scalability, caching
- Implementations in Popular Languages (6-8 hours)
- Focus on C++, Python
- Evaluation and Interview Prep (35-50 hours)
- Mock Interviews (15-20 hours)
- Participate in mock interviews and coding challenges
- Common DSA Problems (20-30 hours)
- Practice problems like array manipulation, tree traversal, etc.