প্রোগ্রামিং প্রতিযোগিতার নানান ধরন ।

sakib ahamed shahon - Feb 10 - - Dev Community

কন্টেস্ট বললেই সাধারণত এলগোরিদমিক কন্টেস্ট এর কথা মনে পরে শুরুতে । তবে প্রোগ্রামিং ওরিয়েন্টেড প্রতিযোগিতা অনেক ধরনেরই হয়।
তার মধ্যে ৪ ধরনের প্রতিযোগিতা সম্পর্কে বলি :

১ - এলগোরিদমিক কন্টেস্ট --> মূলত কিছু প্রোগ্রামিং সমস্যা সমাধান করা লাগে যাতে ইনপুট এর ভিত্তিতে তোমার কোড সঠিক অউটপুট দেয়।
শর্ট আর লং দুই ফরম্যাটে হয়। লং ফরম্যাট এর মধ্যে পরে আইসিপিসি ধাঁচের প্রতিযোগিতা গুলো । সাধারণত এই ফরম্যাটে টিম ভিত্তিক কাজ করা লাগে, আর প্রব্লেম জটিলও হয় বেশী । শর্ট কন্টেস্টের মধ্য পরে ২-৩ ঘণ্টার একক প্রতিযোগিতা । মূলত অনলাইন জাজ গুলতে এমন বেশী হয়। নতুনদের জন্য বেশী উপযোগী ।
এই ধরনের প্রতিযোগিতা অনুশীলন এর জন্য codeforces , codechef , hackerrank, hackerearth ,lightoj , spoj এমন অনেক প্ল্যাটফর্ম আছে।
দরকার পরে ডাটা স্ট্রাকচার এবং এলগোরিদম এর দক্ষতা । আর অন্তত একটা প্রোগ্রামিং ল্যাঙ্গুয়েজে ভাল দক্ষতা। সি-তে শুরু করা যায় তবে ভাল করার জন্য সি প্লাস প্লাস , বিশেষ ভাবে STL(Standard Template Library) এর ব্যাবহার জানা দরকার।

২ - সিটিএফ (CTF : Capture the flag) --> মূলত সাইবার সিকিউরিটি এর উপর কন্টেস্ট । বিভিন্ন সিস্টেমের দুর্বলতা বের করা ,নেটওয়ার্কিং , ক্রিপ্টোগ্রাফি ইত্যাদির দক্ষতা লাগে। ফরম্যাট যদিও বেশ আলাদা হয় প্রতিযোগিতা ভেদে তবে প্রয়োজনীয় দক্ষতা প্রায় ক্ষেত্রে একি ।বেশিরভাগই আমার জানা মতে দলগত প্রতিযোগিতা । Jeopardy , attack & defense মূলধারায় দুই ফরম্যাট এর প্রতিযোগিতা বেশী ।

৩ - হ্যাঁকাথন --> মূলত কোন বাস্তবিক সমস্যার সমাধান করতে কোন অ্যাপ / ওয়েবসাইট / সফটওয়্যার এর প্রটোটাইপ দাড়া করাতে বলা হয়। Nasa Space Apps Challenge এ ধরনের প্রতিযোগিতার ভাল উদাহরন ।
মূলত একটা অ্যাপ / ওয়েবসাইট / সফটওয়্যার এর প্রটোটাইপ দাড়া করাতে যা যা লাগে সব দরকারি । এর পাশা পাশি প্রেজেন্টেশান দেয়ার দক্ষতা , ক্ষেত্র বিশেষে ভিডিও এডিটিং এবং ফর্মাল লিখালিখির দক্ষতাও দরকারি।

৪ - মেশিন লার্নিং / এ.আই. কন্টেস্ট --> মূলত কোন বিশেষ সমস্যার জন্য ডাটাসেট দেওয়া থাকে । ঐ ডাটার ব্যাবহার করে কোন কাজ করার জন্য এমএল মডেল তৈরি করা লাগে । কিছু ক্ষেত্রে একাধিক ডাটাসেট দেয়া থাকে ।
মূলত বিভিন্ন এমএল মডেল এর জ্ঞান, ডাটা এনালাইসিস ও ভিজুয়ালাইজেশন , পাইথন / ম্যাটল্যাব / 'R' জাতিয় প্রোগ্রামিং ল্যাঙ্গুয়েজ ও তার সাথে বিভিন্ন প্রয়োজনীয় লাইব্রেরি কোড জানা থাকা দরকার।
শিখতে , প্র্যাকটিস করতে এবং প্রতিযোগিতায় অংশ নেয়ার জন্য নতুনদের জন্য সবচেয়ে ভাল প্ল্যাটফর্ম Kaggle.
Kaggle সরাসরি কোড লিখে কাজ হাতেকলমে শুরু করার জন্য সবচেয়ে ভাল । এছাড়া অনেক ডাটাসেটও ব্যাবহার এর জন্য পাওয়া যায়।
এসব এর বাইরেও গেম জ্যাম , টেকনোলজি স্পেসিফিক অনেক প্রতিযোগীতাও আছে। নিজের অভিজ্ঞতা কম থাকায় ঐ বিষয় আমি লিখলাম না।

১-৪ সবই যে কেউ শুরু করতে পারে , তবে প্রত্যেকটারই কিছু পূর্বশর্ত আছে , হতে পারে কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ , হতে পারে কোন টুলস শিখা ।তাই , একাবারে নতুন যারা তারা প্রথমে সবই খোঁজ নিয়ে অংশ নিয়ে দেখতে পারো। তবে কোন একটা বা বড়জোর দুইটাতে লেগে থাকা উচিৎ।
যেকোনো কিছুতেই ভাল করতে সময় , শ্রম আর মনোযোগ দেয়া লাগে । শুরুতেই সব পারবে এমন না ভেবে , মজার জন্য অংশ নিলেই ভাল।

. . . . . . . . .