През учебната 2012 / 2013 г. стартира новият сезон на конкурса по програмиране на PC Magazine Bulgaria и Телерик. Конкурсът се провежда вече за 18-та поредна година и е събирал години наред стотици участници от различни градове, възрасти и професии – елитът на състезателното програмиране. По традиция конкурсът се провежда в няколко задочни кръга и присъствен финал за най-добре представилите се участници в задочните кръгове. Във всеки кръг победителите печелят награди, осигурени от спонсори и партньори на конкурса, а на финала се борят за по-големи предметни награди.

Описание на конкурса

Конкурсът по програмиране, организиран от списание PC Magazine Bulgaria и фирма Телерик, цели да развива и разширява знанията и уменията в областта на алгоритмите и технологиите на участниците в конкурса. Задачите в конкурса представляват разработка на софтуерни приложения съдържащи комбинация от алгоритми, технологии и потребителски интерфейс.

В оценяването участва жури от опитни софтуерни разработчици. Оценява се както алгоритми, технологии, бързодействие и сигурност на приложенията, така и техния дизайн и потребителски интерфейс. В конкурса могат да участват индивидуални състезатели и екипи до двама души. Сроковете за предаване на проектите се обявяват в списание PC Magazine Bulgaria и на сайта на конкурса. В случай на разминаване в датите между списанието и сайта, по-актуалната дата винаги ще бъде на сайта. Класирането на участниците се изготвя от журито до 2 седмици след крайния срок за изпращане на проектите и се публикува в страниците на списанието и в сайта на конкурса.

Езици и платформи за разработка

Участниците могат да използват език за програмиране и технология по свой избор, освен ако за съответния кръг на конкурса не е изрично посочен език или платформа за разработка. Всички задачи ще бъдат изпълнявани в Windows 7 среда (64-bit), така че изпълнимите файлове или сорс кодът трябва да работят под Windows. Ако е необходимо инсталирането на допълнителен софтуер, за да може да работи изпратеното приложение, то освен самото приложение, участниците трябва да изпращат и линк или файл с необходимия софтуер.

Форма на конкурса

Конкурсът има 6 задочни кръга и един финален присъствен кръг. Започвайки от месец ноември 2012 г. в продължение на 6 кръга се публикува по една задача в списание PC Magazine България, както и на сайта на конкурса. Във всеки задочен кръг се определя победител, който получава сертификат от организаторите и награди, осигурени от спонсорите.

Задачите в отделните кръгове са с нарастваща сложност. В първи кръг задачите са лесни, подходящи за начинаещи в програмирането и технологиите за разработка на софтуер. Във втори кръг задачите стават малко по-трудно, но все пак лесни и подходящи за участници без опит. В следващите кръгове трудността на конкурсните задачи лека полека нараства и в края на конкурса задачите са вече по-трудни и няма да са по силите на напълно начинаещи в програмирането. Целта на нарастващата трудност на конкурсните задачи е да спомага за развитието на участниците, като стъпка по стъпка се увеличава трудността и това ги стимулира с всеки кръг да научават повече и повече за алгоритмичното програмиране и технологиите за разработка на софтуер, да надграждат уменията си и да надминават себе си.

Финалният кръг на конкурса се провежда присъствено през месец юни 2013 г. с 30-те най-добре представили се участници/отбори (с най-висок сумарен резултат от задочните кръгове), които се състезават присъствено. По традиция победителите и участниците в конкурса получават сериозни предметни награди.

Участие

Право на участие има всеки желаещ (или екип от желаещи), който не е служител във фирма Телерик или PC Magazine Bulgaria. Могат да участват както индивидуални състезатели, така и екипи до двама души.

Предаването на решения и задаването на въпроси по условието на задачата става чрез online системата, достъпна от сайта на конкурса.

Решението на задачата представлява ZIP архив, съдържащ:

  • Ако в условието на задачата не е указано друго, поне един .exe файл, с име, което ще бъде зададено в условието на задачата, и произволен брой други файлове, които състезателите преценят, че са нужни за правилното функциониране на решението им. Решенията не трябва да изискват библиотеки, които не са част от указаната по условие среда за тестване.
  • Сорс-код на решението (включително всички файлове, които не са част от стандарта на езика за програмиране), който не се оценява (т.е. не влияе на резултата), но задължително трябва да се изпрати.
  • Всякакъв допълнителен софтуер, който е необходим за да работи коректно изпратения от участниците проект (адрес за изтегляне). Това може да бъде безплатен софтуер или комерсиален софтуер, за който има пробна версия.
  • По желание (не се оценява) – описание на решението и реализирания алгоритъм, което ще бъде публикувано на сайта на конкурса и евентуално в списанието.

