1. ভূমিকা (Introduction)
- ডেটা স্ট্রাকচার ও এলগরিদম কী?
- টাইম কমপ্লেক্সিটি এবং স্পেস কমপ্লেক্সিটি (Big O Notation, Omega, Theta)
- ইটারেশন বনাম রিকারশন (Recursion)
- কার্যকারিতা এবং অপ্টিমাইজেশনের গুরুত্ব
2. বেসিক ডেটা স্ট্রাকচার (Basic Data Structures)
a. Arrays (List in Python)
- অ্যারে কী এবং কীভাবে কাজ করে
- টাইম কমপ্লেক্সিটি: অ্যাক্সেস, সার্চ, ইনসার্ট, ডিলিট
- অ্যারে ভিত্তিক এলগরিদম: Linear Search, Binary Search
b. Strings
- স্ট্রিং ম্যানিপুলেশন (Reverse, Palindrome, Anagram)
- স্ট্রিং সার্চিং এলগরিদম: Naive Search, KMP Algorithm
c. Linked Lists
- Singly Linked List (Insert, Delete, Traverse)
- Doubly Linked List (Insert, Delete, Traverse)
- Circular Linked List
- লিংকড লিস্ট ভিত্তিক এলগরিদম: Floyd’s Cycle Detection, Reverse Linked List
d. Stacks
- স্ট্যাক কী এবং কোথায় ব্যবহার হয়
- স্ট্যাক অপারেশন: Push, Pop, Peek
- স্ট্যাক ব্যবহার করে সমস্যার সমাধান: Balanced Parentheses, Infix to Postfix
e. Queues
- কিউ কী এবং কোথায় ব্যবহার হয়
- টাইপস: Simple Queue, Circular Queue, Priority Queue, Deque
- কিউ ভিত্তিক সমস্যার সমাধান: Implementing a Queue using Stack, BFS Algorithm
3. অ্যাডভান্সড ডেটা স্ট্রাকচার (Advanced Data Structures)
a. Trees
- Binary Tree, Binary Search Tree (BST)
- Traversal Methods (Inorder, Preorder, Postorder, Level Order)
- AVL Tree (Balanced BST)
- Tree Based Problems: Lowest Common Ancestor, Diameter of a Tree
b. Heaps
- Max Heap, Min Heap
- Priority Queue with Heap
- Heap Sort
- Heap ভিত্তিক সমস্যার সমাধান: Merge K Sorted Arrays, Top K Frequent Elements
c. Hashing
- Hash Table এবং Hash Functions
- Collisions এবং তাদের সমাধান (Chaining, Open Addressing)
- HashMap ভিত্তিক সমস্যার সমাধান: Two Sum Problem, Longest Substring Without Repeating Characters
d. Graphs
- Representation (Adjacency Matrix, Adjacency List)
- গ্রাফ ট্রাভার্সাল এলগরিদম: DFS, BFS
- Minimum Spanning Tree: Kruskal’s Algorithm, Prim’s Algorithm
- Shortest Path Algorithm: Dijkstra’s Algorithm, Bellman-Ford Algorithm
4. সার্চিং এবং সর্টিং এলগরিদম (Searching and Sorting Algorithms)
- Linear Search, Binary Search
- Sorting Techniques: Bubble Sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort, Heap Sort
- Searching and Sorting Based Problems: Find Kth Largest Element, Merge Two Sorted Arrays
5. রিকারশন এবং ব্যাকট্র্যাকিং (Recursion and Backtracking)
- Recursion কীভাবে কাজ করে (Base Case, Recursive Case)
- Backtracking Introduction
- Problems: N-Queens Problem, Rat in a Maze, Subset Sum
6. ডায়নামিক প্রোগ্রামিং (Dynamic Programming)
- Memoization এবং Tabulation
- DP এর ক্লাসিক্যাল সমস্যাগুলো: Fibonacci, Longest Common Subsequence, 0/1 Knapsack, Coin Change
- DP অপ্টিমাইজেশনের কৌশল: Space Optimization
7. গ্রিড এবং ম্যাট্রিক্স (Grid and Matrix Problems)
- Matrix Traversal Techniques
- Problems: Unique Paths, Word Search, Rotate Matrix
8. স্ট্রিং এলগরিদম (Advanced String Algorithms)
- String Matching: Rabin-Karp, Boyer-Moore Algorithm
- Z Algorithm, Suffix Array, Suffix Tree
- Problems: Longest Palindromic Substring, String Compression
9. গ্রাফ থিওরি (Advanced Graph Theory)
- Strongly Connected Components (Tarjan’s Algorithm)
- Graph Coloring
- Problems: Traveling Salesman Problem, Maximum Flow (Ford-Fulkerson)
10. এলগরিদম ডিজাইন টেকনিকস (Algorithm Design Techniques)
- Divide and Conquer
- Greedy Algorithms
- Dynamic Programming
- Problems: Job Scheduling, Huffman Coding
11. ট্রি এবং গ্রাফ ভিত্তিক সমস্যার সমাধান (Tree and Graph Based Problems)
- LCA in a Binary Tree
- Articulation Points, Bridges in Graphs
- Euler Tour Technique
12. কম্প্লেক্স এলগরিদম (Complex Algorithms)
- Segment Tree
- Fenwick Tree (Binary Indexed Tree)
- Suffix Array Construction
- Heavy Light Decomposition (HLD)
13. কম্পিউটেশনাল জিওমেট্রি (Computational Geometry)
- Convex Hull Algorithm (Graham’s Scan, Jarvis’s March)
- Line Intersection
- Closest Pair of Points
14. গেম থিওরি (Game Theory)
- Minimax Algorithm
- Alpha-Beta Pruning
- Problems: Tic-Tac-Toe, Nim Game
15. এনপী-কমপ্লিটনেস এবং এনপী-হার্ড সমস্যাসমূহ (NP-Completeness and NP-Hard Problems)
- P vs NP Problem
- Cook-Levin Theorem
- Reductions: Vertex Cover, Traveling Salesman Problem
16. অনুশীলনের জন্য বিখ্যাত সমস্যা (Famous Problem Solving Platforms)
- LeetCode
- Codeforces
- HackerRank
- GeeksforGeeks
অনুশীলন টিপস:
- প্রতি টপিক শেখার পর সেগুলোর উপর অনুশীলন করুন।
- প্রতি সমস্যার টাইম ও স্পেস কমপ্লেক্সিটি বিশ্লেষণ করুন।
- প্রতিদিন নিয়মিতভাবে সমস্যা সমাধানের মাধ্যমে দক্ষতা বাড়ান।
এই সিলেবাসটি যথাযথভাবে অনুসরণ করলে একজন শিক্ষার্থী ডেটা স্ট্রাকচার এবং এলগরিদমে পর্যাপ্ত দক্ষতা অর্জন করতে সক্ষম হবে।