Thursday, January 17, 2013

কম্পিউটার ও গণনামূলক বিজ্ঞান

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

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

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

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

কম্পিউটার গ্রাফিক্স

কম্পিউটার গ্রাফিক্স
 

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

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

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

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

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

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

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

কম্পিউটার ও কৃত্রিম বুদ্ধিমত্তা

কম্পিউটার ও কৃত্রিম বুদ্ধিমত্তা

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

কম্পিউটার ও জীব-তথ্যবিজ্ঞান

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

কম্পিউটার ও প্রাতিষ্ঠানিক তথ্যবিজ্ঞান

কম্পিউটার ও প্রাতিষ্ঠানিক তথ্যবিজ্ঞান

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

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

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

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

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

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

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

সফটওয়্যার প্রকৌশল

সফটওয়্যার প্রকৌশল

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

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

কম্পিউটার নেটওয়ার্ক

কম্পিউটার নেটওয়ার্ক

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

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

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

অপারেটিং সিস্টেম

অপারেটিং সিস্টেম

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

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

কম্পিউটার স্থাপত্য

কম্পিউটার স্থাপত্য

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

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

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

প্রোগ্রামিং ভাষাসমূহ

প্রোগ্রামিং ভাষাসমূহ

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

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

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

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

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

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

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

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

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

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

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

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

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

কম্পিউটার বিজ্ঞানের কতগুলি বৃহত্তর শাখা

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

বিচ্ছিন্ন গণিত

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

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

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

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