ভূমিকা
ভালো প্রোগ্রামার হতে গেলে দরকার হচ্ছে অনুসন্ধিৎসু মন। এটি অবশ্য কেবল প্রোগ্রামিংয়ের ক্ষেত্রেই নয়, বরং আরো অনেক ক্ষেত্রেই দরকার। বাংলাদেশে থাকার সময় যখন গণিত অলিম্পিয়াডের স্বেচ্ছাসেবক হিসেবে বিভিন্ন জায়গায় ঘুরে বেড়াতাম, সেখানে স্কুল-কলেজপড়ুয়া ছেলেমেয়েরা আমার কাছে প্রোগ্রামিং নিয়ে জানতে চাইত। তাদের সেই জানার আগ্রহ আমাকে মুগ্ধ করলেও তারা ঠিক কোন বই পড়ে প্রোগ্রামিং শুরু করবে, সেই প্রশ্নের সঠিক উত্তর আমার জানা ছিল না, কারণ আমাদের দেশের স্কুলের শিক্ষার্থীদের পক্ষে একটি ইংরেজি বই দিয়ে প্রোগ্রামিং শেখাটা বেশ কঠিনই বটে। তাই তাদের জন্য ২০০৯ সালে একটি বই লেখা শুরু করি এবং ২০১১ সালে সেটি প্রকাশিত হয়, কম্পিউটার প্রোগ্রামিং নামে। তার কয়েক মাস পরে http://cpbook.subeen.com ওয়েবসাইটে আমি বইটি সবার জন্য উন্মুক্ত করে দিই। কিন্তু শিক্ষার্থীদের জানার ও শেখার আগ্রহ যেন আরো বেড়ে গেল। প্রোগ্রামিংয়ের বেসিক তো শিখলাম, কিন্তু আরো ভালোভাবে সি শিখব কীভাবে? এই প্রশ্নের উত্তর দেওয়ার জন্য লিখে ফেললাম, কম্পিউটার প্রোগ্রামিং ২য় খণ্ড। বইটি ২০১৬ সালে প্রকাশিত হয়।
এর মধ্যে বাংলাদেশের স্কুল-কলেজের শিক্ষার্থীদের মধ্যে প্রোগ্রামিং ধীরে ধীরে জনপ্রিয় হয়ে উঠছে। তারা বিভিন্ন প্রোগ্রামিং প্রতিযোগিতায় অংশগ্রহণ করে। প্রোগ্রামিং প্রতিযোগিতার অনেক সমস্যার সমাধান করতেই ডেটা স্ট্রাকচার ও অ্যালগরিদম বিষয়টি জানা প্রয়োজন। তাই আমার কম্পিউটার প্রোগ্রামিং ১ম খণ্ড ও ২য় খণ্ড বইয়ের পাঠকদের ডেটা স্ট্রাকচার ও অ্যালগরিদম-এর সঙ্গে পরিচয় করিয়ে দেওয়ার জন্যই এই বইটি লিখলাম। আশা করি, বইটি পড়লে প্রোগ্রামিংয়ের সৌন্দর্য শিক্ষার্থীদের মধ্যে নতুনভাবে ধরা দেবে, তাদের মধ্যে যৌক্তিক চিন্তাভাবনার ভিত গড়ে উঠবে এবং তারা একটু অন্যভাবে ভাবতে শিখবে। আমি যেহেতু বইটি স্কুল-কলেজের শিক্ষার্থীদের জন্য লিখেছি, তাই বইটি যারা পড়বে, তারা যে সবাই ভবিষ্যতে কম্পিউটার বিজ্ঞান বিষয়ে পড়বে এমনটি আমি আশা করি না, চাইও না। বিভিন্ন শিক্ষার্থী বিভিন্ন বিষয়ে উচ্চশিক্ষা গ্রহণ করবে, তাদের নিজেদের পছন্দ বিবেচনা করে ও অভিভাবকের সঙ্গে আলোচনা সাপেক্ষে। কিন্তু তারা ভবিষ্যতে যে বিষয়েই লেখাপড়া করুক না কেন, প্রোগ্রামিংয়ের এই জ্ঞান ও চর্চা তাদের নিঃসন্দেহে অন্যরকম মানুষ হিসেবে গড়ে তুলবে। তবে একথা বলে নেওয়া দরকার যে, ডেটা স্ট্রাকচার ও অ্যালগরিদম বিষয়টির ব্যাপ্তি অনেক বেশি। এই বইতে কেবল খুব প্রচলিত ও সহজ কিছু ডেটা স্ট্রাকচার ও অ্যালগরিদমের সঙ্গে শিক্ষার্থীদের পরিচয় করিয়ে দেওয়ার চেষ্টা করেছি। ভবিষ্যতে তারা কম্পিউটার বিজ্ঞান বিষয়ে আরো লেখাপড়া করলে, আরো অনেক ডেটা স্ট্রাকচার ও অ্যালগরিদম সম্পর্কে জানতে পারবে।
এই বইটি কম্পিউটার প্রোগ্রামিং সিরিজের তৃতীয় ও শেষ খণ্ড। ভবিষ্যতে এই সিরিজে আমার আর কোনো বই লেখার পরিকল্পনা নেই, তবে বর্তমান বইগুলোকে আরো উন্নততর করার প্রয়াস অব্যাহত রাখব। আর বাংলাদেশে বিভিন্ন বিশ্ববিদ্যালয়ে যেসব শিক্ষার্থী কম্পিউটার বিজ্ঞান পড়বে, তারা যদি স্কুল-কলেজে পড়ার সময়ই কম্পিউটার প্রোগ্রামিং বইয়ের তিনটি খণ্ড পড়ে ফেলে, তাহলে বাংলাদেশের প্রযুক্তির জগতে যে অভাবনীয় পরিবর্তন ঘটবে, তা ভাবতেই আমি শিহরিত হচ্ছি।
বইটি লেখার ব্যাপারে অনেকেই প্রত্যক্ষ ও পরোক্ষভাবে সহযোগিতা করেছেন। দ্বিমিক প্রকাশনীর তাহমিদ রাফি বইটি রিভিউ করার পাশাপাশি সম্পাদনাও করেছেন। এ ছাড়া শাহজালাল বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয়ের শিক্ষক এবং বর্তমানে যুক্তরাষ্ট্রে পিএইচডি অধ্যয়নরত শহীদুল ইসলাম (সুমন) ও রুহুল আমীন (সজীব) অনেক গুরুত্বপূর্ণ মতামত দিয়েছেন। এ ছাড়া ন্যাশনাল ইউনিভার্সিটি অব সিঙ্গাপুরের কোয়ান্টাম কম্পিউটার বিজ্ঞানী তানভীরুল ইসলাম এবং বাংলাদেশের তরুণ সফটওয়্যার নির্মাতা আবু আশরাফ মাসনুনের কাছেও আমি কৃতজ্ঞ। বরাবরের মতো আমার স্ত্রী সিরাজুম মুনিরা (পারমিতা) বেশিরভাগ সময় আমাদের ছেলের দেখাশোনা করার দায়িত্ব নিজের ঘাড়ে নেওয়ায় বইটি লেখার জন্য আমার পক্ষে সময় বের করা সম্ভব হয়েছে। তাই আমার ও এই বইয়ের হবু পাঠকদের পক্ষ থেকে তাকেও ধন্যবাদ জানাই।
বাংলাদেশের তরুণরা এখনো শিক্ষায়, জ্ঞানে ও দক্ষতায় উন্নত বিশ্বের চেয়ে অনেক পিছিয়ে আছে। কিন্তু একদিন তারা বিশ্বমানের হবে। সেই অনাগত দিনের অপেক্ষায় রইলাম।
তামিম শাহরিয়ার সুবিন,
গ্র্যাব ইঞ্জিনিয়ারিং হেডকোয়ার্টার, সিঙ্গাপুর।
সূচীপত্র
ভূমিকা
লেখক পরিচিতি
অধ্যায় ১ : ডেটা স্ট্রাকচার (Data Structure) ও অ্যালগরিদম (Algorithm)
- ডেটা স্ট্রাকচার (Data Structure)
- অ্যালগরিদম (Algorithm)
- ডেটা স্ট্রাকচার ও অ্যালগরিদম কেন শিখব?
- বইটি কাদের জন্য এবং কীভাবে পড়তে হবে?
অধ্যায় ২ : টাইম ও স্পেস কমপ্লেক্সিটি (Time & Space Complexity)
- টাইম কমপ্লেক্সিটি (Time Complexity)
- স্পেস কমপ্লেক্সিটি (Space Complexity)
- কিছু উদাহরণ
অধ্যায় ৩ : সার্চিং অ্যালগরিদম (Searching Algorithm)
- লিনিয়ার সার্চ (Linear search)
- বাইনারি সার্চ (Binary Search)
অধ্যায় ৪ : সর্টিং অ্যালগরিদম (Sorting Algorithm)
- সিলেকশন সর্ট (Selection sort)
- বাবল সর্ট (Bubble sort)
- ইনসার্শন সর্ট (Insertion sort)
অধ্যায় ৫ : স্ট্যাক (Stack) ও কিউ (Queue)
- স্ট্যাক (Stack)
- কিউ (Queue)
অধ্যায় ৬ : লিংকড লিস্ট (Linked List)
- লিংকড লিস্টের ধারণা
- সি দিয়ে লিংকড লিস্ট তৈরি
- ডবলি লিংকড লিস্ট
- লিংকড লিস্টের ব্যবহার
অধ্যায় ৭ : ট্রি (Tree)
- বাইনারি ট্রি
- ট্রি ট্রাভার্স করা
অধ্যায় ৮ : বাইনারি সার্চ ট্রি
অধ্যায় ৯ : হিপ, হিপ সর্ট ও প্রায়োরিটি কিউ
- হিপ
- হিপ সর্ট
- প্রায়োরিটি কিউ (Priority Queue)
অধ্যায় ১০ : হ্যাশ টেবিল
অধ্যায় ১১ : আরো সর্টিং অ্যালগরিদম
- মার্জ সর্ট (Merge sort)
- কুইক সর্ট (Quick Sort)
- কাউন্টিং সর্ট (Counting sort)
Reviews
There are no reviews yet.