مسابقه بین‌المللی برنامه‌نویسی دانش‌جویی

مسابقات بین‌المللی برنامه‌نویسی دانش‌جویی  همه ساله به عنوان یکی از مهم‌ترین و معتبرترین مسابقات برنامه‌نویسی در سطج جهان برگزار می‌گردد. این مسابقات تا سال ۲۰۱۸ از سوی انجمن ماشین‌های محاسباتی و با پشتیبانی شرکت‌های بزرگی چون IBM برگزار می‌شد و با نام ACM-ICPC خوانده می‌شد. این مسابقات در ایران به اختصار به مسابقات ای‌سی‌ام معروف است. تیم‌های شرکت‌کننده در این مسابقات، دانشجویان دانشگاه‌های سرتاسر جهان هستند که ابتدا در مسابقات منطقه‌ای شرکت می‌کنند و سپس تیم‌های برگزیده جواز حضور در فینال را کسب می‌نمایند. مسابقه فینال معمولاً در اوایل بهار هر سال برگزار می‌شود.

مسابقات منطقه‌ای غرب آسیا از سال ۱۳۷۸ تا کنون (به جز سال ۱۳۹۰) در دانشگاه صنعتی شریف برگزار شده‌است. مسئولیت این مسابقات بر عهدهٔ دکتر محمد قدسی است. در سال ۱۳۹۰ به علت حضور دکتر محمد قدسی در فرصت مطالعاتی این مسابقه به میزبانی دانشگاه تهران و با مسئولیت دکتر رامتین خسروی برگزار گردید. مسابقه منطقه‌ای غرب آسیا عموماً در اواخر پاییز هر سال برگزار می‌شود.

در چنین مسابقاتی علاوه بر تسلط بر یکی از زبان‌های برنامه‌نویسی سی، سی پلاس‌پلاس، جاوا یا پایتون (البته تضمین نمی‌شود تمام سؤال‌ها به وسیله پایتون قابل حل باشند) مباحثی نظیر طراحی الگوریتم و ساختمان داده‌ها بسیار تأثیرگذار هستند.

قوانین مسابقه 
مسابقات بین‌المللی برنامه‌نویسی دانش‌جویی یک مسابقهٔ تیمی می‌باشد. قوانین موجود بیان می‌کنند که هر تیم باید شامل ۳ نفر باشد. شرکت‌کنندگان باید در دانشگاه مشغول به تحصیل باشند و کمتر از ۵ سال سابقهٔ حضور در دانشگاه داشته باشند. دانشجویانی که دو بار در مرحلهٔ جهانی حضور داشته‌اند نیز نمی‌توانند در مسابقه شرکت کنند. مدت مسابقه ۵ ساعت و تعداد سؤالاتی معمولاً بین ۸ تا ۱۲ سؤال است. تیم‌ها که تنها یک رایانه در اختیار دارند، باید جواب‌های خود را در قالب کدهای سی، سی پلاس‌پلاس، پایتون یا جاوا به سیستم داوری خودکار ارسال کنند. سپس برنامه‌های ارسالی توسط داده‌ها مورد آزمایش قرار می‌گیرند. اگر برنامه‌ای نتواند در مقابل تمام داده‌ها پاسخ درستی بدهد مورد قبول قرار نمی‌گیرد و تیم با احتساب جریمه می‌تواند برنامه دیگری ارسال کند.

تیمی برنده است که بیشترین تعداد سؤال‌ها را به درستی حل کند. اگر رتبه‌بندی تیم‌ها برای دریافت مدال و جوایز ضروری باشد، رتبه تیم با توجه به زمان سپری شده در هر مرحله برای ارسال پاسخ درست به علاوهٔ بیست دقیقه برای هر پاسخ نادرست که قبل از هر سؤال حل شده ارسال شده، تعریف می‌شود.

به عنوان مثال شرایطی را برای دو تیم آبی و قرمز در نظر می‌گیریم. این دو تیم از نظر تعداد سؤالات حل شده با یک دیگر برابر هستند. تیم قرمز پاسخ‌های خود را برای سؤالات A و B به ترتیب در ۰۱:۰۰ و ۰۲:۴۵ پس از آغاز مسابقه ارسال کرده‌است. همچنین تیم قرمز یک پاسخ غلط برای سؤال C ارسال کرده‌است اما چون نتوانستند سؤال C را حل کنند این پاسخ غلط در نظر گرفته نمی‌شود. تیم آبی پاسخ‌های خود را برای سؤالات A و C در ۰۱:۲۰ و ۰۲:۰۰ پس از آغاز مسابقه ارسال کرده‌است. همچنین تیم آبی یک ارسال غلط برای سؤال C داشته‌است.نتیجه به این صورت ارزیابی می‌شود که تیم قرمز در مجموع ۰۱:۰۰+۰۲:۴۵=۳:۴۵ و تیم آبی در مجموع ۰۱:۲۰+۰۲:۲۰+۰۰:۲۰=۰۳:۴۰ زمان برای سؤالات صرف کرده‌اند. در نتیجه تیم آبی برنده است.

آماده‌سازی برای مسابقه 
منابع الکترونیکی بسیاری برای آماده‌سازی علاقه‌مندان به چنین مسابقاتی وجود دارد. یکی از مشهورترین آن‌ها که به خاطر رایگان بودن مورد استقبال بسیار نیز قرار گرفته‌است، کتاب الکترونیکی Art of Programming Contest نوشته احمد شمس العارفین (به انگلیسی: Ahmed Shamsul Arefin) می‌باشد.

برندگان

منابع 

صفحه About در وب سایت http://icpc.baylor.edu 

https://en.wikipedia.org/wiki/ACM_International_Collegiate_Programming_Contest

پیوند به بیرون 
 وب سایت رسمی مسابقات 
 وبسایت رسمی مسابقه منطقه ای آسیا در دانشگاه تهران
 صفحه شخصی احمد شمس العارفین (به زبان انگلیسی)

انجمن ماشین‌های محاسب
برنامه‌نویسی
دانشگاه بیلور
مسابقات برنامه‌نویسی