Всеки изпратен архив трябва да е не по-голям от 8 MB. Архив с размер над 8 MB не може да бъде предаден чрез системата.

По изключение или при проблеми със системата, решения могат да бъдат предавани и по e-mail на адреса на журито – [email protected], съдържащ личните данни на участника или екипа (включително потребителско име), архив с решението на задачата и причината, поради която решението не е било изпратено чрез системата.

Решения, получени след крайния срок за съответния кръг, няма да бъдат включени в класирането.

Оценка на изпратените решения в задочните кръгове

Оценяването за всеки кръг от конкурса може да има различна философия, но като цяло се следва идеята алгоритмичните задачи да се оценяват с подходящи тестове, а приложната част – от жури.

Схема на проверка

  • В зависимост от условието и типа на задачата, журито може да прецени начина на оценяване за всеки от кръговете на конкурса.
  • Ако задачата представлява създаване на приложна програма, интернет приложение, мобилно приложение или друго приложение, съдържащо потребителски интерфейс, оценяването ще става по предварително зададени от журито критерии. Журито определя за всяко приложение броя точки, следвайки предварително описаните критерии. При некоректен формат на решението или усложнения при стартирането му,  журито има право да отнеме напълно точките на съответното решение, или да  въведе наказателни точки. Наказателните точки се отнемат от крайния резултат на решението. Максималният брой точки, които приложението може да получи, ако всички критерии са изпълнени е 10.
  • Ако задачата изисква директно съревнование на идеи или алгоритми, оценяването ще представлява класиране на базата на резултата от директното съпоставяне или сблъсък между всяка една двойка състезатели. В класирането всеки от участниците ще получава определен брой точки при победа, равен или загуба при всяко едно от съревнованията, като при равни точки журито ще определя съответния победител. При некоректен формат на решението на алгоритмичната част, журито има право да отнеме напълно точките на съответното решение, или да въведе наказателни точки. Наказателните точки се вземат от крайните точки на решението. Първият в класирането ще получи 10 точки (без наказателните), а останалите ще получат точки спрямо разликата между точките с първия в класирането.
  • За задачите, които изискват самостоятелна работа на програмите (например задачи, решаващи даден алгоритмичен проблем), журито подготвя набор от тестове(входни данни) за конкретната задача. На всеки тест, съобразно сложността му, се съпоставят определен брой точки, които представляват максималният брой точки, който може да получи всеки състезател, ако решението му премине успешно теста. Броят на тестовете и разпределението на точките между тях не са предварително известни. При некоректен формат на решението на алгоритмичната част, журито има право да отнеме напълно точките на съответното решение, или да въведе наказателни точки. Наказателните точки се вземат от крайните точки на решението. Знае се само, че за всяка задача сумата от максималните точки на всички тестове е 10 (без наказателните).
    • На всеки тест журито предварително съпоставя време (определен брой секунди), за което програмата на всеки участник или екип трябва да завърши теста. Това времево ограничение се определя предварително, но не е задължително да бъде обявено публично. В случай, че програмата надвиши времето за работа, то тестът ще се счете за неуспешен (без значение дали генерираният от програмата резултат е верен или не) и ще му бъдат присъдени 0 точки.
    • Ако при изпълнението на програмата на участник или екип за даден тест се получи грешка по време на изпълнение на програмата (Run-time Error или Exception), то тестът ще се счете за неуспешен и ще му бъдат присъдени 0 точки.
    • Ако програмата завърши тест в рамките на определеното време и в условието на задачата не е указана друга схема за оценяване, то ще бъдат присъдени или всички точки определени за теста (при верен резултат) или 0 точки (ако резултатът генериран от програмата е грешен – това може да включва и грешно форматиран изходен файл).

Наказания

  • При доказан опит за преписване или използване на чужд код, виновните състезатели получават 0 точки за съответния кръг.
  • При използване на нелицензирани материали или софтуер, виновните състезатели получават 0 точки за съответния кръг.
  • При неспазване на някое от изброените в условието изисквания, резултатът на състезателя ще бъде намален по преценка на журито.
  • Журито може по своя преценка да накаже състезател заради неспазване на някое изискване, като наказаните състезатели могат да поискат обосновка в писмена форма.

