ভূমিকা ভালো প্রোগ্রামার হতে গেলে দরকার হচ্ছে অনুসন্ধিৎসু মন। এটি অবশ্য কেবল প্রোগ্রামিংয়ের ক্ষেত্রেই নয়, বরং আরো অনেক ক্ষেত্রেই দরকার। বাংলাদেশে থাকার সময় যখন গণিত অলিম্পিয়াডের স্বেচ্ছাসেবক হিসেবে বিভিন্ন জায়গায় ঘুরে বেড়াতাম, সেখানে স্কুল-কলেজপড়ুয়া ছেলেমেয়েরা আমার কাছে প্রোগ্রামিং নিয়ে জানতে চাইত। তাদের সেই জানার আগ্রহ আমাকে মুগ্ধ করলেও তারা ঠিক কোন বই পড়ে প্রোগ্রামিং শুরু করবে, সেই প্রশ্নের সঠিক উত্তর আমার জানা ছিল না, কারণ আমাদের দেশের স্কুলের শিক্ষার্থীদের পক্ষে একটি ইংরেজি বই দিয়ে প্রোগ্রামিং শেখাটা বেশ কঠিনই বটে। তাই তাদের জন্য ২০০৯ সালে একটি বই লেখা শুরু করি এবং ২০১১ সালে সেটি প্রকাশিত হয়, কম্পিউটার প্রোগ্রামিং নামে। তার কয়েক মাস পরে http://cpbook.subeen.com ওয়েবসাইটে আমি বইটি সবার জন্য উন্মুক্ত করে দিই। কিন্তু শিক্ষার্থীদের জানার ও শেখার আগ্রহ যেন আরো বেড়ে গেল। প্রোগ্রামিংয়ের বেসিক তো শিখলাম, কিন্তু আরো ভালোভাবে সি শিখব কীভাবে? এই প্রশ্নের উত্তর দেওয়ার জন্য লিখে ফেললাম, কম্পিউটার প্রোগ্রামিং ২য় খণ্ড। বইটি ২০১৬ সালে প্রকাশিত হয়।
এর মধ্যে বাংলাদেশের স্কুল-কলেজের শিক্ষার্থীদের মধ্যে প্রোগ্রামিং ধীরে ধীরে জনপ্রিয় হয়ে উঠছে। তারা বিভিন্ন প্রোগ্রামিং প্রতিযোগিতায় অংশগ্রহণ করে। প্রোগ্রামিং প্রতিযোগিতার অনেক সমস্যার সমাধান করতেই ডেটা স্ট্রাকচার ও অ্যালগরিদম বিষয়টি জানা প্রয়োজন। তাই আমার কম্পিউটার প্রোগ্রামিং ১ম খণ্ড ও ২য় খণ্ড বইয়ের পাঠকদের ডেটা স্ট্রাকচার ও অ্যালগরিদম-এর সঙ্গে পরিচয় করিয়ে দেওয়ার জন্যই এই বইটি লিখলাম। আশা করি, বইটি পড়লে প্রোগ্রামিংয়ের সৌন্দর্য শিক্ষার্থীদের মধ্যে নতুনভাবে ধরা দেবে, তাদের মধ্যে যৌক্তিক চিন্তাভাবনার ভিত গড়ে উঠবে এবং তারা একটু অন্যভাবে ভাবতে শিখবে। আমি যেহেতু বইটি স্কুল-কলেজের শিক্ষার্থীদের জন্য লিখেছি, তাই বইটি যারা পড়বে, তারা যে সবাই ভবিষ্যতে কম্পিউটার বিজ্ঞান বিষয়ে পড়বে এমনটি আমি আশা করি না, চাইও না। বিভিন্ন শিক্ষার্থী বিভিন্ন বিষয়ে উচ্চশিক্ষা গ্রহণ করবে, তাদের নিজেদের পছন্দ বিবেচনা করে ও অভিভাবকের সঙ্গে আলোচনা সাপেক্ষে। কিন্তু তারা ভবিষ্যতে যে বিষয়েই লেখাপড়া করুক না কেন, প্রোগ্রামিংয়ের এই জ্ঞান ও চর্চা তাদের নিঃসন্দেহে অন্যরকম মানুষ হিসেবে গড়ে তুলবে। তবে একথা বলে নেওয়া দরকার যে, ডেটা স্ট্রাকচার ও অ্যালগরিদম বিষয়টির ব্যাপ্তি অনেক বেশি। এই বইতে কেবল খুব প্রচলিত ও সহজ কিছু ডেটা স্ট্রাকচার ও অ্যালগরিদমের সঙ্গে শিক্ষার্থীদের পরিচয় করিয়ে দেওয়ার চেষ্টা করেছি। ভবিষ্যতে তারা কম্পিউটার বিজ্ঞান বিষয়ে আরো লেখাপড়া করলে, আরো অনেক ডেটা স্ট্রাকচার ও অ্যালগরিদম সম্পর্কে জানতে পারবে।
এই বইটি কম্পিউটার প্রোগ্রামিং সিরিজের তৃতীয় ও শেষ খণ্ড। ভবিষ্যতে এই সিরিজে আমার আর কোনো বই লেখার পরিকল্পনা নেই, তবে বর্তমান বইগুলোকে আরো উন্নততর করার প্রয়াস অব্যাহত রাখব। আর বাংলাদেশে বিভিন্ন বিশ্ববিদ্যালয়ে যেসব শিক্ষার্থী কম্পিউটার বিজ্ঞান পড়বে, তারা যদি স্কুল-কলেজে পড়ার সময়ই কম্পিউটার প্রোগ্রামিং বইয়ের তিনটি খণ্ড পড়ে ফেলে, তাহলে বাংলাদেশের প্রযুক্তির জগতে যে অভাবনীয় পরিবর্তন ঘটবে, তা ভাবতেই আমি শিহরিত হচ্ছি। বইটি লেখার ব্যাপারে অনেকেই প্রত্যক্ষ ও পরোক্ষভাবে সহযোগিতা করেছেন। দ্বিমিক প্রকাশনীর তাহমিদ রাফি বইটি রিভিউ করার পাশাপাশি সম্পাদনাও করেছেন। এ ছাড়া শাহজালাল বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয়ের শিক্ষক এবং বর্তমানে যুক্তরাষ্ট্রে পিএইচডি অধ্যয়নরত শহীদুল ইসলাম (সুমন) ও রুহুল আমীন (সজীব) অনেক গুরুত্বপূর্ণ মতামত দিয়েছেন। এ ছাড়া ন্যাশনাল ইউনিভার্সিটি অব সিঙ্গাপুরের কোয়ান্টাম কম্পিউটার বিজ্ঞানী তানভীরুল ইসলাম এবং বাংলাদেশের তরুণ সফটওয়্যার নির্মাতা আবু আশরাফ মাসনুনের কাছেও আমি কৃতজ্ঞ। বরাবরের মতো আমার স্ত্রী সিরাজুম মুনিরা (পারমিতা) বেশিরভাগ সময় আমাদের ছেলের দেখাশোনা করার দায়িত্ব নিজের ঘাড়ে নেওয়ায় বইটি লেখার জন্য আমার পক্ষে সময় বের করা সম্ভব হয়েছে। তাই আমার ও এই বইয়ের হবু পাঠকদের পক্ষ থেকে তাকেও ধন্যবাদ জানাই।
বাংলাদেশের তরুণরা এখনো শিক্ষায়, জ্ঞানে ও দক্ষতায় উন্নত বিশ্বের চেয়ে অনেক পিছিয়ে আছে। কিন্তু একদিন তারা বিশ্বমানের হবে। সেই অনাগত দিনের অপেক্ষায় রইলাম।
সূচীপত্র ভূমিকা লেখক পরিচিতি অধ্যায় ১ : ডেটা স্ট্রাকচার (Data Structure) ও অ্যালগরিদম (Algorithm) • ডেটা স্ট্রাকচার (Data Structure) • অ্যালগরিদম (Algorithm) • ডেটা স্ট্রাকচার ও অ্যালগরিদম কেন শিখব? • বইটি কাদের জন্য এবং কীভাবে পড়তে হবে?
অধ্যায় ২ : টাইম ও স্পেস কমপ্লেক্সিটি (Time and Space Complexity) • টাইম কমপ্লেক্সিটি (Time Complexity) • স্পেস কমপ্লেক্সিটি (Space Complexity) • কিছু উদাহরণ
১৯৮২ সালের ৭ নভেম্বর ময়মনসিংহে জন্ম নেওয়া তামিম শাহরিয়ার সুবিন পেশায় একজন সফটওয়্যার ইঞ্জিনিয়ার। তার শিক্ষাজীবন শুরু হয় হোমনা সরকারি প্রাথমিক বিদ্যালয়ে। অতঃপর এ কে উচ্চ বিদ্যালয় ও নটরডেম কলেজে পড়া শেষে শাহজালাল বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয়ে কম্পিউটার সায়েন্স এন্ড ইঞ্জিনিয়ারিং বিষয়ে পড়াশোনে শেষ করেন। সরকারি কর্মকর্তার ঘরে জন্ম নেওয়া সুবিনের প্রধান আকর্ষণ প্রোগ্রামিংকে ঘিরে। তিনি প্রোগ্রামিং বিষয়ক প্রায় পাঁচশোটি সমস্যা বিশ্ববিদ্যালয়ে থাকাকালে সমাধান করেছেন। নানা ভাষায় কোডিং করতে পারলেও তার পছন্দের প্রোগ্রামিং ভাষা পাইথন। তবে তার শখ লেখালিখি এবং ভ্রমণ। শখ এবং আগ্রহের বস্তুকে এক বিন্দুতে মিলিয়ে সুবিন লিখে ফেলেছেন বেশ কয়েকটি বই। তামিম শাহরিয়ার সুবিন এর বই সমূহ’র বিষয়বস্তু হলো কম্পিউটার প্রোগ্রামিং, যার বেশিরভাগ বাংলা ভাষায় লিখিত। কীভাবে বাংলা ভাষাভাষী মানুষের কম্পিউটার প্রোগ্রামিং বিষয়ে জড়তা দূর করা যায় সে ভাবনা থেকেই তিনি বাংলায় প্রোগ্রামিং বিষয়ক বই লেখা শুরু করেন। সহজ, সাবলীল ভাষায় লেখা বলে তামিম শাহরিয়ার সুবিন এর বই পাঠকের আত্মস্থ করতে বেগ পেতে হয় না। তামীম শাহরিয়ার সুবিন এর বই সমগ্র এর মাঝে তাই দেখতে পাওয়া যায় প্রোগ্রামিং গাইডলাইন, পাইথন দিয়ে প্রোগ্রামিং ও গণিতের মতো খটমটে বিষয়ের উপস্থিতি। তিনি বাংলাদেশে থাকাকালে মুক্ত সফটওয়্যার লিমিটেড ও দ্বিমিক কম্পিউটিং নামক দুটি প্রতিষ্ঠান গড়ে তোলেন। বাংলাদেশ গণিত অলিম্পিয়াডের একজন একাডেমিক কাউন্সিলর হিসেবেও নিয়োজিত রয়েছেন। বর্তমানে তিনি সপরিবারে সিঙ্গাপুরে বসবাস করছেন।