کلاس‌های کوئرا: امکانات جدید و گزارش‌ها

سلام، روزهای آفتابی تابستان‌تان بخیر! در انتهای سال تحصیلی ۹۸-۹۹ قرار داریم، سالی که به واسطه کرونا، برای همه ما در ایران -و البته جهان- پر فراز و نشیب طی شد. تصمیم گرفتیم در انتهای این سال میخواهیم به اساتید و دستیاران آموزشی کوئرا، گزارشی از آمارهای امسال، آخرین امکانات بخش کلاس‌های کوئرا و دو اختلال پیش‌آمده در سال گذشته ارائه کنیم.

۱. آمارهای سال ۹۸-۹۹

پلتفرم کمک آموزشی کلاس‌های درسی اولین محصول منتشر شده از ۴ محصول اصلی کوئرا است (سه محصول دیگر: مسابقات، کالج و Careers). این محصول که به شکل رایگان به دانشگاه‌ها و مدارس عرضه می‌شود، به دلیل حل نیاز تصحیح تمرین‌های برنامه‌نویسی، کشف تقلب و پرسش‌و‌پاسخ از همان ابتدا استقبال خوبی از این محصول شد. تا این لحظه که این پست را می‌نویسیم ۲۶۴ دانشگاه و مرکز آموزشی، ۲۳۵۱ کلاس خود را در این سامانه ایجاد کرده‌اند. نمودار تعداد کلاس‌ها و تعداد موسسات در سال‌های تحصیلی مختلف را در عکس‌های زیر می‌توانید مشاهده کنید. نمودارها تجمعی نیستند!

۲. امکانات جدید اضافه شده به کلاس‌های درس

در ترم گذشته بهبودهای زیادی در بخش کلاس‌های کوئرا اتفاق افتاد؛ از آن‌ها می‌توان به موارد زیر اشاره کرد:

  • بخش تنظیمات پیشرفته تست‌ها تنظیمات بهتر سوال
  • اضافه کردن فیلم از آپارات
  • قرار دادن تست نمونه و یا محدودیت‌های سوال بصورت خودکار

در ادامه توضیح این موارد آمده است.

اگر اخیرا از امکان داوری خودکار در سوال طرحی‌تان استفاده کرده باشید، مشاهده کرده‌اید که ۳ گزینه‌ی جدید در صفحه‌ی تنظیمات سوال اضافه شده است (عکس زیر). در ادامه به توضیح این ۳ امکان می‌پردازیم و سپس به سراغ امکانات جذاب جدید در صورت سوال‌ها می‌رویم.

۱. ذخیره و ادامه ویرایش: برای آدم‌های وسواسی (مثل من!) که مایلند تند و تند متنشان را ذخیره کنند، و برای جلوگیری از فاجعه‌ی پریدن متن نوشته شده و ذخیره نشده بدلیل قطع شدن ناگهانی اینترنت!

۲. صفحه‌ی تنظیمات پیشرفته تست‌ها: برای این که بتوانید بصورت مستقیم و بدون نیاز به دانلود و آپلود کل تست‌ها، هریک از تست‌های سوال را دانلود و یا ویرایش کرده و همچنین بتوانید تست‌ها را حذف یا اضافه کنید. عکس زیر یک نمونه از صفحه ویرایش تست‌ها را نمایش می‌دهد.

۲.۵. امکان جدید پکیج‌بندی تست‌ها هم همراه با این بخش رونمایی شد! شما با اضافه کردن config.json در صفحه تنظیمات پیشرفته می‌توانید نمره‌ی سوال‌را بصورت بخش-بخش بین زیرمجموعه‌هایی از تست‌ها تقسیم کنید. این امکان به شما اجازه می‌دهده برای سوال زیرمسئله تعریف کنید و هرگاه دانشجو تمام تست‌های یک زیرمسئله را درست پاسخ داد نمره‌ی آن را دریافت کند. هم‌چنین با تعریف زیرمسئله‌های تک‌تستی، می‌توانید به تست‌ها در نمره‌دهی وزن‌های متفاوت دهید! توضیحات بیشتر در همان بخش تنظیمات پیشرفته‌ی تست‌ها موجود است.

۳. فایل ذخیره شده: برای دانلود تست‌های سوال، همان موقع که در حال ویرایش هستید و بدون نیاز به بازگشت به صورت ذخیره‌شده‌ی سوال.

حال به سراغ امکانات جدید صورت تمرین‌ها می‌رویم. ما به این پکیج جذاب امکانات، «درصدها» می‌گوییم؛ زیرا شما می‌توانید با اضافه کردن یک سری دستور که با % احاطه شده‌اند به متن تمرین‌هایتان، امکاناتی به آن‌ها اضافه کنید. لیست این امکانات را در جدول زیر می‌بینید:

امکاندستور
۴. افزودن فیلم از آپارات با نشانه‌ی ID %video.aparat_ID%
۵. جدول محدودیت‌ها برای زبان‌های مختلف سوال %problem.limits%
۶. محدودیت‌های سوال بر اساس زبان انتخابی C %problem.limits_C%
۷. ورودی تست شماره N سوال (inputN.txt)%problem.test_input_N%
۸. خروجی تست شماره N سوال (outputN.txt)%problem.test_output_N%
۹. ورودی و خروجی تست شماره N سوال (در قالب زیبا!)%problem.test_N%

اگر از امکانات بالا در صورت سوال استفاده کنید و تنظیمات سوال را تغییر دهید (مثلا تست جدید آپلود کنید یا محدودیت زمانی را تغییر بدید)، صورت سوال خودکار بروز می‌شود!

برای مثال استفاده از دستورهای بالا، متن زیر و خروجی‌اش را می‌بینید:

%video.aparat_mI46o%

%problem.limits%

بر اساس زبان Java:

%problem.limits_Java%

۲. ورودی یک تست بصورت جداگانه:

%problem.test_input_1%

خروجی یک تست بصورت جداگانه:

%problem.test_output_1%

ورودی و خروجی یک تست:

%problem.test_1%
%problem.test_2%

خروجی:

ما در حال پیاده‌سازی چند امکان جدید برای سال تحصیلی آینده نیز هستیم. مشتاقیم نظرهای شما راجع به امکانات گفته شده را بشنویم و هم‌چنین پیشنهادهای شما برای کارهای بعدی‌مان داشته باشیم! در دیدگاه‌های زیر این پست و یا از طریق فرم تماس با ما می‌توانید این موارد را به ما برسانید.

۳. دو مورد اختلال پیش آمده در بهار ۹۹

متاسفانه در ترم بهار ۹۹ شاهد دو اتفاق ناخوشایند در کوئرا بودیم. یکی اختلالات در زمان اجرای داوری برنامه‌ها، و دیگری قطعی چند ساعته‌ی سایت در ۲۰ تیر ماه. بدلیل تاثیرگذار بودن هر دو اتفاق، لازم می‌دانیم که آن‌ها و درس‌هایی که ازشان گرفتیم را توضیح دهیم.

مورد اول از این قرار است. در ابتدای سال ۹۹ ما گزارش‌هایی مبنی بر کند شدن و یا unstable شدن سامانه داوری دریافت کردیم، به این صورت که تست‌های سوال تفاوتی نکرده بود اما کدی که چند ماه قبل نمره‌ی کامل می‌گرفت اینجا به خطای Time Limit Exceeded برمی‌خورد. نکته‌ی عجیب‌تر آن بود که همین موضوع هم بصورت stable اتفاق نمی‌افتاد و سابمیت‌های مختلف یک کد خروجی‌های مختلفی می‌گرفت. با ریشه‌یابی این مسئله متوجه شدیم که تعدادی از ورکرهای کوئرا توسط سرویس‌دهنده و بدون هماهنگی منتقل شده‌اند. برای حل این مسئله بصورت کوتاه‌مدت ورکرها را مجدداً منتقل کردیم و از سرویس‌دهنده درخواست کردیم تا همه‌ی آن‌ها یکسان باشند. هم‌چنین تست‌های اتوماتیک برای بررسی استاندارد بودن سامانه داوری پیاده‌سازی شده که بزودی تکمیل‌تر می‌شود.

مورد دوم که قطعی چند ساعته‌ی کوئرا بود هم بدلیل قطعی اینترنت اساسی دیتاسنتر برج میلاد بود که خبرش را همه شنیدیم. حساسیت آن روزها برای کلاس‌های کوئرا زیاد بود، زیرا این قطعی دقیقا جمعه شب اتفاق افتاد، زمان موعد بسیاری از تمرین‌ها و پروژه‌ها! از همان لحظات اول برای برطرف کردن مسئله تلاش کردیم اما بدلیل اساسی بودن مشکل، راه حل‌هایی که ما یافتیم اثربخش نبود و تا بعد از نیمه‌های شب این قطعی ادامه داشت. تلاش کردیم با اطلاع‌رسانی در کانال تلگرام و توییتر کوئرا و هم‌چنین ایمیل به اساتید و دستیاران آموزشی که زمان تحویل تمرین‌هاشان در آن روزها بود، این ماجرا را تا حد امکان کم‌تاثیر کنیم.

بابت ایرادهای پیش آمده متاسفیم، و امیدواریم بتوانیم با استفاده از تجربیات آموخته‌شده، از تکرارشان بپرهیزیم.

شاد و سربلند باشید!