কম্পিউটার বিজ্ঞান

উইকিপিডিয়া, মুক্ত বিশ্বকোষ থেকে

কম্পিউটার বিজ্ঞান জ্ঞানের একটি শাখা যেখানে তথ্যগণনার তাত্ত্বিক ভিত্তির গবেষণা করা হয় এবং কম্পিউটার নামক যন্ত্রে এসব গণনা সম্পাদনের ব্যবহারিক পদ্ধতির প্রয়োগ ও বাস্তবায়ন সম্পর্কে আলোচনা করা হয়। [১][২][৩][৪]

কম্পিউটার বিজ্ঞানকে প্রায়শই অ্যালগরিদমীয় পদ্ধতির একটি বিধিবদ্ধ অধ্যয়ন হিসেবে অভিহিত করা হয়, যে পদ্ধতির সাহায্যে তথ্য সৃষ্ট, বর্ণিত ও পরিবর্তিত হয়। কম্পিউটার বিজ্ঞানের অনেক উপশাখা আছে। কিছু শাখা, যেমন কম্পিউটার গ্রাফিক্‌সে নির্দিষ্ট ফলাফল গণনাটাই মূল লক্ষ্য। আবার কিছু শাখা, যেমন গণনামূলক জটিলতা তত্ত্বে (Computational complexity theory) বিভিন্ন গণনা সমস্যার বৈশিষ্ট্যসমূহ বিশ্লেষণ করাই আলোচ্য। এছাড়াও কিছু শাখা আছে যেখানে বিভিন্ন ভৌত ব্যবস্থায় গণনা বাস্তবায়ন করার পদ্ধতি সমূহ আলোচিত হয়; যেমন প্রোগ্রামিং ভাষা তত্ত্বে একটি গণনামূলক পদ্ধতিকে কীভাবে কম্পিউটারের ভাষায় প্রকাশ করা যায় তা আলোচনা করা হয়। কম্পিউটার প্রোগ্রামাররা বিভিন্ন প্রোগ্রামিং ভাষা ব্যবহার করে নির্দিষ্ট গণনামূলক সমস্যা সমাধান করে থাকেন। অন্যদিকে মানুষ-কম্পিউটার মিথস্ক্রিয়া-র মূল লক্ষ্য হলো কম্পিউটার এবং গণনা-ফলাফলসমূহ ব্যবহারোপযোগী, কার্যকর এবং মানুষের কাছে সার্বিকভাবে সহজলভ্য করা।

সাধারণ মানুষ অনেক সময় কম্পিউটার বিজ্ঞানকে কম্পিউটার সম্পর্কিত অন্যান্য পেশার (যেমন তথ্যপ্রযুক্তি) সাথে মিলিয়ে ফেলে, অথবা তারা মনে করে এটা কম্পিউটার সম্পর্কিত তাদের নিজস্ব অভিজ্ঞতা যেমন গেমিং, ওয়েব ব্রাউজিং এবং ওয়ার্ডপ্রোসেসিং ঘরানার কিছু। কিন্তু কম্পিউটার বিজ্ঞানের মূল লক্ষ্য হচ্ছে যেসব প্রোগ্রামের সাহায্যে কম্পিউটার গেম্‌স, ওয়েব-ব্রাউজার ধরনের সফটওয়্যারসমূহ তৈরি করা হয় তাদের বৈশিষ্ট্যসমূহ বিশ্লেষণ করা এবং এ থেকে অর্জিত জ্ঞান ব্যবহার করে এখনকার চেয়ে ভালো নতুন নতুন প্রোগ্রাম সৃষ্টি করা।[৫]

ইতিহাস[সম্পাদনা]

আধুনিক কম্পিউটার বিজ্ঞানের উৎস হিসেবে ইংরেজ বিজ্ঞানী চার্লস ব্যাবেজের কাজকে উল্লেখ করা যায়। ব্যাবেজ ১৮৩৭ সালে একটি প্রোগ্রামযোগ্য যান্ত্রিক গণনাযন্ত্র বা ক্যালকুলেটর প্রস্তাব করেছিলেন। তবে তারও আগে ১৬২৩ সালে ভিলহেল্ম শিকার্ড প্রথম যান্ত্রিক ক্যালকুলেটর তৈরি করেছিলেন বলে জানা যায়, যদিও এটি প্রোগ্রামযোগ্য ছিল না। ১৯ শতকে জর্জ বুল উদ্ভাবিত বুলিয়ান বীজগণিত দ্বিমিক বা বাইনারি পদ্ধতি ব্যবহার করে বিদ্যুৎ বর্তনী তৈরির গাণিতিক ভিত্তি প্রদান করে।

১৯৪০-এর দশকে ইলেকট্রনিক ডিজিটাল কম্পিউটারের আবির্ভাবের আগ পর্যন্ত কম্পিউটার বিজ্ঞানকে বিজ্ঞান বা প্রকৌশলবিদ্যার চেয়ে একটি আলাদা শাস্ত্র হিসেবে গণ্য করা হত না। তবে এর পর থেকে এটি অনেক শাখা প্রশাখার জন্ম দিয়েছে, যেগুলো একান্তই কম্পিউটার বিজ্ঞান সম্বন্ধীয়।

অ্যালগোরিদম তত্ত্ব, গাণিতিক যুক্তিবিজ্ঞান, ও প্রোগ্রাম সংরক্ষণের ক্ষমতাবিশিষ্ট ইলেক্ট্রনিক কম্পিউটারের উদ্ভাবন - এই তিনের সম্মিলনে ১৯৪০-এর দশকের শুরুতে কম্পিউটার বিজ্ঞানের জন্ম হয়। ১৯৩০-এর দশকে অ্যালান টুরিং, আলোন্‌জো চার্চকুর্ট গ্যোডেলের অ্যালগোরিদম তত্ত্বসমূহ ও এগুলো যন্ত্রে বাস্তবায়ন সংক্রান্ত গবেষণা, তারও ৬০ বছর আগে অগাস্টা অ্যাডা কিং (কাউন্টেস অফ লাভলেস)-এর উদ্ভাবিত অ্যালগোরিদম, ১৯২০-এর দশকে ভ্যানিভার বুশের উদ্ভাবিত অ্যানালগ কম্পিউটার, এবং ১৯৩০-এর দশকে হাওয়ার্ড আইকেনকনরাড ৎসুজে কর্তৃক উদ্ভাবিত ইলেকট্রনিক কম্পিউটার - এ সবই কম্পিউটার বিজ্ঞানের জন্মে ভূমিকা রাখে। ১৯৪০-এর দশকের শেষের দিকে জন ভন নিউম্যানের রচনাবলি নতুন এই শাস্ত্রের তাত্ত্বিক ভিত্তি সুদৃঢ় করে। মার্কিন তড়িৎ প্রকৌশলী জন প্রেস্‌পার একার্ট ও মার্কিন পদার্থবিদ জন মক্‌লি ১৯৪৬ সালে বিশ্বের সর্বপ্রথম টুরিং-সম্পূর্ণ সাধারণ ব্যবহারোপযোগী ইলেকট্রনিক ডিজিটাল কম্পিউটার এনিয়াক উদ্ভাবন করেন। তাঁরা ১৯৫১ সালে বিশ্বের সর্বপ্রথম বাণিজ্যিক কম্পিউটার ইউনিভ্যাক-১-ও তৈরি করেন। এর আগে জন প্রেস্‌পার একার্ট ১৯৪৬ সালে পেন্সিলভেনিয়া বিশ্ববিদ্যালয়ে উচ্চশিক্ষা স্তরে ইতিহাসের সর্বপ্রথম কম্পিউটার বিজ্ঞান-সংক্রান্ত কোর্স পরিচালনা করেন; এটি মুর স্কুল লেকচার্স নামে বিখ্যাত।

১৯৪০-এর দশকের শেষে ও ১৯৫০-এর দশকের শুরুর দিকে কম্পিউটার বিজ্ঞানের আদি পর্যায়ে গবেষণার লক্ষ্য ছিল বিজ্ঞান ও প্রকৌশলের জন্য ব্যবহৃত গণনা করার প্রক্রিয়াগুলোকে স্বয়ংক্রিয় রূপ দেওয়া। কোন প্রক্রিয়ায় গণনা করলে তাড়াতাড়ি সঠিক ফল পাওয়া যাবে, তা বের করার জন্য বিজ্ঞানী ও প্রকৌশলীরা গণনার বিভিন্ন তাত্ত্বিক মডেল তৈরি করেন। এসময় কম্পিউটার বিজ্ঞান এবং গণিতের সাংখ্যিক বিশ্লেষণ নামক শাখার মধ্যে বহু মিল ছিল, যে শাখায় গণনার নির্ভুলতা ও যথার্থতা নিয়ে গবেষণা করা হত।

