Nur Amin Sifat
6 min readApr 28, 2023

--

Source: www.pexels.com

কম্পিউটার সাইন্সে কোন কোর্স কেন পড়ানো হয় ?(Some major courses)

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

তাই যতগুলো ম্যাথ কোর্স থাকবে মনোযোগ দিয়ে করতে হবে, পাশাপাশি কম্পিউটার সাইন্সে এই ম্যাথ কনসেপ্টের এপ্লিকেশন গুলো কি কি, সেটা জানতে হবে বুঝতে হবে। একটা উদাহরণ দিলে মন্দ হয় না সেটা হচ্ছে লিনিয়ার এলজেব্রা, তার মধ্যে আছে ম্যাট্রিক্স, স্ট্যাটিস্টিক্স, প্রভাবিলিটি ইত্যাদি। লিনিয়ার এলজেব্রা ডাটার নিয়ে কাজ, সেই জন্য লিনিয়ার এলজেব্রাকে বলা হয় গণিতের ডাটা( math of data)। তাই যারা ভবিষ্যতে মেশিন লার্নিং নিয়ে কাজ করতে ইচ্ছুক তাদের জন্য এই ম্যাথ জানতেই হবে।

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

প্রোগ্রামিং ল্যাংগুয়েজ

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

এল্গোরিদম ও ডাটা স্ট্রাকচার:

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

ডিসক্রিট ম্যাথমেটিক্স :

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

অপারেটিং সিস্টেম এবং কম্পিউটার আর্কিটেকচার:

OS হচ্ছে কম্পিউটার সাইন্সের মেজর কোর্স যেটা ছাড়া সব কিছু অনর্থক। এই কোর্সে আমাদের শেখানো হয় একটা এপ্লিকেশন সফটওয়্যার কিভাবে হার্ডওয়্যারের সাথে কাজ করে, এপ্লিকেশন ও হার্ডওয়্যারের ইন্টারেকশন কিভাবে হয় ইত্যাদি। তাছাড়া একটা OS কিভাবে বিভিন্ন থ্রেড, ডাটা প্রসেস, ফাইল হ্যান্ডেলিং, মেমোরি ম্যানেজমেন্ট এবং ইনপুট/আউটপুট হ্যান্ডেল করে তা শেখানো হয়। শিডিউলিং, রেস কন্ডিশন এর বিভিন্ন টেকনিক নিয়ে আলোচনা করা হয়।

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

অব্জেক্ট ওরিয়েন্টেড প্রোগ্রামিং:

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

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

ডাটাবেইজ ম্যানেজমেন্ট সিস্টেম:

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

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

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

সফটওয়্যার ইঞ্জিনিয়ারিং:

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

আর্টিফিশিয়াল ইন্টেলিজেন্স:

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

ওয়েভ টেকনোলজি:

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

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

--

--

Nur Amin Sifat

I'm a Associate Software Engineer at Brain Station 23 and Data Security learner as well.