DSA Study plan

Topics

  1. Dynamic Programming

    1. Top-down (Memorization)

    2. Bottom-up (Tabulation)

  2. Divide and Conquer

  3. Sorting Algorithms

    1. Bubble Sort

    2. Quick Sort

    3. Merge Sort

  4. Searching Algorithms

    1. Linear Search

    2. Binary Search

  5. String Matching Algorithms

    1. Z Algorithm

    2. Rabin-Karp Algorithm

    3. Knuth-Morris-Pratt (KMP) Algorithm

  6. Greedy Algorithms

  7. Graph Algorithms

    1. BFS

    2. DFS

  8. Dijkstra’s Algorithm

    1. Kruskal

    2. Prims

  9. Dynamic Programming (Additional)

    1. Kadane’s Algorithm

    2. Bellman-Ford

    3. Floyd-Warshall

  10. Data Structures

    1. Arrays

    2. Matrices

    3. Strings

    4. Linked Lists

    5. Binary Trees

    6. Binary Search Trees

    7. Stacks

    8. Queues

    9. Heaps

    10. TRIEs

  11. Bit Manipulation

Weekly study topic

Week 1-2: Dynamic Programming

  • Days 1-3: Dynamic Programming Basics

    • Study the principles of dynamic programming (DP).

    • Implement simple DP problems.

    • Focus on top-down (memorization) approach.

  • Days 4-7: Bottom-up DP and Advanced Concepts

    • Learn the bottom-up (tabulation) approach.

    • Explore more complex DP problems.

    • Practice solving problems related to optimal substructure.

Week 3-4: Divide and Conquer

  • Days 8-14: Divide and Conquer Algorithms

    • Understand the divide-and-conquer paradigm.

    • Solve problems that involve recursive division and merging.

    • Implement algorithms like merge sort and quicksort.

Week 5-6: Sorting and Searching

  • Days 15-21: Sorting Algorithms

    • Study bubble sort, merge sort, and quicksort.

    • Analyze their time complexity.

    • Implement and compare these sorting techniques.

  • Days 22-28: Searching Algorithms

    • Learn linear search and binary search.

    • Practice solving search-related problems.

Week 7-8: String Algorithms

  • Days 29-35: String Matching Algorithms

    • Dive into Z Algorithm, Rabin-Karp Algorithm, and KMP Algorithm.

    • Understand their applications in string matching.

    • Solve problems related to pattern searching.

Week 9-10: Greedy Algorithms

  • Days 36-42: Greedy Approach

    • Explore greedy algorithms.

    • Understand when and how to apply greedy strategies.

    • Solve problems involving greedy choices.

Week 11-12: Graph Algorithms

  • Days 43-49: BFS and DFS

    • Study breadth-first search (BFS) and depth-first search (DFS).

    • Implement graph traversal algorithms.

  • Days 50-56: Shortest Path Algorithms

    • Learn Dijkstra’s algorithm.

    • Explore Kruskal and Prim’s algorithms for minimum spanning trees.

Week 13: Review and Mock Tests

  • Days 57-63: Revision and Practice

    • Review all topics covered so far.

    • Solve problems from previous weeks.

  • Days 64-70: Mock Tests

    • Take mock exams to simulate real conditions.

    • Identify areas for improvement.

Week 14: Final Preparation

  • Days 71-77: Dynamic Programming (Advanced)

    • Cover additional DP topics (e.g., Kadane’s Algorithm, Bellman-Ford, Floyd-Warshall).

  • Days 78-84: Data Structures and Bit Manipulation

    • Revise data structures (arrays, matrices, strings, trees, etc.).

    • Understand bit manipulation.