আজ কয়েকদিন যাবৎ দুইটা প্রশ্ন করতে দেখে ভাবলাম এটা নিয়ে একটা বিস্তারিত পোস্ট করি। কারণ অনেক এই এটা নিয়ে কনফিউজড। তবে যারা এই সব ব্যাপার নিয়ে চিন্তা করে বা কনফিউজড থাকে বা চুল চেরা বিশ্লেষণ করতে বসে আমার তাদের জ্ঞান বা তাদের নিয়ে প্রশ্ন থাকে যায়। যায় হোক, প্রশ্নগুলো ছিল.....?
প্রশ্ন ১ : ভাইয়া সফটওয়্যার ইঞ্জিনিয়ার আর কম্পিউটার ইঞ্জিনিয়ার এর মধ্যে পার্থক্য কি..?
উত্তর : অবশ্যই পার্থক্য আছে। দুইটা অবশ্যই এক বিষয়বস্তু নয় যদি তাই হতো তাহলে দুইটা ডিপার্টমেন্টকে আলাদা করা হতো না। যেহেতু আলাদা সেহেতু এদের মধ্যে অবশ্যই পার্থক্য আছে তবে এই পার্থক্যটা আসলে কি, এটা আমার পোস্টটা পড়ার পড়ে আপনারা নিজেরাই খুঁজে বেড় করে ইনশাআল্লাহ্ আমাকে জানাতে পারবেন কিংবা নিজেদের মধ্যে ক্লিয়ার কনসেপ্ট পাবেন। তার আগে চলুন দেখে নেওয়া যাক, কম্পিউটার ইঞ্জিনিয়ার আর সফটওয়্যার ইঞ্জিনিয়ার এর সিলেবাসটা। এইখানে আমি ৪ বছরের পুরো কোর্স প্লান দিয়ে দিচ্ছি, আশাকরি দুইটা সিলেবাস এর মধ্যে কমপেয়ার করে আপনারা নিজেরাই বুঝতে পারবেন, আসলে পার্থক্যটা কি আর পার্থক্যটা ঠিক কতোটুকু।
১. https://swe.daffodilvarsity.edu.bd/.../undergraduate-studies ( ড্যাফোডিল ইউনিভার্সিটি )
২. https://goo.gl/rPoySZ... ( সাস্ট )
১. https://www.bracu.ac.bd/.../bachelor-science.../cse-0 ( ব্রাক ইউনিভার্সিটি )
২.
আমি এই খানে দুই + দুই মোট চারটা ভার্সিটি এর কোর্স প্লান দিয়ে দিয়েছি। আশাকরি এই সিলেবাসটা দুইজনের মধ্যে কমপেয়ার করলে পার্থক্যটা প্যাকটিক্যালি বুঝতে আপনাদের সুবিধা হবে। তারপরেও কিছু কথা এই প্রসঙ্গে বলি...
কম্পিউটার ইঞ্জিনিয়ার এবং সফটওয়্যার ইঞ্জিনিয়ারের মধ্যে বেসিক পার্থক্য হল:
কম্পিউটার ইঞ্জিনিয়ারিং এ কম্পিউটারের হার্ডওয়্যারের উপর বেশি জোড় দেওয়া হয়। একটি কম্পিউটারের গঠন, কার্যপ্রণালী ইত্যাদি বিষয়ে শিক্ষা দেওয়া হয়। এখানে সফটওয়্যারের যে পার্টটুকু থাকে তাও অধিকাংশ সিস্টেম রিলেটেড সফটওয়্যার অন্যদিকে সফটওয়্যার ইঞ্জিনিয়ারিং এর মূল বিষয়ই থাকে সফটওয়্যার ডিজাইন ও ডেভলপমেন্টের উপর। একটি সফটওয়্যার তৈরির রিকোয়ারমেন্ট কালেকশন, এনালাইসিস, ডিজাইন ও ডেভলপমেন্ট সহ যাবতীয় বিষয় সম্পর্কে এখানে ধারণা দেওয়া হয়। কম্পিউটার সাইন্স একটা বিস্তৃত ক্ষেত্র নিয়ে কাজ করে, যার অনেক অংশ জুড়ে রয়েছে গণিত। সহজ কথায় কম্পিউটার সাইন্সের ক্ষেত্রগুলো মোটামুটি নিচের মতঃ
প্রথম লিষ্ট :
1. Discrete math (graph theory, combinatorics, logic)
2. Programming language theory (type theory, compilers, languages)
3. Information theory (crypto, errors, compression)
4. Theory of computation (complexity, crypto, automatons)
5. Algorithms & data structures (can also include complexity via algo analysis)
6. AI (machine learning, robotics, pattern recognition, data mining)
7. Parallel & distributed computing (concurrency, communication/networks, HPC)
8. Architecture and systems (digital logic, OS, networking, systems arch.)
9. Computational fields (scientific computing, numerics, could also include graphics/visualization)
10. Graphics (computer vision in some cases, geometry)
এবার আসা যাক সফটওয়ার ইঞ্জিনিয়ারিং-এর কথায়। সফটওয়ার ইঞ্জিনিয়ারিং-এ যেসব বিষয় নিয়ে কাজ করা হয়, সেগুলো হলঃ
দ্বিতীয় লিষ্ট :
1. Software architecture and design
2. Scalability and maintainability
3. Validation, automation, and testing
4. Quality assurance
5. UI/UX
6. Systems (sometimes)
একটু খাটাখাটুনি করে দেখলেই বুঝতে পারবেন যে, দ্বিতীয় লিস্টের অনেক কিছুই করা যাবে না, যদি না আপনি প্রথম লিস্টের বিষয়গুলো সম্পর্কে প্রাথমিক ধারণা না রাখেন। এ কারণে আপনাদের এগুলো পড়তে গেলে প্রথম লিস্টের বিষয়গুলো নিয়েও জানতে হবে। ব্যাপারটা অনেকটা পদার্থবিজ্ঞানী এবং মেকানিকাল ইঞ্জিনিয়ারের মতো। মেকানিকাল ইঞ্জিনিয়ার ফিজিক্সের অনেক কিছুই ব্যবহার করে। কিন্তু ফিজিক্সের খুঁটিনাটি জানতে গেলে আশ্রয় নিতে হবে পদার্থবিজ্ঞানীর কাছেই।কম্পিউটার সাইন্স মূলত কম্পিউটারের খুঁটিনাটি কীভাবে কাজ করে, তা নিয়েই। অপরদিকে সফট্বার ইঞ্জিনিয়ারিং কাজ করে কম্পিউটার সাইন্স থেকে প্রাপ্ত জ্ঞান কীভাবে প্রোজেক্ট বানাতে কাজে লাগানো যায়, তা নিয়ে। সফটওয়ার ইঞ্জিনিয়ারিং-এ এসে আপনাকে জানা লাগবে কীভাবে একটা সফটওয়ার ডিজাইন করতে হয়, বানাতে হয়, এবং মেইন্টেইন করতে হয়।
আর সফটওয়্যার ইঞ্জিনিয়ার এর কোর্স গুলো সিলেবাস খুঁজলেই পাবেন, তারপরও কিছু কিছু কোর্স এইখানে ইনক্লুয়িড করে দিলাম।
-স্ট্রাকচারড প্রোগ্রামিং
-ডিসক্রিট ম্যাথমেটিক্স
-অব্জেক্ট অরিয়েন্টেড প্রোগ্রামিং
-কম্পিউটার আর্কিটেকচার
-কম্পিটিটিভ প্রোগ্রামিং
-অ্যালগরিদম
-অপারেটিং সিস্টেম ও সিস্টেম প্রোগ্রামিং
-সফটওয়ার আর্কিটেকচার
-নেটওয়ার্কিং
-ডাটাবেজ ম্যানেজমেন্ট
-সফটওয়ার ইউজাবিলিটি, ভেরিফিকেশন ও ভ্যালিডেশন
-ডাটা সাইন্স
-নেটওয়ার্ক সিকিউরিটি
-ওয়েব টেকনোলজিস
-আর্টিফিশিয়াল ইন্টেলিজেন্স
-ইমেইজ প্রোসেসিং ইত্যাদি
সাথে অপশনাল কোর্স হিসেবে বেছে নেওয়া যাবে মেশিন লার্নিং, নিউরাল নেটওয়ার্ক, ডিপ লার্নিং, ক্লাউড কম্পিউটিং, বায়ো-ইনফর্মেট্রিক্স, ক্রিপ্টোগ্রাফি সহ আরো বেশ কিছু কোর্স।
যায় হোক, আমাদের বাংলাদেশ এর কোর্স প্লানিং এ কম্পিউটার সাইন্স অ্যান্ড ইঞ্জিনিয়ার আর সফটওয়্যার ইঞ্জিনিয়ার মূলত একইভাবেই পড়ানো হয়। সামান্য কিছু শুধুমাত্র পার্থক্য থাকে। হয়তোবা উপরে আমার আলোচনা থেকে এই ব্যাপার এ পার্থক্য আর ঠিক কতোটুকু পার্থক্য তা বুঝে গেছেন। সেই সাথে আমি দুইটা সাবজেক্ট এর ই ৪ বছর এর সিলেবাসটাও শেয়ার করেছি। যেটা কমপেয়ার করলে, এটা নিয়ে আমার মনে হয় না, আর কোন প্রশ্ন কারো মনে থাকার কথা কিংবা এই ব্যাপারে কোন খুঁদ কিংবা সংশয় থাকার কথা।
প্রশ্ন ২ : ভাইয়া শুনেছিলাম ২০৩০ সালে সফটওয়্যার বা ডেভোলপ এর কাজ রোবট করবে, তাহলে কি যারা ডেভোলপার তারা কি বেকার হয়ে যাবে.?
উত্তর : মোটেও না। আসলে পৃথীবিতে প্রতিটা জিনিষ এর ই পজেটিভ সেই সাথে নেগেটিভ সাইড আছে। কেউ ই এই দুটোর উর্দ্ধে না, সেটা হোক মানুষ কিংবা রোবট। আমি এটা নিয়ে অনেক বড় একটা পোস্ট লিখে দিতে পারবো, কিন্তু সেটা আমি করবো না। আমি শুধুমাত্র এইখানে ২/৩টা কথা বলবো, আশাকরি এতেই এই ব্যাপারটা ক্লিয়ার হয়ে যাবে। প্রথমত বিশ্বের ৬০% সব কাজ এর মধ্যে ৩০% কাজ রোবট দিয়ে করার পরিকল্পনা অনেক আগের থেকেই হয়ে আসছে। যায় হোক, আল্লাহ মানুষকে সৃষ্টিশীল কাজ করার জন্য মেধা দিয়েছেন, মানুষের ক্রিয়েটিভি আছে, আছে মেধা শক্তি এই দুটোর মিশ্রণের ফলে মানুষ নতুন অনেক কিছু সৃষ্টি করতে পারে। সৃষ্টি হোক ছোট কিংবা বড়, সৃষ্টি তো সৃষ্টিই। যায় হোক, রোবট মানব সৃষ্টি, সেটা কখনোই মানুষের মতো মেধা সেই সাথে ক্রিয়েটিভি নেই সেহেতু এটা কোন কিছুই সৃষ্টি করতে পারবে না। একটা রোবটকে পরিচালনা করার জন্য মানুষ যতোটুকু প্রোগ্রাম কিংবা কমান্ড ইনপুট দিবে তার বাইরে একটা কাজ করার ক্ষমতাও রোবট এর থাকে না। এখন অনেক এর মনে প্রশ্ন জাগতে পারে, AI ( কৃত্রিম বুদ্ধিমত্তা ) এর কথা। অনেক এই বলতে পারেন, তাহলে ভাইয়া আজকাল রোবট এর মধ্যে তো AI ইনপুট করা থাকে, যার কারণে তারা নতুন অনেক সফটওয়্যার কিংবা অনেক কিছু তৈরী করেছে। তাহলে এর বেলায় কি ধরে নিতে পারি আমরা। এর উত্তর হলো, আসলে আমাদের ভুলে যাওয়া উচিৎ না পৃথীবিতে সবার ই একটা নির্দিষ্ট পরিমাণ এর গন্ডি আছে। আপনাদের ধারণা AI থাকলে রোবট তো মানুষের সাথে পাল্লা দিতে পারবে। চিন্তাটা অবশ্যই আপনাদের ভুল না, আবার সঠিক যে সেটাও না। একটা রোবট সে যতো বড় শক্তিশালী ই হোক, সে মানুষের উর্দ্ধে কখনোই যেতে পারবে না। কৃত্রিম বুদ্ধিমত্তা ( AI ) সম্পন্ন রোবটও না। কারণ মানুষের প্রোগ্রাম বা কমান্ড এর বাইরে তার নতুন কিছু অ্যাড করার ক্ষমতা খুব ই কম রাখে। একটা কথা সর্বদা মাথায় রাখবেন, মানুষ আল্লাহ এর সৃষ্টি, আর রোবট মানুষের সৃষ্টি। আমরা কখনোই যেমন সৃষ্টিকর্তার সমতুল্য হতে পারবো না, ঠিক তেমনি রোবট ও না। আর হ্যাঁ ২০৩০ সালে কখনোই রোবট আসবে না, এটা সফলভাবে বাস্তবায়িত হতে হতে আরও ৫০ থেকে শত বছর ও লেগে যেতে পারে। আর হ্যাঁ সমস্যাই প্রয়োজনের উৎপত্তি, তাই তখন রোবটকে মেইনটেইন থেকে শুরু করে নতুন অনেক কর্মক্ষেত্র এর দুয়ার আপনাআপনি ই খুলে যাবে। তাই এটা নিয়ে চিন্তা করা মানেই বোকামীর সামিল। তার থেকে কাজ করুণ মন দিয়ে, আর সেই সাথে নিজেকে যোগ্য প্রমাণ করুন।
Comments
Post a Comment