১৯৫০ ও ১৯৭০-এর দশকের মধ্যবর্তী সময়ে কম্পিউটারের ব্যবহার বৃদ্ধি পায়। কম্পিউটার বিজ্ঞানীরা এসময় কম্পিউটারের ব্যবহার সরল করার উদ্দেশ্যে এক ধরনের কৃত্রিম ভাষা তথা প্রোগ্রামিং ভাষাসমূহের উদ্ভাবন করেন এবং কম্পিউটার ও কম্পিউটার ব্যবহারকারীর মধ্যে যোগসূত্র স্থাপনকারী অপারেটিং সিস্টেম প্রোগ্রামের প্রচলন করেন। তাঁরা কম্পিউটারের নতুন ব্যবহারিক ক্ষেত্র সন্ধান ও নতুন ধরনের কম্পিউটার ডিজাইন নিয়েও গবেষণা চালান। এসময় প্রথম কম্পিউটার নেটওয়ার্ক সৃষ্টি করা হয় এবং গণনা ও মনের চিন্তাধারার মধ্যে সম্পর্ক নিয়ে গবেষণা শুরু হয়। ১৯৫৩ সালে ক্যম্ব্রিজ বিশ্বনিদ্যালয় এর কম্পিউটার ল্যাবরেটরীতে পৃথিবীর প্রথম কম্পিউটার বিজ্ঞানে ডিপ্লোমা চালু হয়। ১৯৬২ সালের অক্টোবরে আমেরিকার পারডু বিশ্ববিদ্যালয় এ সর্বপ্রথম কম্পিউটার বিজ্ঞানে মাস্টার্স এবং পিএইচডি ডিগ্রি এবং ১৯৬৮ সালে ব্যাচেলর্স ডিগ্রি প্রোগ্রাম চালু হয়।[৬]

১৯৭০-এর দশকে কম্পিউটার চিপ প্রস্তুতকারকেরা ব্যাপকভাবে মাইক্রোপ্রসেসর উৎপাদন করতে শুরু করেন। মাইক্রোপ্রসেসর হল কম্পিউটারের ভেতরে অবস্থিত প্রধান তথ্য প্রক্রিয়াকারী কেন্দ্র। এই নতুন প্রযুক্তি কম্পিউটার শিল্পব্যবস্থায় বিপ্লব আনে; কম্পিউটার তৈরির খরচ বহুলাংশে কমে যায় এবং কম্পিউটার তথ্য প্রক্রিয়াকরণের দ্রুতি বহুগুণে বৃদ্ধি পায়। মাইক্রোপ্রসেসরের ওপর ভিত্তি করেই সৃষ্টি হয় ব্যক্তিগত কম্পিউটার বা পিসি। পিসি-র আবির্ভাবের পর কম্পিউটার অ্যাপ্লিকেশনের ব্যবহার বহুগুণে বেড়ে যায়। ১৯৭০-এর শুরু থেকে ১৯৮০-র দশকের পুরোটা জুড়ে কম্পিউটার বিজ্ঞানের পরিধির ব্যাপক প্রসার ঘটে। কম্পিউটিং শিল্পে উদ্ভাবিত নতুন নতুন প্রযুক্তি চালনার জন্য এবং ব্যক্তিগত কম্পিউটারে ব্যবহার্য নতুন অ্যাপ্লিকেশনগুলো তৈরির জন্য এর কোন বিকল্প ছিল না। এভাবে কম্পিউটার বিজ্ঞানের অতীতের গবেষণাগুলোর ফলাফল ব্যক্তিগত কম্পিউটারের প্রসারের মাধ্যমে ধীরে ধীরে সাধারণ জনগণের কাছে পৌঁছাতে শুরু করে।

কম্পিউটার বিজ্ঞানীরা অনবরত কম্পিউটার ও তথ্য ব্যবস্থাসমূহের উন্নতি সাধন করে চলেছেন। তাঁরা আরও জটিল, নির্ভরযোগ্য ও শক্তিশালী কম্পিউটার ডিজাইন করছেন, এমন সব কম্পিউটার নেটওয়ার্ক তৈরি করছেন যেগুলো দিয়ে বিপুল পরিমাণ তথ্য দক্ষতার সাথে আদান প্রদান করা যায় এবং কম্পিউটারকে কীভাবে বুদ্ধিমান সত্তার মত আচরণ করানো যায়, তার উপায়গুলো খুঁজে বের করছেন। কম্পিউটার ক্রমে আধুনিক সমাজের অবিচ্ছেদ্য অংশে পরিণত হচ্ছে, ফলে কম্পিউটার বিজ্ঞানীরা বর্তমান সমস্যাগুলোর আরও ভাল সমাধান উদ্ভাবন করছেন এবং নতুন নতুন সমস্যার রসদও পাচ্ছেন।

লক্ষ্য[সম্পাদনা]

কম্পিউটার বিজ্ঞানের লক্ষ্য বিচিত্র। জনসাধারণকে বর্তমান কম্পিউটারগুলো চালনা শিক্ষা দেয়া থেকে শুরু করে ভবিষ্যতমুখী প্রযুক্তি, যেগুলো কয়েক দশকেও বাস্তবায়নের সম্ভাবনা নেই, সেগুলো নিয়ে গবেষণা – এ সবই কম্পিউটার বিজ্ঞানের আওতায় পড়ে। সব বিশেষ বিশেষ লক্ষ্যেরই মূল লক্ষ্য তথ্যের উন্নত ব্যবহারের মাধ্যমে মানবজাতির বর্তমান ও ভবিষ্যতের উন্নতিসাধন।

তত্ত্ব, প্রকৌশল ও পরীক্ষা নিরীক্ষা – এ তিনের সমন্বয়েই কম্পিউটার বিজ্ঞান। কম্পিউটার বিজ্ঞানীরা একটি তত্ত্ব দাঁড় করান, তারপর সেই তত্ত্বের ওপর ভিত্তি করে হার্ডওয়্যার ও সফটওয়্যারের সমন্বয়ে একটি কম্পিউটার ব্যবস্থা তৈরি করেন এবং তারপর সেটি পরীক্ষা করে দেখেন।

অনেকের মনে হতে পারে যে কম্পিউটার পরীক্ষানিরীক্ষার আবার প্রয়োজন কি? কম্পিউটারকে যা আদেশ দেওয়া হয় তা-ই সে পালন করে। কিন্তু প্রকৃতপক্ষে বাস্তব বিশ্বে কম্পিউটারের নানা জটিল ব্যবহারের সময় কম্পিউটারের অনেক অজানা আচরণ পরিলক্ষিত হয় যেগুলোর পূর্বাভাস দেওয়া যায় না। পরীক্ষা নিরীক্ষা আর বৈজ্ঞানিক পদ্ধতি অনুসরণ তাই কম্পিউটার বিজ্ঞানের গুরুত্বপূর্ণ অংশ।

শাখা[সম্পাদনা]

কম্পিউটার বিজ্ঞানকে কতগুলি বৃহত্তর শাখায় ভাগ করা যায়। যেমন - বিচ্ছিন্ন গণিত, অ্যালগোরিদম ও উপাত্ত সংগঠনসমূহ, প্রোগ্রামিং ভাষাসমূহ, কম্পিউটার স্থাপত্য, অপারেটিং ব্যবস্থা, কম্পিউটার নেটওয়ার্ক, সফটওয়্যার প্রকৌশল, ডাটাবেস ও তথ্য আনয়ন, কৃত্রিম বুদ্ধিমত্তা, রোবটবিজ্ঞান, কম্পিউটার গ্রাফিক্‌স, মানুষ-কম্পিউটার মিথষ্ক্রিয়া, গণনামূলক বিজ্ঞান, প্রাতিষ্ঠানিক তথ্যবিজ্ঞান, এবং জীব-তথ্যবিজ্ঞান। নিচে এগুলির সংক্ষিপ্ত বিবরণ দেয়া হল।

বিচ্ছিন্ন গণিত[সম্পাদনা]

বিচ্ছিন্ন গণিতের ধারণাগুলি কম্পিউটার বিজ্ঞানের ভিত্তি। খুব কম সংখ্যক কম্পিউটার বিজ্ঞানীই বিচ্ছিন্ন গণিতের উপর বিশেষ জোর দিয়ে গবেষণা করেন, কিন্তু কম্পিউটার বিজ্ঞানের বহু এলাকায় বিচ্ছিন্ন গণিতের ধারণাগুলি ঘুরেফিরে আসে। সেট তত্ত্ব, গাণিতিক যুক্তিবিজ্ঞান, গ্রাফ তত্ত্ব, এবং গুচ্ছবিন্যাসতত্ত্বের অনেক গুরুত্বপূর্ণ ধারণা বিচ্ছিন্ন গণিতের আলোচ্য।

