FAQ of Competitive Programming/Programming Contest (কম্পিটিটিভ প্রোগ্রামিং/প্রোগ্রামিং কন্টেস্ট এর সচরাচর জিজ্ঞাস্য)

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

প্রশ্ন ১ঃ আমি প্রোগ্রামিং খুব একটা পারি না, কিভাবে শুরু করা উচিৎ? কোন ল্যাঙ্গুয়েজ শেখা শুরু করা উচিৎ?

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

প্রশ্ন ২ঃ আমি সি/জাভা/পাইথন পারি। আমার কি সি++ শেখা উচিৎ?

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

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

প্রশ্ন ৩ঃ সি++ এ আমার কি কি শেখা উচিৎ?

উত্তরঃ প্রথম ধাপে, ভ্যারিয়েবল, ইফ-এলসইফ, লুপ, অ্যারে এবং স্ট্রিং পর্যন্ত শেখাই যথেষ্ঠ। এগুলো জানলে এবং ভালমত ব্যবহার করতে পারলে কন্টেস্টের প্রায় সব প্রব্লেমই সমাধান করা সম্ভব। দ্বিতীয় ধাপে, গুছিয়ে প্রোগ্রাম লেখার জন্য ফাংশন, স্ট্রাকচার ও STL (Standard Template Library) শেখা দরকার। তৃতীয় ধাপে, কিছু ডাটা স্ট্রাকচারের জন্য পয়েন্টার এবং ডায়নামিক মেমোরি অ্যালোকেশন শেখা দরকার হতে পারে।

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

প্রশ্ন ৪ঃ সি++ কোন বই থেকে শিখলে সব থেকে ভাল হবে?

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

প্রশ্ন ৫ঃ কন্টেস্ট কখন এবং কিভাবে শুরু করা উচিৎ? আমার কি আগে প্রোগ্রামিং ভাষা পুরোপুরি আয়ত্ব্ করে তারপর কন্টেস্ট শুরু করা উচিৎ?

উত্তরঃ কন্টেস্ট শুরু করার জন্য সবথেকে ভাল উপায় হল কোন একটা অনলাইন জাজ ব্যবহার শুরু করা। নিয়মিত প্রোগ্রামিং কন্টেস্ট হয় এরকম কিছু অনলাইন জাজ হলঃ

তবে শুরুতে এই জাজগুলোতে কন্টেস্ট করতে গেলে কঠিন মনে হওয়াটা খুব স্বাভাবিক। কাজেই যারা নতুন শুরু করছেন, তারা নিচের কোন একটি “সহজ” অনলাইন জাজ দিয়ে শুরু করতে পারেনঃ

এর বাইরেও বেশ কিছু অনলাইন জাজ আছে, যেগুলোতে প্রচুর প্র্যাকটিস প্রব্লেম রয়েছে। ICPC বা সমমানের প্রতিযোগিতাগুলোতে ভাল করতে চাইলে এই জাজগুলোতে নিয়মিত প্র্যাকটিস করা বেশ জরুরী। এই জাজগুলো হলঃ

প্রোগ্রামিং এর সামান্য ধারণা হওয়া মাত্রই কোন একটি অনলাইন জাজ থেকে সমস্যা সমাধান করা শুরু করা দরকার। সে ক্ষেত্রে শুরুতে আপনি “সহজ” অনলাইন জাজগুলো দিয়ে শুরু করতে পারেন। আস্তে আস্তে স্কিল এবং কনফিডেন্স বৃদ্ধি পেলে তখন অন্যান্য অনলাইন জাজ থেকে সমস্যা সমাধান ও কন্টেস্ট করা শুরু করতে পারেন।

প্রোগ্রামিং ভাষা ভালভাবে আয়ত্ব করার জন্যই আসলে বিভিন্ন জাজে সমস্যা সমাধান করা খুব জরুরী। কাজেই দেরি না করে, যত দ্রুত পারা যায় শুরু করে দেওয়াই উত্তম।

প্রশ্ন ৬ঃ আমি প্রব্লেম পড়ে বুঝতে পারি না। কি করা উচিৎ?

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

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

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

প্রশ্ন ৭ঃ আমি C/C++ শিখেছি। আমি প্রবলেম পড়ে লজিক বের করতে পারি। কিন্তু কোড করতে পারি না। এখন আমার কী করা উচিত?

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

এছাড়াও সমস্যা কাটিয়ে ওঠার জন্য একই ধরনের অনেক প্রব্লেমের কোড করাটাও জরুরী।

প্রশ্ন ৮ঃ কোড করে যদি প্রব্লেম না মিলে তখন আমি ডিবাগ করে ভুল বের করতে পারি না। এই অবস্থা উন্নতির জন্য কি করব?

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

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

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

প্রশ্ন ৯ঃ কোন প্রব্লেম না পারলে অন্যদের কোড কি দেখা উচিৎ? এডিটোরিয়াল কি সাথে সাথেই পড়া উচিৎ?

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

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

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

প্রশ্ন ১০ঃ একজন বিগিনারের জন্য কোন অ্যালগোরিদম শুরুতে শেখা উচিৎ?

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

প্রশ্ন ১১ঃ ভাল কম্পিটিটিভ প্রোগ্রামার হওয়ার জন্য দিনে কি পরিমাণ সময় প্রোগ্রামিং করা উচিত? কিভাবে প্র্যাকটিস করা উচিৎ?

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

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

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

প্রশ্ন ১২ঃ আমি খুবই হতাশ। আমাকে দিয়ে কি প্রোগ্রামিং/কন্টেস্ট হবে?

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

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

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

Written on July 31, 2020