About Course
“Problem Solving with Data Structures & Algorithms for Beginners” এই কোর্সটি দিয়েই শুরু হোক আপনার ডেভেলপমেন্ট ক্যারিয়ার।
কম্পিউটার সায়েন্স এর সবচেয়ে কমন এবং মৌলিক বিষয় হচ্ছে প্রব্লেম সলভিং। আপনার ব্যাকগ্রাউন্ড যেমনি হোক না কেন, আপনি যদি আইটি সেক্টর বিশেষ করে সফটওয়্যার ডেভেলোপমেন্ট সেক্টরে ভাল একটা ক্যারিয়ার করার ইচ্ছা থাকে তাহলে আপনাকে অবশ্যই অবশ্যই ক্রিয়েটিভিটি বাড়াতে নতুন নতুন প্রব্লেম সল্ভ করতে হবে। সেক্ষেত্রে আপনার জন্য সবচেয়ে জরুরী হল প্রোগ্রামিং স্কিল বাড়ানো, ভাল মানের একজন ডেভেলপার হিসেবে নিজেকে গড়তে হলে আপনাকে প্রোগ্রামিং স্কিলের মাধ্যমে রিয়েল লাইফ প্রব্লেম সলভ করতে হবে প্রতিনিয়ত। এই কাজটি আপনি তখনই করতে পারবেন যখন কোডিং এর পাশাপাশি ভাল ভাবে ডাটা স্ট্রাকচার এবং অ্যালগোরিদম বেজটাকে পোক্ত করতে পারবেন।
দুঃখের সাথে বলতে হচ্ছে বর্তমানে আমরা অনেকেই এসব ফান্ডামেন্টাল বিষয়গুলো আয়ত্ত না করেই বিভিন্ন ট্রেনিং সেন্টারে গিয়ে সফটওয়্যার ডেভেপমেন্ট শেখা শুরু করে দেই কিন্তু এতে দীর্ঘমেয়াদী কোন লাভ হয় না বরং আপনার লার্নিং প্রসেসটা ক্ষতিগ্রস্ত হয় এবং ভবিষ্যতেও এই লার্নিং গ্যাপ গুলো যথেষ্ট ভোগাবে। ২-৩ বছর পর আপনি নিজেই আপনার প্রোগ্রামিং প্রবলেম সল্ভিং ডাটা স্ট্রাকচার এ যে ল্যাকিংস ছিল সেটা ফিল করতে পারবেন, তখন আপনাকে আবার প্রথম থেকে এগুলো শিখতে হবে আর যদি আপনার ড্রিম থাকে যে
Google, Microsoft, Facebook, Amazon এর মত প্রডাক্টবেইজ মাল্টিন্যাশনাল কোম্পানি গুলো কিংবা দেশের টপ লেভেল এর সফটওয়্যার কোম্পানী গুলোতে জব করবেন, সেই ক্ষেত্রে আপনি যদি একটু কষ্ট করে, তাদের হায়ারিং বা রিক্রুটমেন্ট প্রসেসটা একবার দেখেন তাহলেই একটা ব্যাপার আপনার কাছে ক্লিয়ারখয়ে যাবে যে, প্রোগ্রামিং , প্রব্লেম সল্ভিং, কম্পিটিটিভ প্রোগ্রামিং , ডাটা স্ট্রাকচার অ্যালগোরিদম এসব শেখা ছাড়া কোন ওয়েই নাই।
কারণ গুগল, ফেসবুক, মাইক্রোসফটের মত জায়ান্টরা মূলত দেখে কোন ক্যান্ডিডেট কত ইফিশিয়েন্ট ওয়েতে প্রব্লেম সল্ভ করছে, কত কম সময়ে করছে এবং কে সবচেয়ে সহজ উপায়ে সল্ভ করছে। অর্থাৎ তাদের মূল ফোকাস প্রব্লেম সল্ভিং এর ধরণের উপর।আর এই প্রতিটি বিষয়ই ডিপেন্ড করে ডাটা স্ট্রাকচার ও অ্যালগোরিদমে আপনার দখল কতটুকু তার উপর।
তাই যারা Computer Science ব্যাকগ্রাউন্ডের বা এর বাইরে থেকেও প্রোগ্রামিং বা সফটওয়্যার ডেভেলপমেন্ট সেক্টরে ভাল করতে চান , এবং আপনার যদি ওয়েব কিংবা মোবাইল এপ্লিকেশন ডেভেলোপমেন্ট , ডাটা সায়েন্স , আর্টিফিশিয়াল ইন্টেলিজেন্স এধরেনের সেক্টর গুলোতে কাজ করার ইন্টারেস্ট থাকে তাহলে সবার ফার্স্টেই আপনার উচিত হবে প্রোগ্রামিং টা ভাল ভাবে আয়ত্ত করে এরপর ডাটা স্ট্রাকচার অ্যালগোরিদম , প্রব্লেম সল্ভিং, কম্পিটিটিভ প্রোগ্রামিং এ নিজেকে স্কিল্ড করে তোলা ।
এসব কথা চিন্তা করেই, “Problem Solving with Data Structures & Algorithms for Beginners” নামে ফ্রি এই কোর্সটি নিয়ে এসেছে এনকোডেমী, যাতে করে আপনারা যারা সফটওয়্যার ইঞ্জিনিয়ার হওয়ার সপ্ন দেখছেন, তারা ডেভেলপমেন্টে যাওয়ার আগেই প্রোগ্রামিং , প্রব্লেম সল্ভিং, কম্পিটিটিভ প্রোগ্রামিং , ডাটা স্ট্রাকচার এবং অ্যালগোরিদম শিখে নিজের বেইজ টাকে স্ট্রং করে নিতে পারেন।
এই কোর্সটীকে আমি এমন ভাবে সাজিয়েছি যাতে করে একদম বিগিনিং লেভেল থেকে শুরু করে যেকেউই খুব সহজে প্রোগ্রামিং শিখার সাথে সাথে কিভাবে কম্পিটিটিভ প্রোগ্রামিং এ পার্টিসিপেট করতে হয়, কিভাবে অনলাইন জ্যাজ থেকে প্রব্লেম বুঝে সেটা সল্ভ করতে হয়, কিভাবে ডাটা স্ট্রাকচার এবং এলগোরিদম অ্যাপ্লাই করে প্রব্লেম সল্ভ করা যায় , এসব কিছু শিখে নিজেকে একজন বিগিনার লেভেল থেকে ইন্টারমিডিয়েট লেভেলে নিয়ে যেতে পারে এবং আপনার এই দক্ষতা কে কিভাবে আরো বাড়ানো যায় সেটার ও একটা দিক নির্দেশনা পাবেন এই কোর্সে।
কিভাবে শিখিয়েছি আমি এই কোর্সে?
- প্রতিটা টপিক অর্থাৎ ডাটা স্ট্রাকচার ও অ্যালগরিদম প্রথমে ভিজুয়ালাইজ ( দার্শনিক উপস্থাপন) করা হয়েছে |
- তারপর সি প্লাস প্লাস প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করে তা কোড করা হয়েছে |
- সবশেষে সেই ডাটা স্ট্রাকচার অ্যালগোরিদমের উপর লাইভ প্রবলেম সলভ করা হয়েছে |
আমরা “Practice makes a man perfect” – এই নীতিতে বিশ্বাসী | তাই একাডেমিকভাবে টপিকগুলো শেখানোর মধ্যে শুধু সীমাবদ্ধ থাকিনি সেগুলোর বাস্তব প্রয়োগ দেখিয়েছি |
এই কোর্সে যে বিষয়গুলো শেখানো হয়েছে
- সি প্লাস প্লাস প্রোগ্রামিং ল্যাংগুয়েজের বেসিক ধারণা
- ডাটা টাইপ
- ভেরিয়েবল
- ইনপুট / আউটপুট
- If else কন্ডিশনাল
- For এবং while লুপ
- ফাংশন
- Array
- কিছু গুরুত্বপূর্ণ ডাটা স্ট্রাকচার
- Vector
- Set
- String
- Map
- Pair
- Stack
- Queue
- কিছু গুরুত্বপূর্ণ অ্যালগোরিদম ও টেকনিক
- Searching অ্যালগরিদম
- Linear Search
- Binary Search
- Array Reverse
- Sorting অ্যালগরিদম
- Bubble Sort
- Insertion Sort
- Greedy অ্যালগরিদম
- Recursion
- Basic Dynamic Programming
- Complexity Analysis
এছাড়াও প্রতিটি টপিক শেখার সাথে সাথে সেই রিলেটেড এক বা একাধিক প্রবলেম আমরা সলভ করেছি |
কোর্সটি করার জন্য আগে থেকে যা জানা লাগবে
- ‘সি ‘প্রোগ্রামিং ল্যাংগুয়েজের বেসিক ধারণা
- ‘ সি প্লাস প্লাস ‘ প্রোগ্রামিং ল্যাঙ্গুয়েজ ( ধারনা থাকলে ভালো না থাকলেও চলবে)
Course Content
1.Introduction
-
00:00