উপাত্ত সংগঠন এবং অ্যালগোরিদমের এলাকায় বিচ্ছিন্ন গণিতের ধারণাগুলির সর্বাধিক প্রয়োগ দেখতে পাওয়া যায়। তবে কম্পিউটার বিজ্ঞানের অন্যান্য শাখাতেও এর ব্যবহার আছে। যেমন বিধিবদ্ধ বৈশিষ্ট্যায়ন (formal specification), প্রোগ্রামের যাচাইকরণ (verification) এবং তথ্যগুপ্তিবিদ্যায় বিধিবদ্ধ প্রমাণ (formal proof) সৃষ্টি ও অনুধাবনের ক্ষমতা অত্যন্ত দরকারি একটি দক্ষতা। গ্রাফ তত্ত্বের ধারণাগুলি কম্পিউটার নেটওয়ার্ক, অপারেটিং সিস্টেম এবং কম্পাইলারের গবেষণায় কাজে আসে। সেট তত্ত্বের ধারণাগুলি সফটওয়্যার প্রকৌশল এবং ডাটাবেজের গবেষণায় কাজে লাগে।

বিচ্ছিন্ন গণিতে আলোচ্য বিষয়গুলির মধ্যে আছে:

অ্যালগোরিদম ও উপাত্ত সংগঠনসমূহ[সম্পাদনা]

অ্যালগোরিদমউপাত্ত সংগঠনসমূহ ব্যবহার করেই কম্পিউটার প্রোগ্রাম রচনা করা হয়। প্রথীতযশা কম্পিউটার বিজ্ঞানী নিকলাউস ভির্টের একটি সুবিখ্যাত বইয়ের নাম ছিল Algorithms + Data Structures = Programs (১৯৭৫)। অ্যালগোরিদম (algorithm) হল সুনির্দিষ্ট ও সসীম সংখ্যক ধাপবিশিষ্ট পদ্ধতি, যা সসীম সময়ের মধ্যে ও সসীম পরিমাণ কম্পিউটার মেমরি ব্যবহার করে কোন সমস্যার সমাধান করে। অতিব্যবহৃত অ্যালগোরিদমগুলোর মধ্যে আছে কোন উপাত্ত সংগ্রহ অনুসন্ধান (searching), উপাত্ত বিন্যস্তকরণ (sorting), মেট্রিক্স গুণন ও অন্যান্য সাংখ্যিক অপারেশনসমূহ, ইত্যাদি। কোন উপাত্ত সংগঠন (data structure) হল তথ্যের একটি নির্দিষ্ট ধরনের সুবিন্যস্ত রূপ, যা উপাত্তের বিভিন্ন মানের মধ্যে সম্পর্ক স্থাপন করে। লিস্ট, অ্যারে, রেকর্ড, স্ট্যাক, কিউ, ট্রি, ইত্যাদি কিছু বহু-ব্যবহৃত উপাত্ত সংগঠন।

অ্যালগোরিদম কম্পিউটার বিজ্ঞানের একটি মৌলিক বিষয়। কোন্‌ অ্যালগোরিদম পচ্ছন্দ করা হয়েছে এবং সেটি কীভাবে বাস্তবায়ন করা হয়েছে --- এই দুইটি বিষয় বাস্তব বিশ্বে যেকোন সফটওয়্যার ব্যবস্থার কর্মদক্ষতা নির্ধারণ করে। ভাল অ্যালগোরিদমের ডিজাইন তাই সফটওয়্যারের সাফল্যের চাবিকাঠি। তাছাড়া অ্যালগোরিদম নিয়ে গবেষণা প্রোগ্রামিং ভাষা, ঘরানা, কিংবা কম্পিউটার হার্ডওয়্যার নির্বিশেষে বিভিন্ন সমস্যার অন্তর্নিহিত প্রকৃতি বুঝতে সহায়তা করে। কম্পিউটার বিজ্ঞানের অন্যতম একটি লক্ষ্য হল কোন একটি বিশেষ উদ্দেশ্যের জন্য কোন্‌ অ্যালগোরিদমটি সবচেয়ে শক্তিশালী ও উপযোগী, কিংবা এরকম আদৌ কোন অ্যালগোরিদম আছে কি না, তা বের করা। অ্যালগোরিদমের সব ধরনের আলোচনায় তাই দক্ষতার পরিমাপের ব্যাপারটি ঘুরে ফিরে আসে।

অ্যালগোরিদম তত্ত্বের মধ্যে রয়েছে গণনাযোগ্যতার তত্ত্ব, গণনামূলক জটিলতা, তথ্য-ভিত্তিক জটিলতা, সহবর্তমানতা তত্ত্ব, সম্ভাবনাভিত্তিক অ্যালগোরিদম, আরোহী ডাটাবেস তত্ত্বসাম্পর্কিক ডাটাবেস তত্ত্ব, দৈবকৃত অ্যালগোরিদম, বিন্যাস-মিলানো অ্যালগোরিদম, গ্রাফনেটওয়ার্ক অ্যালগোরিদম, বীজগাণিতিক অ্যালগোরিদম, গুচ্ছবিন্যাসতাত্ত্বিক সর্বোচ্চ অনুকূলীকরণ, এবং তথ্যগুপ্তিবিদ্যা। অ্যালগোরিদম তত্ত্ব অন্যান্য যেসব জ্ঞানের শাখার ওপর ভিত্তি করে দাঁড়িয়ে আছে সেগুলো হল বিচ্ছিন্ন গণিত (যার মধ্যে পড়ে গ্রাফ তত্ত্ব, পৌনঃপুনিক ফাংশন, পুনর্ঘটন সম্পর্কসমূহ, গুচ্ছবিন্যাস তত্ত্ব), ক্যালকুলাস, আরোহী পদ্ধতি, বিধেয় যুক্তিবিজ্ঞান, সময়ভিত্তিক যুক্তিবিজ্ঞান, অর্থবিজ্ঞান, সম্ভাবনাপরিসংখ্যান

জটিল অ্যালগোরিদম এবং বাস্তব অভিজ্ঞতাভিত্তিক সমস্যাগুলির ক্ষেত্রে পরীক্ষা-নিরীক্ষার সহায়তা নেয়া হয়। অ্যালগোরিদমসমূহকে টেস্ট কেসের সুইট দিয়ে মূল্যায়ন করা হয়। বিভক্তি-ও-বিজয় অ্যালগোরিদম, লোভী অ্যালগোরিদম, ডাইনামিক প্রোগ্রামিং, সসীম অবস্থার যন্ত্র ইন্টারপ্রেটার, স্ট্যাক যন্ত্র ইন্টারপ্রেটার, অভিজ্ঞতাভিত্তিক অনুসন্ধানদৈবকৃত অ্যালগোরিদমের আচরণ নির্ধারণে পরীক্ষা-নিরীক্ষা ব্যাপক সাহায্য করেছে। এছাড়াও পরীক্ষার মাধ্যমে সমান্তরালবিতরণকৃত অ্যালগোরিদমের কর্মদক্ষতা সম্পর্কে অন্তর্দৃষ্টি লাভ করা সম্ভব হয়েছে।

