Roadmap — basic → advanced শেখার ক্রম¶
এই file হলো বড় ছবি: কোন topic আগে, কোনটা পরে, আর কোনটা কীসের উপর দাঁড়িয়ে। "আজ কী করব" জানতে চাইলে STUDY-PLAN.md (সপ্তাহ-ভিত্তিক রুটিন); "আমি কোথায় আছি, এরপর কোথায়" বুঝতে চাইলে এই file।
দুটো roadmap আছে, কারণ এদের কাজ আলাদা:
- STUDY-PLAN.md = সময়ের ম্যাপ (Week 1, Week 2 … ৪ মাসের deadline ধরে)।
- roadmap.md (এই file) = নির্ভরতার ম্যাপ (কোন idea কোন idea-র জন্য দরকার)।
মূল নীতি¶
- ভিত্তি আগে। Array আর hashing শক্ত না হলে graph/DP কিছুই দাঁড়াবে না।
- প্রতিটা topic আগেরটার কাঁধে দাঁড়ায়। নিচের তীরচিহ্ন (→) সেই নির্ভরতা দেখায়।
- Interview-first। ৪ মাসের জন্য কিছু গভীর CP topic ইচ্ছে করে পরে রাখা — নিচে "পরে" বলে চিহ্নিত।
- পড়া ≠ শেখা। একটি ছোট problem নিজে solve করে যুক্তি বুঝিয়ে বলো; দুর্বল জায়গায় আরও অনুশীলন করো।
পড়ার পথ (এক নজরে)¶
flowchart TD
basics["১ · Python, loop, index, complexity"] --> arrays["২ · Array ও string"]
arrays --> linear["৩–৫ · Linked list, stack, queue, hashing"]
linear --> recursion["৬ · Recursion ও backtracking"]
recursion --> treeheap["৭–৮ · Tree ও heap"]
treeheap --> graphs["৯–১০ · Graph ও DSU"]
recursion --> dp["১২ · Dynamic programming"]
graphs --> mixed["১৩ · মিশ্র problem ও mock"]
dp --> mixed
mixed -. "প্রয়োজন হলে" .-> ranges["১১ · Segment ও Fenwick tree"]তীর প্রস্তাবিত পড়ার ক্রম দেখায়; প্রতিটি অধ্যায়ের সুনির্দিষ্ট prerequisite নিচে আছে। এটি বাধ্যতামূলক একটিমাত্র পথ নয়। যেমন, সাধারণ 1D DP শেখার আগে পুরো graph অধ্যায় শেষ করতে হয় না; DP on DAG-এর জন্য graph দরকার। প্রথম array lesson-এর আগে advanced math শেষ করারও প্রয়োজন নেই।
ধাপে ধাপে ক্রম¶
ভিত্তি (এখান থেকে শুরু)¶
- 01 Math fundamentals — Level 0 থেকে 8। সংখ্যা নিয়ে কাজ,
%ও//, prime/GCD, modular arithmetic, bit manipulation, prefix sum, two pointers, sliding window, binary search on answer, greedy — এই শেষ পাঁচটা সরাসরি interview-এর রুটি-রুজি। Level 9-11 (geometry, advanced number theory, hard mixed) interview-এর জন্য পরে। - নির্ভরতা: কিছু না — একদম শুরু।
-
নিজস্ব roadmap: 01-…/roadmap.md (১৫০টা problem-এর পূর্ণ তালিকা)।
-
02 Arrays & Strings। সব কিছুর ভিত্তি data structure। two pointers, sliding window, prefix sum, Kadane।
-
নির্ভরতা: Math Level 5 (prefix), 6 (two pointers), 7 (binary search)।
-
05 Hashing। গড়ে O(1) lookup। frequency count, complement (Two Sum), grouping, prefix-sum + hashmap।
- নির্ভরতা: 02।
রৈখিক (linear) data structure ও recursion¶
- 03 Linked List। pointer-এ হাত পাকানো; slow/fast pointer, reversal, merge।
-
নির্ভরতা: 02।
-
04 Stack & Queue। bracket matching, monotonic stack (next greater), monotonic deque (sliding window maximum), BFS frontier।
-
নির্ভরতা: 02-এর list ও index; linked list দিয়ে implementation বুঝতে 03 কাজে লাগবে। সামনে graph (09)-এ queue লাগবে।
-
06 Recursion & Backtracking। call stack, "leap of faith", subsets, permutations, combinations, N-Queens। DP-র সরাসরি পূর্বসূরি।
- নির্ভরতা: Math Level 3 (counting); সামনে tree (07) ও DP (12)।
অরৈখিক (non-linear) data structure¶
- 07 Trees। traversal (in/pre/post/level order), BST, height/diameter, LCA।
-
নির্ভরতা: 06 (recursion), 04 (level order-এ queue)।
-
08 Heap / Priority Queue। top-K, k-way merge, two heaps (running median)।
-
নির্ভরতা: 07 (tree-আকৃতির ধারণা), Math Level 8 (greedy)।
-
09 Graphs। BFS, DFS, connected components, Dijkstra, topological sort।
-
নির্ভরতা: 04 (queue/stack), 06 (DFS = recursion), 08 (Dijkstra-তে heap)।
-
10 Disjoint Set Union। union-find, cycle detection, Kruskal-এর সাথে সংযোগ।
- নির্ভরতা: 09।
advanced ও interview রূপান্তর¶
-
12 Dynamic Programming। পুনরাবৃত্ত subproblem চেনার কৌশল। state → transition, memo vs tabulation, 1D/grid/knapsack/LIS/LCS/edit distance।
- নির্ভরতা: 06 (recursion), Math Level 4 (bit, bitmask DP-র জন্য), 09 (DP on DAG)।
-
13 Interview Master Problems। ২-৩টা idea মেশানো cross-topic problem; mock format (clarify → brute → optimize → code → test), Amazon/Google/Microsoft-style।
- নির্ভরতা: উপরের প্রায় সব।
CP-গভীর (অফার পাওয়ার পরে)¶
- 11 Segment Tree & Fenwick Tree। update-সহ range query। competitive programming-এ দরকারি, কিন্তু ৪ মাসের interview timeline-এ optional — পরে এসো।
- নির্ভরতা: 02 (array), 06 (recursion), Math Level 4-5।
Interview-critical বনাম পরে-রাখা (৪ মাসের জন্য)¶
| অবশ্যই (core) | পরে রাখো (অফারের পরে) |
|---|---|
| Arrays, strings, hashing | Segment tree / Fenwick (ch 11) |
| two pointers, sliding window | Math Level 9 (geometry) |
| binary search (on answer সহ) | Math Level 10 (advanced number theory) |
| linked list, stack/queue, monotonic stack | Math Level 11 (game theory, Burnside…) |
| recursion, backtracking | SCC, flow, string matching গভীরতা |
| trees, heaps | matrix expo, digit DP, DP optimizations |
| BFS/DFS/Dijkstra/topo sort, DSU | |
| dynamic programming (গভীরভাবে) |
সপ্তাহ পিছিয়ে গেলে আগে bitmask/tree-DP/Dijkstra-র গভীরতা কাটো — কিন্তু কখনো binary search, sliding window, DP-core, বা mock কাটবে না। বিস্তারিত কাট-লিস্ট: STUDY-PLAN.md।
কীভাবে অগ্রগতি মাপবে¶
- প্রতিটা level/topic-এর
problems/README.md-তে tracker আছে — solve করলেplanned→done। - প্রতি মাস শেষে milestone (cumulative solved সংখ্যা) STUDY-PLAN.md-এর Milestones টেবিলে।
- লক্ষ্য সংখ্যা নয়, নির্ভুলতা ও গতি — একটা Medium ৩০-৪০ মিনিটে পরিষ্কার ভেবে, কথা বলতে বলতে solve করতে পারা।