Особености по тестването

  • Всички решения се тестват на един и същи компютър с един и същ софтуер на една и съща резолюция на екрана.
  • Компютърът, на който се тестват решенията ще бъде обявен на сайта на конкурса и журито си запазва правото да променя конфигурацията и софтуера като ще уведомява участниците своевременно за това.
  • Свободната оперативна памет при изпълнението на програмите на участниците ще е поне 2 GB, освен ако не са наложени други ограничения в условието на задачата.
  • При работата си, програмите на участниците имат право да използват временни файлове в текущата директория с обща големина до 1 GB, освен ако не са наложени други ограничения в условието на задачата.

Контестации

  • След публикуване на резултатите от всяка задача, участниците имат право да подават контестации в писмен вид в срок от 1 седмица.
  • При нужда, журито има право да удължи срока за контестации.

Други изисквания

  • Всички предадени решения трябва да работят детерминистично, т.е. при няколко изпълнения върху един и същ набор входни данни, резултатът трябва да е еднакъв.
  • Ако горното условие не е изпълнено, рискът от неповторяемост на резултатите остава за сметка на състезателя.

Обявяване на резултатите от задочните кръгове

През един брой на списанието (т.е. в брой X излизат резултатите от задачата публикувана в брой X-2) се публикуват:

  • Класиране за конкретната задача, както и обявяване на победител на задочния кръг.
  • Общото класиране до момента – на база всички задочни кръгове, които са се провели.
  • Идея на решението на задачата (алгоритъм / технологии / инструменти / библиотеки) – по преценка на журито.

На сайта на конкурса се публикуват гореспоменатите, още в момента на финализиране на оценяването, както и:

  • Текста на задачата, като условието на текущата задача се публикува най-малко 20 дни преди крайния срок за изпращане на решения.
  • Критериите за оценка от журито, тестовите примери, с които е извършена проверката (когато е уместно); сорс кода на програмите на всички участници, изпратили решения; както и обяснения за начина на оценка. Целта е проверката и класирането е да са максимално открити и прозрачни и всеки участник или екип да може сам да провери собственото си решение и да се убеди, че е оценен коректно.

Участие във финалния присъствен кръг

След проверката на всеки задочен кръг, се сумират точките от всички кръгове до момента за всички участници и така се изготвя текущото общо класиране. След провеждането на всичките шест задочни кръга, общото класиране става крайно. Участниците/отборите, заемащи първите 30 места в крайното общо класиране, получават покана за участие във финалния присъствен кръг.

* Включвайки се в конкурса, всеки участник приема настоящите правила.

Учебен материал

Условията на задачите и уменията нужни за тяхното решаване ще съответстват до голяма степен на учебните планове на Софтуерната академия на Телерик (academy.telerik.com) за сезон 2012/2013 г. Всички учебни материали от обученията в Академията достъпни от нейния сайт, а състезателите имат правото да кандидатстват и учат безплатно в Софтуерната Академия, за да укрепят знанията си и да се подготвят за конкурса по програмиране. Преподавателите в Академията няма да дават конкретни инструкции за решаването на задачи, за които не е изтекъл крайният срок за предаване на решения, но имат право да дават инструкции и да организират обсъждания върху задачи от минали кръгове.

Състав на журито

Журито в конкурса се състои от  преподавателския състав на Академията на Телерик и външни експерти, избрани за всеки един кръг от конкурса. Постоянен състав на журито за 2012/2013 г.:

  • Д-р Светлин Наков – ръководител отдел “Технологично обучение” в Телерик с 15 години опит като софтуерен специалист, консултант и лектор, дългогодишен състезател и победител в национални и международни конкурси и състезания по програмиране.
  • Дончо Минков – технологичен трейнър в Телерик – студент по “Софтуерно инженерство” в СУ “Св. Климент Охридски” и дългогодишен участник в състезания по информатика.
  • Николай Костов – технологичен трейнър в Телерик, дългогодишен участник в редица ученически и студентски олимпиади и състезания по информатика и двукратен победител в проектните категории “Приложни програми” и “Интернет приложения” на НОИТ.
  • Георги Георгиев – технологичен трейнър в Телерик, студент в СУ “Св. Климент Охридски”, участник в редица ученически и студентски олимпиади, лауреат на НОИТ’2011 и EUCYS’2011

Уеб сайт на конкурса

Официален уеб сайт на конкурса по програмиране на списание PC Magazine и софтуерната фирма Telerik: https://konkurs.devbg.org. В сайта на конкурса ще намерите условията на всички задачи, класиране по кръгове, пояснения по задачите (когато се налагат), инструкции за предаване на решенията и всякакви други материали, свързани с конкурса.