অ্যালগোরিদম ও উপাত্ত সংগঠন এলাকায় আলোচিত বিষয়গুলির মধ্যে আছে:

  • প্রাথমিক অ্যালগোরিদম বিশ্লেষণ: জটিলতার ঊর্ধ্ব ও গড় সীমার অসীমতটীয় বিশ্লেষণ; সর্বোৎকৃষ্ট, গড় ও সর্বনিকৃষ্ট আচরণের পার্থক্য; বৃহৎ ওমেগা, ক্ষুদ্র ওমেগা, ওমেগা ও থেটা লিখনপদ্ধতি, আদর্শ জটিলতা শ্রেণীসমূহ, কর্মদক্ষতার অভিজ্ঞতাবাদী পরিমাপ, অ্যালগোরিদমের সময় ও স্থান-বিষয়ক মূল্য, পুনরাবর্ত অন্বয় ব্যবহার করে পুনরাবৃত্তিমূলক অ্যালগোরিদম বিশ্লেষণ
  • ব্রুট-ফোর্স অ্যালগোরিদম, লোভী অ্যালগোরিদম, বিভাজন-ও-বিজয়, পশ্চাদপসরণ, শাখায়ন-ও-বন্ধন, অভিজ্ঞতাভিত্তিক নিয়ম, বিন্যাস মিলানো অ্যালগোরিদম, স্ট্রিং অ্যালগোরিদম, সাংখ্যিক আসন্নীকরণ অ্যালগোরিদম।
  • সাংখ্যিক অ্যালগোরিদম, ধারাবাহিক ও বাইনারি অনুসন্ধান অ্যালগোরিদম, দ্বিঘাত সর্টিং অ্যালগোরিদম (বাছাই, অনুপ্রবেশ), O(NlogN) অ্যালগোরিদম (কুইকসর্ট, হিপসর্ট, মার্জসর্ট), হ্যাশ টেবিল (সংঘর্ষ এড়ানোর কৌশল), বাইনারি অনুসন্ধান বৃক্ষ, গ্রাফের উপস্থাপন (সংলগ্নতা তালিকা, সংলগ্নতা মেট্রিক্স), গভীরতা-ভিত্তিক ও প্রস্থ-ভিত্তিক বিচরণ, ক্ষুদ্রতম পথ অ্যালগোরিদম (ডিয়েকস্ট্রা ও ফ্লয়েডের অ্যালগোরিদসমূহ), অনুবর্তী আবদ্ধতা, সর্বনিম্ন প্রজনন বৃক্ষ (প্রিম ও ক্রুস্কালের অ্যালগোরিদমসমূহ), টপোগাণিতিক সর্ট।
  • বিতরণকৃত অ্যালগোরিদম, ঐকমত্য এবং নির্বাচন, সমাপ্তি নিরূপন, ত্রুটি সহনশীলতা, স্থিতিশীলকরণ।
  • গণনীয়তা, সসীম অবস্থা যন্ত্র, প্রসঙ্গমুক্ত ব্যাকরণ, নিয়ন্ত্রণযোগ্য ও অনিয়ন্ত্রণযোগ্য সমস্যা, অগণনীয় ফাংশন, বিরতি সমস্যা।
  • পি এবং এনপি শ্রেণী, এনপি-সম্পূর্ণতা, আদর্শ এনপি-সম্পূর্ণ সমস্যাসমূহ, লঘূকরণ কৌশল।
  • স্বয়ংক্রিয়া তত্ত্ব, নিষ্পত্তিমূলক সসীম স্বয়ক্রিয় যন্ত্র, অ-নিষ্পত্তিমূলক সসীম স্বয়ংক্রিয় যন্ত্র, নিয়মিত এক্সপ্রেশন, পাম্পিং সহায়িকা, নিম্নগামী স্বয়ংক্রিয়ক, টুরিং যন্ত্র, নিয়মিত ভাষা, চম্‌স্কি অনুক্রম, চার্চ-টুরিং বিবৃতি।
  • প্রাগসর অ্যালগোরিদম বিশ্লেষণ: অ্যামর্টাইজ্‌ড বিশ্লেষণ, অনলাইন ও অফলাইন অ্যালগোরিদম, দৈবকৃত অ্যালগোরিদম, ডায়নামিক প্রোগ্রামিং, গুচ্ছবিন্যাসীয় সর্বানুকূলীকরণ।
  • তথ্যগুপ্তিবিদ্যা-সংক্রান্ত অ্যালগোরিদম: ব্যক্তিগত-চাবি তথ্যগুপ্তি, চাবি-হস্তান্তর সমস্যা, উন্মুক্ত-চাবি তথ্যগুপ্তি, ডিজিটাল স্বাক্ষর, নিরাপত্তা প্রোটোকল, শূন্য-জ্ঞান প্রমাণ, বৈধতা নির্ণয়।
  • জ্যামিতিক অ্যালগোরিদম: রেখাংশের ধর্ম, ছেদ, উত্তল হাল অনুসন্ধান অ্যালগোরিদম
  • সমান্তরাল অ্যালগোরিদম: প্র্যাম মডেল, এক্সক্লুসিভ/কনকারেন্ট রিড/রাইট, পয়েন্টার লাফানো, ব্রেন্টের উপপাদ্য।

প্রোগ্রামিং ভাষাসমূহ[সম্পাদনা]

অ্যালগোরিদম ও উপাত্ত সংগঠনগুলো কম্পিঊটারে বাস্তবায়িত করার জন্য সফ্‌টওয়্যার প্রকৌশলীরা প্রোগ্রাম রচনা করেন। এই প্রোগ্রামগুলো লিখতে গিয়ে তাঁরা যেসব কৃত্রিম ভাষার সাহায্য নেন, তাদেরকে প্রোগ্রামিং ভাষা বলা হয়। মানুষের মুখের স্বাভাবিক ভাষা দ্ব্যর্থবোধক এবং এ ভাষার পদসংগঠন ও শব্দার্থ বহুভাবে অনুধাবন করা যায়, তাই এটি প্রোগ্রাম লেখার জন্য উপযুক্ত নয়। এর পরিবর্তে সরল ও দ্ব্যর্থহীন কৃত্রিম প্রোগ্রামিং ভাষার আশ্রয় নেয়া হয়। কম্পিউটার বিজ্ঞানীরা এমন প্রোগ্রামিং ভাষা উদ্ভাবনের চেষ্টা করেন, যা দিয়ে সহজে প্রোগ্রাম লেখা যায় এবং প্রোগ্রামে ভুলের পরিমাণ কম হয়। প্রোগ্রামিং ভাষাগুলোকে যন্ত্রের ভাষায় ভাষান্তরিত করে নিতে হয়, যাতে কম্পিউটার প্রোগ্রামের নির্দেশগুলো পালন করতে পারে। কম্পিউটার বিজ্ঞানীরা আরও ভাল ভাষান্তরকরণ অ্যালগোরিদম বের করার চেষ্টা করেন, যাতে যন্ত্রের ভাষায় ভাষান্তরিত প্রোগ্রামগুলো আরও দক্ষভাবে সম্পাদন করা যায়।

কম্পিউটার বিজ্ঞানের একেবারে আদি পর্যায়ে বাইনারী সংখ্যাভিত্তিক যান্ত্রিক ভাষায় (machine language) কম্পিউটারের হার্ডওয়্যারকে নির্দেশ দেয়া হত। এরপর কাজের সুবিধার জন্য প্রথম যেসব প্রোগ্রামিং ভাষা তৈরি করা হয়, তাদের নাম অ্যাসেম্বলি ভাষা। এগুলি যান্ত্রিক ভাষা থেকে খুব একটা বেশি পৃথক ছিল না। ১৯৫০-এর দশক থেকে ব্যবহারকারীরা আরও স্বাচ্ছন্দ্যদায়ী প্রোগ্রামিং ভাষা লেখা শুরু করেন। এদের মধ্যে ফোরট্রান ভাষাটি ছিল অন্যতম। ফোরট্রান প্রোগ্রামারদেরকে গাণিতিক অপারেশন ছাড়াও বীজগাণিতিক এক্সপ্রেশন লেখার সুযোগ দেয়। ১৯৬০-এর দশকে ফোরট্রানের একটি সরলীকৃত সংস্করণ বেসিক তৈরি করা হয়, এবং এটি নতুনদের শেখার জন্য প্রথম প্রোগ্রামিং ভাষা হিসেবে স্কুল-কলেজে ব্যাপক জনপ্রিয়তা লাভ করে। ফোরট্রান উদ্ভাবনের কাছাঁকাছি সময়ে আরেকটি ভাষা কোবোল তৈরি করা হয়, যেটি সাধারণ ব্যবসায়িক রেকর্ড, নথিপত্র, ও অন্যান্য ব্যাবসায়িক প্রক্রিয়া দেখাশোনা করার জন্য ব্যবহার করা হয়।

কোবোল ও ফোরট্রান এবং এদের উত্তরসূরী প্যাসকালসি হল নির্দেশমূলক ভাষা (Imperative language)। অর্থাৎ এগুলোতে কম্পিউটারকে কতগুলি প্রত্যক্ষ নির্দেশ দেয়ার মাধ্যমে কাজ করানো হয়; এটা যান্ত্রিক ভাষার সাথে অনেকটাই তুলনীয়। এই ধারার আরও দুটি ভাষা হল অ্যাডাঅ্যালগল। এছাড়াও আরেক ধরনের ভাষা আছে যেগুলি ফাংশনভিত্তিক (Functional), অর্থাৎ প্রোগ্রামের ভিতরের অংশবিশেষ বা ফাংশন কল করে প্রোগ্রামিং-এর লক্ষ্য পূরণ করা হয়। ফাংশনভিত্তিক ভাষার মধ্যে সবচেয়ে পরিচিত হচ্ছে লিস্প; এমএলহ্যাস্কেল-ও ফাংশনভিত্তিক ভাষা। পরবর্তীকালে বস্তু-সংশ্লিষ্ট (Object Oriented অব্জেক্ট-ওরিয়েন্টেড) ভাষা উদ্ভাবন করা হয় যেখানে উপাত্ত ও মেথড আধারে আবৃত করা হয়, এবং এই আধারকে বলা হয় অবজেক্ট বা বস্তু। এই ধারায় একাধিক অবজেক্টের মধ্যে বার্তা আদানপ্রদান করে প্রোগ্রামিঙের লক্ষ্য পূরণ করা হয়। স্মলটক, সি++, আইফেল, ভিজুয়াল বেসিক, জাভা, ইত্যাদি বস্তু-সংশ্লিষ্ট ভাষার উদাহরণ। এছাড়াও আছে উপাত্ত-প্রবাহ (Dataflow ডাটাফ্লো) ভাষা যেমন সিসাল, ভাল, ইদ নুভো, লজিক প্রোগ্রামিং ভাষা যেমন প্রোলগ, স্ট্রিং প্রসেসিং ভাষা যেমন - স্নোবলআইকন, এবং সহবর্তমানতাভিত্তিক (concurrency-based) প্রোগ্রামিং ভাষা যেমন - কনকারেন্ট প্যাসকাল, অকাম, এসআর, মডুলা-৩

