প্রোগ্রামিং এর জন্য ম্যাথ কতটুকু লাগে বা কি কি ম্যাথ জানা থাকতে হয়?
আমরা যারা নতুন প্রোগ্রামিং শিখতে চাই, তাদের মনে একবার না একবার এই প্রশ্নটা আসেই। আর যারা গণিত ভাল পারে না, কিন্তু প্রোগ্রামিং শিখতে আগ্রহী, তাদের মনে এই প্রশ্নটা প্রথমেই আসে। প্রোগ্রমিং শেখার জন্য গনিত কতটুকু লাগে সেটা বললে বলতে হয় তেমন একটা লাগেনা। অর্থাৎ গনিতের বেসিক জানলেই চলে। যেমন ধরেন আপনি দোকানে গিয়ে ১৩ টাকার কোন পন্য কিনে দোকানিকে ২০ টাকার একটা নোট দিয়েছেন, এখন দোকানি আপনাকে কতটাকা ফেরত দিবে? এটা জানতে নিশ্চয় অনেক বড় কোন ক্যালকুলেশন এর প্রয়োজন নাই। এইটুকু জানলেই প্রোগ্রামিং শেখা শুরু করা যায়।
কিন্তু প্রোগ্রামিং এর অনেক গুলো সেক্টর আছে। এক এক সেক্টরে এক এক রকম কাজ থাকে। আপনি কোন সেক্টরে কি টাইপের কাজ করতেছেন সেটার উপর নির্ভর করে আপনার কতটুকু গনিত জানার প্রয়োজন। সাধারণ অ্যাপ বা ওয়েব ডেভেলপমেন্টে গণিতের কোনো বিশেষ ‘প্যারা’ নেই, গেম ডেভেলপমেন্টে পদে পদে স্থানাঙ্ক, ত্রিকোণমিতি, ম্যাট্রিক্স, ভেক্টর আর পদার্থবিজ্ঞানের ব্যাসিক খুব কাজে দিবে। অ্যাডভান্সড ডাটাবেজ অপারেশন বুঝতে গেলে সেট থিওরি সম্পর্কে জ্ঞান থাকতে হবে। সিমুলেশন, PID, সিগনাল প্রসেসিং ইত্যাদি ফিল্ডে ক্যালকুলাস এর কনসেপ্ট কাজে দিবে। আর্টিফিশিয়াল ইন্টেলিজেন্স, মেশিন লার্নিং, ডেটা মাইনিং শিখতে গেলে লিনিয়ার এলজেব্রা, ডিসক্রিট ম্যাথ, পরিসংখ্যান, ম্যাট্রিক্স, ক্যালকুলাস এগুলো জানতে হবে।
আপনি যদি কম্পিটিটিভ প্রোগ্রামিং নিয়ে আগ্রহী হয়ে থাকেন তাহলে আপনার গণিত পারাটা দরকার। কারণ কম্পিটিটিভ প্রোগ্রামিং-এ আপনার সমস্যার সমাধার করতে হয়। আর এই সমস্যাগুলোর গণিতের সাথে একটা সম্পর্ক আছে। সো গনিত না পারলে আপনি কম্পিটিটিভ প্রোগ্রামিংয়ে ভালো করতে পারবেন না।
তবে ভালো লেভেল এর প্রোগ্রামার হওয়ার জন্য স্কুল পর্যায়ের গনিতগুলো জানা থাকলেই এনাফ। অর্থাৎ ক্লাস ৪-১০ পর্যন্ত গনিতগুলো জানলেই হবে। মোটামুটি যে সব গনিত জানা থাকা প্রয়োজন সেগুলোর একটা লিস্ট দেওয়া হলো –
- যোগ-বিয়োগ করা
- গুণ-ভাগ, গুননিয়ক, গুনিতক, ভাজক, ভাজ্য, ভাগফল, ভাগশেষ
- সূচক/এক্সপোনেন্ট(power)
- পূর্ণ সংখ্যা, ভগ্নাংশ, মুলদ-অমুলদ সংখ্যা, মৌলিক সংখ্যা।
- লসাগু গসাগু
- গাণিতিক ক্রম (1, 2, 3, …)
- জ্যামিতিক ক্রম (1 ^ 2, 2 ^ 2, 3 ^ 2, …)
- কিভাবে সংখ্যার যোগফল বের করা হবে (লুপ / গাণিতিক ক্রম-এর জন্য)
- বাইনারি সংখ্যা, হেক্সাডেসিমেল সংখ্যা, অকটাল সংখ্যা
- ফ্যাক্টোরিয়াল
- ফাংশন
- ফিবোনাচ্চি সিরিজ
- সর্বোচ্চ মান / উচ্চ সীমা / পূর্ণসংখ্যা নির্দিষ্ট বাইটগুলির নিম্ন সীমা (32-বিট বনাম 64-বিট)
- বর্গমূল
- সংখ্যার তুলনা
- বিট ম্যানিপুলেশন (এবং, অথবা, Xor, Not, Xnor, Neg, Nand, Nor, Left Shift, Right Shift)
- বুলিয়ান এলজেব্রা (সত্য বা মিথ্যা)
- ভেক্টর (কার্টেসিয়ান)
- ম্যাট্রিক্স
- সম্ভাবনা/প্রোবাবিলিটি (Probability)
এবার আসাযাক গনিত কোত্থেকে শিখবেন?
- ক্লাস ৪-১০ পর্যন্ত গনিত বইগুলোর উদাহরণ এবং ব্যাখ্যা।
- প্রোগ্রামিং প্রতিযোগিতার গাণিতিক দুর্বলতা দূর করার জন্য অনলাইনের কিছু সাইটে অনুশীলন করা যেতে পারে। এজন্য ProjectEuler বেশ জনপ্রিয় একটি মাধ্যম। আমাদের দেশে GonitZoggo নামে একটি ওয়েবসাইট চালু হয়েছে যেখানে স্কুল পর্যায়ের গাণিতিক সমস্যা পাওয়া যায়।
- কিছু ভালো ইউটিব চ্যানেল – Chamok Hasan, Mottasin Pahlovi- BUETian, 3Blue1Brown, Khan Academy
- ভালো কিছু বই – গনিত করবো জয় (তামিম শাহরিয়ার সুবিন), নিবিড় গণিত (চমক হাসান), অঙ্ক ভাইয়া (চমক হাসান)
- যারা ইংরেজি মোটামুটি বুঝেন তারা চাইলে কোর্সেরা, ইউডেমি বা এরকম বিভিন্ন অনলাইন প্লাটফর্মে রিলেটেড কিছু ফ্রি কোর্স করতে পারেন।
এভাবে ম্যাথ রিলেটেড টপিকগুলো আপনি বিভিন্ন মাধ্যম থেকে নিজে নিজে শিখতে পারেন। আর আপনার যদি মনে হয়ে থাকে আপনার একটা গাইডেড পরিবেশে থেকে ম্যাথ সহ প্রোগ্রামিং এর কোর সাবজেক্ট এবং কন্সেপ্টগুলো শিখে একজন ভালো মানের প্রোগ্রামার প্লাস প্রবলেম সলভার হবেন তাহলে আপনি সিএসই ফান্ডামেন্টাল উইথ ফাইট্রনে এনরোল করতে পারে। সুখবর হচ্ছে সিএসই ফান্ডামেন্টাল উইথ ফাইট্রনে এইবার থেকে এড করা হয়েছে ম্যাথ ফর প্রোগ্রামিং। যেখানে প্রোগ্রামিং এর জন্য প্রয়োজনীয় বেসিক ম্যাথ গুলো শেখানোর মধ্য দিয়ে আপনার প্রোগ্রামিং জার্নি স্টার্ট হবে।