প্রোগ্রামিং ভাষার তত্ত্বে আলোচিত বিষয়গুলির মধ্যে রয়েছে:

কম্পিউটার স্থাপত্য[সম্পাদনা]

কম্পিউটার বিজ্ঞানের প্রাণকেন্দ্রে অবস্থিত কম্পিউটার নামের যন্ত্র। কম্পিউটার না থাকলে কম্পিউটার বিজ্ঞান গণিতের একটি তাত্ত্বিক শাখা হয়ে থাকত। কম্পিউটার বিজ্ঞানীদেরকে তাই কম্পিউটারের বিভিন্ন অংশ, তাদের কাজ ও পারস্পরিক মিথস্ক্রিয়া সম্পর্কে ধারণা রাখতে হয়। কম্পিউটার স্থাপত্য সম্পর্কে ধারণা থাকলে কোন প্রোগ্রামের কাঠামো যাতে এটি একটি একটি বাস্তব মেশিনে দ্রুত নির্বাহ করা যায়। কোন কাজের জন্য কম্পিউটার নির্বাচনের ক্ষেত্রে সিপিইউ ক্লকের দ্রুতি, মেমরির আকার, ইত্যাদি ব্যাপার বুঝতেও কম্পিউটার স্থাপত্যের জ্ঞান কাজে আসে।

কম্পিউটার স্থপতিরা নতুন নতুন কম্পিউটার ব্যবস্থা ডিজাইন ও বিশ্লেষণ করেন। তাঁরা কম্পিউটারের গতি, সংরক্ষণ ক্ষমতা ও নির্ভরযোগ্যতা কীভাবে বাড়ানো যায় এবং খরচ ও শক্তির ব্যবহার কীভাবে কমানো যায়, তা নিয়ে গবেষণা করেন। এ কাজে তাঁরা হার্ডওয়্যার ও সফটওয়্যার মডেলের সাহায্য নেন। অনেক ক্ষেত্রেই তাঁরা কম্পিউটার হার্ডওয়্যার প্রকৌশলীদের সাথে মিলে নতুন কম্পিউটার বানানোয় অংশ নেন, কেননা তাদের স্থাপত্য মডেলগুলো অনেকাংশেই কম্পিউটারের বর্তনীবিন্যাসের ওপর নির্ভর করে। অনেক কম্পিউটার স্থপতি বিশেষায়িত প্রয়োগ যেমন ছবি প্রক্রিয়াকরণ, সিগনাল প্রক্রিয়াকরণ, ইত্যাদির জন্য কম্পিউটার ডিজাইন করেন, যাতে বেশি কর্মক্ষমতা, নিম্ন দাম কিংবা উভয়ই সম্ভব হয়। কম্পিউটার স্থাপত্যে আলোচিত বিষয়গুলির মধ্যে রয়েছে:

  • ডিজিটাল যুক্তিবিজ্ঞান: বুলিয়ান বীজগণিত, লজিক গেট, ফ্লিপ ফ্লপ, কাউন্টার, রেজিস্টার, পিএলএ, লজিক এক্সপ্রেশন, লঘিষ্ঠকরণ, গুণফলের সমষ্টি রূপ, রেজিস্টার স্থানান্তর লিপিপদ্ধতি, গেট বিলম্ব, ফ্যান-ইন, ফ্যান-আউট।
  • যান্ত্রিক স্তরে উপাত্তের উপস্থাপন: বিট, বাইট, ওয়ার্ড, সংখ্যার উপস্থাপন (বাইনারি, অক্টাল, হেক্সাডেসিমাল) ও ভিত্তি, স্থিরবিন্দু, ভাসমান বিন্দু, চিহ্নিত উপস্থাপন, ২-এর পূরক উপস্থাপন, ক্যারেক্টার কোড, গ্রাফিকাল উপাত্ত, রেকর্ড, অ্যারে।
  • অ্যাসেম্বলি স্তর: ভন নিউম্যান যন্ত্র, নিয়ন্ত্রণ ইউনিট, নির্দেশ আনয়ন, বিসংকেতায়ন, এবং নির্বাহকরণ, অ্যাসেম্বলি ভাষা প্রোগ্রামিং, নির্দেশ ফরম্যাট, অ্যাড্রেসিং মোড, সাবরুটিন কল ও রিটার্ন, ইনপুট-আউটপুট, ইন্টেরাপ্ট
  • মেমরি: স্টোরেজ ব্যবস্থা, কম্পিউটার মেমরি, কোডিং তত্ত্ব, উপাত্ত সংকোচন, উপাত্ত শুদ্ধতা, মেমরি স্তরক্রম, বিলম্ব, চক্রকাল, ব্যান্ডউইডথ, ইন্টারলিভিং, ক্যাশ মেমরি, ভার্চুয়াল মেমরি।
  • রিস্ক, সিস্ক, ত্রুটি চিহ্নিতকারী ও সংশোধনকারী কোড, কম্পিউটার-সহায়িত ডিজাইন
  • পাইপলাইন, বহুপ্রসেসর

অপারেটিং সিস্টেম[সম্পাদনা]

অপারেটিং সিস্টেম হল কম্পিউটারের সার্বিক পরিচালনায় নিয়োজিত বিশেষ প্রোগ্রামসমষ্টি বা সফটওয়্যার। অপারেটিং সিস্টেম ব্যবহারকারী ও কম্পিউটারের হার্ডওয়্যারের মধ্যকার যোগসূত্র (interface) প্রদান করে, কম্পিউটারের স্মৃতিতে অন্যান্য অ্যাপ্লিকেশন প্রোগ্রাম স্থাপন করতে সাহায্য করে, কম্পিউটার কীভাবে অ্যাপ্লিকেশনগুলি চালাবে তা দেখাশোনা করে, কম্পিউটারের বিভিন্ন সম্পদ (resource), যেমন - ডিস্ক পরিসর (disk space) ব্যবস্থাপনায় সাহায্য করে, অননুমোদিত ব্যবহার থেকে কম্পিউটারকে রক্ষা করে, এবং সংরক্ষিত উপাত্তের নিরাপত্তা নিশ্চিত করে। সাম্প্রতিক বছরগুলিতে অপারেটিং সিস্টেম ও তাদের সাথে সম্পর্কিত বিমূর্তায়নগুলি সাধারণ অ্যাপ্লিকেশন সফটওয়্যারের তুলনায় জটিলতর রূপ পেয়েছে।

কম্পিউটার বিজ্ঞানীরা কীভাবে অপারেটিং ব্যবস্থা আরও সহজে ব্যবহার করা যায়, সংবেদনশীল উপাত্তের ব্যবহারাধিকার প্রতিরোধ করে কীভাবে অন্যান্য উপাত্ত অংশীদারযোগ্য করা যায়, কীভাবে কম্পিউটারের স্মৃতি ও সময়ের আরও দক্ষ ব্যবহার করা যায়, তার চেষ্টা করেন।

কম্পিউটার নেটওয়ার্ক[সম্পাদনা]

একাধিক কম্পিউটার সংযুক্ত হলে একটি কম্পিউটার নেটওয়ার্ক গঠিত হয়। নেটওয়ার্কের কম্পিউটারগুলি কীভাবে একে অপরের সাথে যোগাযোগ স্থাপন করে ও তথ্যের আদান-প্রদান সম্পাদন করে, তার বিভিন্ন প্রোটোকল নিয়ে কম্পিউটার বিজ্ঞানীরা গবেষণা করেন। এ ব্যাপারে তাঁরা টেলিযোগাযোগ, তথ্য প্রযুক্তি ও হার্ডওয়্যার প্রকৌশল ক্ষেত্রগুলি থেকে অনেক তাত্ত্বিক ও ব্যবহারিক সাহায্য নেন। ল্যান, ওয়্যান, তারহীন (ওয়্যারলেস) নেটওয়ার্ক --- এই তিন ধরনের নেটওয়ার্কই বেশি দেখা যায়। ইন্টারনেট বিশ্বের সর্ববৃহৎ কম্পিউটার নেটওয়ার্ক।

কম্পিউটার বিজ্ঞানীরা পুরানো নেটওয়ার্কসমূহ ও ইন্টারনেটের বিবর্তন অধ্যয়ন করেন। তাঁরা বিভিন্ন নেটওয়ার্ক অ্যাপ্লিকেশন যেমন ইমেইল, টেলনেট, এফটিপি, নিউজগ্রুপ, ওয়েব ব্রাউজার, ইন্সট্যান্ট মেসেজিং, ইত্যাদি কীভাবে কাজ করে তার সম্পর্কে জ্ঞানলাভ করেন। তারা নেটওয়ার্ক স্থাপত্যের স্তরক্রমিক গঠন ও বিভিন্ন নেটোওয়ার্ক স্টান্ডার্ড বা মান সম্পর্কে সম্যক ধারণা অর্জন করেন। তাঁরা আধুনিক উদীয়মান নেটওয়ার্ক প্রযুক্তিগুলির উপযোগিতা, ভবিষ্যৎ সম্ভাবনা ও সীমা সম্পর্কেও ওয়াকিবহাল। কম্পিউটার নেটওয়ার্ক সম্পর্কে অধীত বিষয়গুলির মধ্যে আছে:

সফটওয়্যার প্রকৌশল[সম্পাদনা]

ব্যবহারকারী ও ক্রেতাদের চাহিদা মিটিয়ে কীভাবে দক্ষ ও কার্যকরী উপায়ে সফটওয়্যার ব্যবস্থাসমূহ নির্মাণ করা যায়, সফটওয়্যার বিজ্ঞানে সে-সম্পর্কিত তত্ত্ব ও কৌশল আলোচিত হয়। সফটওয়্যার প্রকৌশলীরা সঠিক, নির্ভরযোগ্য ও সহজে ভেঙ্গে পড়ে না, এমন প্রোগ্রাম তৈরির পদ্ধতি ও কলাকৌশল নিয়ে গবেষণা করেন। এতে সফটওয়্যারের জীবনচক্রের সমস্ত দশা, যথা - বিধিগত পদ্ধতিতে সমস্যার বিবরণ তৈরি, সমাধানের ডিজাইন তৈরি, প্রোগ্রাম আকারে সমাধানটির বাস্তবায়ন, প্রোগ্রামটির ভুলত্রুটি পরীক্ষা, ও প্রোগ্রামটির রক্ষণাবেক্ষণ - এই সব কিছু আলোচনা করা হয়। সফটওয়্যার প্রকৌশলীরা প্রোগ্রামিং পরিবেশ নামের হাতিয়ার-সংগ্রহ বানিয়ে থাকেন, যার সাহায্যে দ্রুত ও উন্নত উপায়ে প্রোগ্রাম লেখা যায়।

সফটওয়্যার বিজ্ঞানীরা প্রকৌশলের বিভিন্ন পদ্ধতি, প্রক্রিয়া, কলাকৌশল ও পরিমাপ পদ্ধতি প্রয়োগ করেন। সফটওয়্যার উন্নয়ন প্রক্রিয়া ব্যবস্থাপনা, সফটওয়্যারের বিভিন্ন অংশ বিশ্লেষণ ও মডেল তৈরিকরণ, মান যাচাই ও নিয়ন্ত্রণ, সফটওয়্যারের বিবর্তন ও পুনর্ব্যবহার নিশ্চিতকরণ ইত্যাদি সংক্রান্ত বিভিন্ন সরঞ্জাম ও উপকরণ তারা ব্যবহার করেন। কোন্‌ শরনের সফটওয়ার উন্নয়নে কোন্‌ ধরনের সরঞ্জাম, পদ্ধতি ও দৃষ্টিভঙ্গি সবচেয়ে বেশি প্রযোজ্য, তা যাচাই-বাছাইয়ের কাজও করে থাকেন তারা। কম্পিউটার অ্যাপ্লিকেশন উন্নয়নের যেসব ক্ষেত্রে পেশাদারিত্ব, মান, শিডিউল ও ব্যয়ের গুরুত্ব বেশি, সেসমস্ত ক্ষেত্রে সফটওয়্যার প্রকৌশল অবশ্য-প্রয়োজনীয়।

ডাটাবেস ও তথ্য আনয়ন ব্যবস্থাসমূহ[সম্পাদনা]

কীভাবে বিপুল পরিমাণ স্থায়ী ও অংশীদারযোগ্য উপাত্ত সুবিন্যস্ত করা যায়, যাতে এগুলো দক্ষভাবে ব্যবহার করা যায় ও হালনাগাদ করা যায়, তা-ই এই শাখার আলোচ্য। ডাটাবেস (database) হচ্ছে একাধিক রেকর্ডের সমষ্টি যা বিভিন্ন উপায়ে অনুসন্ধান ও হালনাগাদ করা যায়।

তথ্য আনয়ন ব্যবস্থা (information retrieval system) বলতে এক ধরনের ডকুমেন্ট-সমষ্টিকে বোঝায় যে ডকুমেন্টগুলো পরিষ্কারভাবে বিন্যস্ত নয়,অথচ এগুলো থেকে বিভিন্ন ধরনের তথ্য বা উপাত্ত অনুসন্ধান করা প্রয়োজন,যেমন - কোন সংবাদপত্রে প্রকাশিত বহু নিবন্ধের সমষ্টি। কম্পিউটার বিজ্ঞানীরা এই ডকুমেন্টগুলো থেকে উপাত্তের নির্ঘণ্ট (index) বের করার অ্যালগোরিদম রচনা করেন। নির্ঘণ্ট রচনার পর এগুলো থেকে সহজে উপাত্ত ও তথ্য আনয়নের জন্য বিভিন্ন ধরনের কৌশল প্রয়োগ করা হয়। তথ্য আনয়ন ব্যাবস্থার সাথে সম্পর্কিত আরেকটি ক্ষেত্র হচ্ছে উপাত্ত খনন (data mining), যেখানে বিপুল পরিমাণ উপাত্তের মধ্য থেকে বিভিন্ন বিন্যাস (pattern) শনাক্ত করার উপায়গুলো বের করা হয়; এই শনাক্তকৃত বিন্যাসগুলো পরবর্তীকালে সংশ্লিষ্ট ক্ষেত্রে নানা সিদ্ধান্ত গ্রহণে সাহায্য করে।

ডাটাবেস ও আনয়ন ব্যবস্থাসমূহের গবেষণায় যে সমস্ত তত্ত্ব প্রয়োগ করা হয়, তাদের মধ্যে আছে সাম্পর্কিক বীজগণিত (relational algebra), সাম্পর্কিক ক্যালকুলাস (relational calculus), সহবর্তমানতা তত্ত্ব (concurrency theory), ক্রমায়নযোগ্য আদান-প্রদান (serialiable transaction), ডেডলক প্রতিরোধ (deadlock prevention), সময়-সামঞ্জস্যীকৃত হালনাগাদ (synchronized upadte), নিয়ম-ভিত্তিক সিদ্ধান্তগ্রহণ (rule-based inference), বিন্যস্তকরণ (sorting), অনুসন্ধান (searching), নির্ঘণ্ট তৈরিকরণ (indexing), কর্মদক্ষতা বিশ্লেষণ (performance analysis), তথ্যের গোপনীয়তা (information privacy) ও তথ্য ব্যবহারকারীর পরিচয় যাচাইকরণ (authentication)।

উপাত্তের যৌক্তিক গঠন ও বিভিন্ন উপাত্ত উপাদানের মধ্যে সম্পর্ক বোঝার জন্য বিভিন্ন উপাত্ত মডেল ব্যবহার করা হয়, যেমন - বস্তুভিত্তিক, রেকর্ডভিত্তিকবস্তু-সাম্পর্কিক

প্রাতিষ্ঠানিক তথ্যবিজ্ঞান[সম্পাদনা]

প্রতিষ্ঠানের কর্মপ্রক্রিয়ায় এবং প্রতিষ্ঠানের কর্মচারীদের মধ্যে পারস্পরিক সমঝোতায় সহায়তাকারী তথ্যব্যবস্থাসমূহ প্রাতিষ্ঠানিক তথ্যবিজ্ঞানের আলোচ্য বিষয়। বিশ্ববাজারে সাফল্য লাভের জন্য যেকোন বাণিজ্যিক প্রতিষ্ঠানে তথ্যব্যবস্থার ব্যবহার অপরিহার্য। যেহেতু প্রাতিষ্ঠানিক কাজকর্ম মানুষেরা করে থাকেন, তাই তথ্যব্যবস্থাসমূহের ডিজাইনের সময় মানুষের কর্মপদ্ধতি সম্পর্কে গভীর ধারণা থাকা প্রয়োজন। অন্যদিকে কম্পিউটার বিজ্ঞানের নানা তত্ত্ব প্রাতিষ্ঠানিক সুবিন্যস্তকরণ প্রক্রিয়ায় সাহায্য করতে পারে। সিদ্ধান্ত বিজ্ঞান, ব্যবস্থাপনা, বাজারজাতকরণ, নৃবিজ্ঞান, বোধ বিজ্ঞান, মনোবিজ্ঞান, প্রাতিষ্ঠানিক গতিবিদ্যা, ইত্যাদি সবই কর্মক্ষেত্রে মানুষের আচরণ অনুধাবনে সহায়তা করে, এবং এই-সংক্রান্ত বেশির ভাগ তত্ত্বই কম্পিউটার মডেল, বিমূর্তায়ন ও সিমুলেশনে ব্যবহার করে পূর্বাভাস বের করতে কাজে লাগানো হয়।

জীব-তথ্যবিজ্ঞান[সম্পাদনা]

জীব-তথ্যবিজ্ঞান কম্পিউটার বিজ্ঞান ও জীববিজ্ঞানের সমন্বয়ে গঠিত একটি নতুন আন্তঃশাস্ত্রীয় ক্ষেত্র। এই ক্ষেত্রের বিজ্ঞানীরা এমন সব মডেল ও স্থাপত্য নিয়ে কাজ করছেন যেগুলো কম্পিউটিং, জীববিজ্ঞান ও চিকিৎসাবিজ্ঞানে বিপ্লব আনতে পারে। ডিএনএ রসায়ন ব্যবহার করে গুচ্ছবিন্যাসতাত্ত্বিক সমস্যার সমাধান করা হয়েছে। স্ট্রিং বিশ্লেষক অ্যালগোরিদম ব্যবহার করে মনুষ্য জিনোম প্রকল্পের বিরাট ডাটাবেস খুঁজে খুঁজে বিভিন্ন খণ্ডাংশের সমন্বয়ে মানুষের পূর্ণাঙ্গ জিনোম পাওয়া গেছে। কম্পিউটার স্থাপত্যবিদ ও চিকিৎসকেরা একসাথে বিভিন্ন কৃত্রিম জীব-যান্ত্রিক বা বায়োনিক অঙ্গ-প্রত্যঙ্গ তৈরি করছেন। জিন প্রকৌশলে কম্পিউটার বিশ্লেষণ ব্যবহার করে রোগ প্রতিষেধক এনজাইমের সঠিক রাসায়নিক গঠন বের করা হচ্ছে। এমনকি বর্তমানে কম্পিউটারে ব্যবহৃত স্মৃতির চেয়ে বহুগুণ বেশি ধারণক্ষমতাসম্পন্ন নতুন ধরনের জৈব স্মৃতি নিয়েও গবেষণা চলছে।

কৃত্রিম বুদ্ধিমত্তা[সম্পাদনা]

মানুষের বুদ্ধিমত্তা ও ইন্দ্রিয়ের কার্যপদ্ধতি কীভাবে কম্পিউটার ও যন্ত্রের সাহায্যে অনুকরণ করা যায়, তা কৃত্রিম বুদ্ধিমত্তা শাখার আলোচ্য বিষয়। বুদ্ধিমত্তা সম্পর্কে আমাদের ধারণা আরও উন্নত করার জন্য এই শাখায় মানুষের আচরণের কম্পিউটার মডেল তৈরি করা হয়। কৃত্রিম বুদ্ধিমত্তা শাখার বিভিন্ন উপশাখার মধ্যে রয়েছে যন্ত্র শিখন (machine learning), সিদ্ধান্ত উপনয়ন (inference), বোধন (cognition), জ্ঞান উপস্থাপন (knowledge representation), সমস্যা সমাধান (problem solving), ঘটনাভিত্তিক যুক্তিপ্রদান (case based reasoning), স্বাভাবিক ভাষা অনুধাবন (natural language understanding), উক্তি শনাক্তকরণ (speech recognition), কম্পিউটার দৃষ্টি (computer vision), কৃত্রিম নিউরাল নেটওয়ার্ক (artificial neural network), ইত্যাদি।

রোবটবিজ্ঞান[সম্পাদনা]

রোবট বা কম্পিউটার নিয়ন্ত্রিত যন্ত্রসমূহ ডিজাইন ও উৎপাদন সংক্রান্ত বিদ্যা হল রোবটবিজ্ঞান। খেলনা রোবট কিংবা কারখানায় ব্যবহৃত স্বয়ংক্রিয় পণ্য নির্মাণ ব্যবস্থা - এ সবই রোবটবিজ্ঞানের আওতাভুক্ত। রোবট বানানোর অন্যতম উদ্দেশ্য মানুষকে পুনরাবৃত্তিমূলক, বিপজ্জনক ও কঠোর পরিশ্রমের কাজ থেকে রেহাই দেওয়া এবং যেসব কাজে দ্রুতি, নির্ভুলতা ও পরিচ্ছন্নতা জরুরি, সেগুলো রোবটকে দিয়ে করিয়ে নেওয়া। রোবটবিজ্ঞানীরা রোবটের ভৌত বিশিষ্ট্য নির্ধারণ, রোবটের কাজের পরিবেশের মডেল বানানো, রোবটের কর্মপন্থা নির্ধারণ, রোবটের যান্ত্রিক কর্মকৌশলের দক্ষতা বৃদ্ধি, রোবটের আচরণ ও মানুষের নিরাপত্তা, ইত্যাদি নিয়ে গবেষণা করেন। তাঁরা রোবট নিয়ন্ত্রক প্রোগ্রাম লেখেন, এই প্রোগ্রাম কীভাবে সরল করা যায় তার চেষ্টা করেন এবং সেন্সরের ব্যবহারের মাধ্যমে নিয়ন্ত্রক প্রোগ্রামের কাছে ফিডব্যাক প্রদানের ব্যবস্থা করেন। তাঁরা রোবটদেরকে দিয়ে কীভাবে মানুষের মত কোন কিছু সুচারুভাবে সম্পাদন করা ও পরিবেশের সাথে মানিয়ে চলার ক্ষমতা অনুকরণ করানো যায়, তা নিয়েও গবেষণা করেন, এবং কৃত্রিম বুদ্ধিমত্তা শাখার বিজ্ঞানীদের সাথে এ নিয়ে মিলিতভাবে কাজ করেন।

কম্পিউটার গ্রাফিক্‌স[সম্পাদনা]

ভৌত এবং কাল্পনিক বস্তু ও তাদের গতি দ্বিমাত্রিক পর্দা বা ত্রিমাত্রিক হলোগ্রামে কম্পিউটারের মাধ্যমে প্রদর্শনের গবেষণাকে কম্পিউটার গ্রাফিক্‌স বলা হয়। কীভাবে দক্ষভাবে স্বয়ংক্রিয় উপায়ে বস্তুসমূহের ছবি তৈরি করা যায়, কীভাবে বাস্তব সময়ে (real time) জটিল বস্তুসমূহের চলন পর্দায় দেখানো যায়, কীভাবে তথ্যসেটসমূহ প্রদর্শন করা যায় যাতে মানুষের বুঝতে সুবিধা হয়, কীভাবে সিমুলেশন তৈরি করা যায় যাকে বাস্তব থেকে আলাদা করতে কষ্ট করতে হয়, ইত্যাদি এই শাখার আলোচ্য বিষয়।

কম্পিউটার গ্রাফিক্‌স গণিতের গণনামূলক জ্যামিতি শাখার প্রভূত সহায়তা নিয়ে থাকে। প্রদর্শন পর্দায় কীভাবে বস্তুসমূহের অভিক্ষেপ ফেলা যায়, অভিক্ষেপ থেকে লুকানো রেখাগুলি কী করে সরানো যায়, কীভাবে মসৃণতা, ছায়া, প্রতিফলন ও স্বচ্ছতা সৃষ্টি করা যায়, ইত্যাদি সংক্রান্ত নতুন নতুন অ্যালগোরিদম এ শাখায় উদ্ভাবন করার চেষ্টা করা হয়। জটিল প্রাকৃতিক দৃশ্যাবলীর অনুকরণ করার জন্য বিশৃঙ্খলা তত্ত্বের সাহায্য নেয়া হয়। পর্দায় আলোর রঙের ব্যাপারে রঙ তত্ত্বের সাহায্য নেয়া হয়। নমুনা তত্ত্ব ব্যবহার করে অবাঞ্ছিত কোলাহল দূর করে পরিচ্ছন্ন ছবি তৈরি করা হয়। এছাড়া রৈখিক বীজগণিত, পদার্থবিজ্ঞান, গাণিতিক বিশ্লেষণ, অরৈখিক ব্যবস্থা, এ সবই কম্পিউটার গ্রাফিক্‌সে কাজে আসে।

মনিটরের পর্দায় ছবি বা বর্ণ-সাংখ্যিক ক্যারেক্টার (Alphanumeric) দুই-ই প্রদর্শিত হতে পারে। কম্পিউটারের মেমরিতে যেকোন ছবি সাধারণত দুইভাবে সংরক্ষিত হতে পারে: র‌্যাস্টার গ্রাফিক্‌সভেক্টর গ্রাফিক্‌স। র‌্যাস্টার গ্রাফিক্‌সে যেকোন ছবি অনেকগুলি বিন্দুসমষ্টির একটি মেট্রিক্স হিসেবে গণ্য করা হয়। প্রতিটি বিন্দুর রঙ, উজ্জ্বলতা ও অন্যান্য তথ্য মেমরিতে এক বা একাধিক বিট আকারে রক্ষিত থাকে। একেকটি ছবির জন্য এভাবে যে বিপুল সংখ্যক মেমরির প্রয়োজন হয়, তা দক্ষভাবে ব্যবহারের জন্য কম্পিউটার গ্রাফিক্‌সের বিশেষায়িত প্রোগ্রামগুলিতে বিশেষ ধরনের অ্যালগোরিদম ব্যবহার করা হয়। ভেক্টর গ্রাফিক্‌সে একটি ছবি অনেকগুলি রেখার সমষ্টি হিসেবে পরিগণিত হয়। প্রতিটি রেখা-সংক্রান্ত তথ্য মেমরিতে রক্ষিত থাকে। ৯০-এর দশক থেকে কম্পিউটার মনিটরে র‌্যাস্টার প্রযুক্তিই ব্যবহৃত হয়। এমনকি ভেক্টর প্রযুক্তিতে তৈরি ছবিও র‌্যাস্টারে পরিণত করে নেয়া হয়। র‌্যাস্টার পদ্ধতির সীমাবদ্ধতা হল এতে কোনাকুনি রেখাগুলি কাছ থেকে খাঁজ-কাটা দেখায়।

কম্পিউটার গ্রাফিক্‌সের ব্যবহার সবচেয়ে বেশি পরিলক্ষিত হয় বিনোদন শিল্পে। স্পেশাল ইফেক্ট, কম্পিউটার অ্যানিমেশন, সিমুলেশন, ইত্যাদি কম্পিউটার বিজ্ঞানের এই শাখার অবদান। কম্পিউটার গ্রাফিক্‌সের গবেষণা বেশ কিছু গ্রাফিক্‌স মান বা স্ট্যান্ডার্ডের জন্ম দিয়েছে যেমন GKS, PHIGS, VDI, ইত্যাদি। এছাড়াও রয়েছে মান প্রিণ্টার ভাষা যেমন- পোস্টস্ক্রিপ্ট। ওয়েব পেজে ভার্চুয়াল রিয়ালিটির জন্য মান ভাষা VRML সৃষ্টি করা হয়েছে। চিকিৎসকদের সাহায্য করার জন্য তৈরি করা হয়েছে ত্রিমাত্রিক ভিজুয়ালাইজার।

মানুষ-কম্পিউটার আন্তঃক্রিয়া[সম্পাদনা]

মানুষ কীভাবে ইন্টারঅ্যাকটিভ অর্থাৎ আন্তঃক্রিয়াশীল বস্তুর সাথে আচরণ করে, তার উপর ভিত্তি করে মানুষের দ্বারা সহজে ব্যবহারযোগ্য সফটওয়্যার ডিজাইন, নির্মাণ ও মূল্যায়নের নীতিগুলি মানুষ-কম্পিউটার আন্তঃক্রিয়া নামের ক্ষেত্রে আলোচিত হয়। এর মধ্যে রয়েছে গ্রাফিকাল ইউজার ইন্টারফেস বা গুই ডিজাইন, মাল্টিমিডিয়া মিথস্ক্রিয়া, উক্তি শনাক্তকরণ ও অন্যান্য কৃত্রিম বুদ্ধিমত্তাভিত্তিক উপায়সমূহ, নেটওয়ার্কের মাধ্যমে যোগাযোগ ও সহযোগিতা, ইত্যাদি ব্যাপারগুলি।

গণনামূলক বিজ্ঞান[সম্পাদনা]

কম্পিউটার বিজ্ঞানের আদি যুগ থেকেই বৈজ্ঞানিক কম্পিউটিং-এর বিভিন্ন কলাকৌশল এবং গণনামূলক পদ্ধতিসমূহ কম্পিউটার বিজ্ঞানের গবেষণার একটি বড় অংশ। সময়ের সাথে কম্পিউটারসমূহের সমস্যা সমাধানের ক্ষমতা বৃদ্ধি পাওয়ার সাথে সাথে এই ক্ষেত্রটির গুরুত্ব ও প্রসার দুই-ই বৃদ্ধি পেয়েছে। বর্তমানে বৈজ্ঞানিক কম্পিউটিং একটি আলাদা শাস্ত্র হিসেবে স্বীকৃত হলেও কম্পিউটার বিজ্ঞানের সাথে এর সম্পর্ক অত্যন্ত নিবিড়। গণনামূলক বিজ্ঞানে আগ্রহী কম্পিউটার বিজ্ঞানীরা বিভিন্ন গুরুত্বপূর্ণ ধারণা ও কলাকৌশল নিয়ে অধ্যয়ন করেন, যাদের মধ্যে রয়েছে সাংখ্যিক উপস্থাপনের যথার্থতা, ত্রুটি বিশ্লেষণ, সাংখ্যিক কলাকৌশল, সমান্তরাল স্থাপত্য ও অ্যালগোরিদমসমূহ, মডেলিং ও সিমুলেশন, এবং বৈজ্ঞানিক ভিজুয়ালাইজেশন। তাঁরা এই জ্ঞান বিভিন্ন ব্যবহারিক ক্ষেত্র যেমন - আণবিক গতিবিজ্ঞান, প্রবাহী বলবিজ্ঞান, জ্যোতিষ্কসমূহের বলবিজ্ঞান, অর্থনৈতিক পূর্বাভাস, অপটিমাইজেশন সমস্যা, পদার্থের গাঠনিক বিশ্লেষণ, জীবতথ্যবিদ্যা, গণনামূলক জীববিজ্ঞান, ভূতাত্ত্বিক মডেলিং, কম্পিউটারায়িত টমোগ্রাফি, ইত্যাদি নানা ক্ষেত্রে প্রয়োগ করার সুযোগ পান। গণনামূলক বিজ্ঞানে অধীত বিষয়গুলির মধ্যে আছে:

  • সাংখ্যিক বিশ্লেষণ: ফ্লোটিং-পয়েন্ট বা ভাসমান বিন্দু পাটীগণিত; ত্রুটি, স্থিরতা, অভিসৃতি; টেইলর ধারা, নিউটনের পদ্ধতি; বক্ররেখার ফিটিং, ফাংশনের আসন্নীকরণ; সাংখ্যিক অন্তরকলন ও যোগজকলন, সিম্পসনের নিয়ম; অয়লারের পদ্ধতি; যোগাশ্রয়ী বীজগণিত; সসীম পার্থক্য।
  • অপারেশন্‌স গবেষণা: যোগাশ্রয়ী প্রোগ্রামিং, পূর্ণসংখ্যা প্রোগ্রামিং, সিম্পলেক্স পদ্ধতি; সম্ভাবনাভিত্তিক মডেলিং; কিউইং তত্ত্ব, পেট্রি নেট, মার্কভ মডেল ও শৃঙ্খল; অপ্টিমাইজেশন; সিদ্ধান্ত বিশ্লেষণ, পূর্বাভাস, ঝুঁকি ব্যবস্থাপনা, সংবেদনশীলতা বিশ্লেষণ; ডায়নামিক প্রোগ্রামিং।
  • মডেলিংসিমুলেশন: দৈব সংখ্যাসমূহ, ছদ্মদৈবসংখ্যা সৃষ্টি ও পরীক্ষা, মন্টি কার্লো পদ্ধতি, বণ্টন ফাংশন; বিচ্ছিন্ন-ঘটনা সিমুলেশন, অবিচ্ছিন্ন সিমুলেশন; সিমুলেশনের যাচাইকরণ ও বৈধতা প্রদান।
  • উচ্চ-দক্ষতার কম্পিউটিং: প্রসেসর স্থাপত্য, মেমরি ব্যবস্থা, পাইপলাইন, সমান্তরাল ভাষা ও স্থাপত্য; বৈজ্ঞানিক ভিজুয়ালাইজেশন, উপাত্ত ফরম্যাট, ফলাফলের উপস্থাপন, ভিজুয়ালাইজেশন টুলস।

আরও দেখুন[সম্পাদনা]

তথ্যসূত্র[সম্পাদনা]

  1. Comer, D. E.; Gries, D., Mulder, M. C., Tucker, A., Turner, A. J., and Young, P. R. (Jan. 1989)। "Computing as a discipline"Communications of the ACM 32 (1)। ডিওআই:http://doi.acm.org/10.1145/63238.63239|doi= মান পরীক্ষা করুন (সাহায্য)। "Computer science and engineering is the systematic study of algorithmic processes-their theory, analysis, design, efficiency, implementation, and application-that describe and transform information."  |coauthors= প্যারামিটার অজানা, উপেক্ষা করুন (সাহায্য)
  2. Wegner, P. (October 13 - 15, 1976)। "Research paradigms in computer science"। Proceedings of the 2nd international Conference on Software Engineering। San Francisco, California, United States: IEEE Computer Society Press, Los Alamitos, CA। "Computer science is the study of information structures" 
  3. "Computer science is the study of computation." Computer Science Department, College of Saint Benedict, Saint John's University
  4. "Computer Science is the study of all aspects of computer systems, from the theoretical foundations to the very practical aspects of managing large software projects." Massey University
  5. "Common myths and preconceptions about Cambridge Computer Science" Computer Science Department, University of Cambridge
  6. http://www.cs.purdue.edu/history/history.html

বহিঃসংযোগ[সম্পাদনা]

Wikibooks
উইকিবই প্রকল্পে নিম্নের বিষয়ের উপরে সহায়িকা, বই, বা তথ্য রয়েছে: