Feedback na takmicenjima

Poštovani,
Obraćam se u vezi full feedbacka.

Da li bi bilo moguće da on postoji na izbornom takmičenju pošto se i danas posle takmičenja (JSIO) mnogo dece žalilo kako nije u redu da ga nema.
Ako ipak ne želite da ga bude možete li objasniti zašto je to tako?
Činjenica da ga nije bilo ni na državnom ni na JSIO mi nije jasna iz više razloga:

  1. Nekad program može da daje toliko mali TLE da ako bi se poslao sledeći put davao bi AC na svim primerima jer vreme izvršavanja ne mora uvek biti isto.
  2. Verujem da nije bezraložno to što postoji na takmičenjima za srednje škole u Srbiji (Okružno, Državno, SIO) a i na skoro svim inostranim takmičenjima (EJOI, IOI…).
  3. Ekipa se bira za takmičenje EJOI a pošto je tamo situacija takva da postoji full feedback, ekipa bi trebala da se bira na isti način kako se i EJOI održava (kao što su i niži rangovi takmičenja trebali sužavati konkurenciju na taj način).

Hvala na odgovoru i srdačan pozdrav.

9 Likes

Комисија ће дати званичан одговор након консултација.

У међувремену, да те не бисмо током дужег времена остављали без икаквог одговора, одговорићу опширније у своје лично име, са намером да појасним нека гледишта и дилеме који ту постоје. Пошто је ово форум, било би добро да чујемо и ставове и аргументе више учесника, да бисмо сви што потпуније сагледали ситуацију и боље се разумели.

Са једне стране, важно је да се такмичењене не сведе на “пецање поена”, где се такмичари баве погађањем решења (нарочито на задацима где постоји мали број могућих одговора, нпр. DA/NE, али не само на таквим задацима), уместо да размишљају и решавају проблем. Са друге стране, такмичарима (поготово врхунским) је важно да виде да ли су имали TLE/MLE/RTE, јер је некад тешко да се довољно прецизно процени да ли ће одређени програм да прекорачи време за пар милисекунди, или ће за мало да прекорачи стек и сл.

Потреба такмичара за информацијама о TLE/MLE/RTE је у принципу мање изражена на такмичењима нижег нивоа, јер су разлике у временској и просторној сложености између алгоритама веће и очигледније (или је улаз врло мали па сложеност није ни битна). Међутим, како ниво такмичења расте, такмичарима постаје све важније да добију ове информације. За ниво фидбека постоје различите могућности, на пример:

  • пун фидбек на тест примерима који се бодују
  • пун фидбек на другим тест примерима, а за бодовање да се примери замене сличним по распореду тежине, тј. величине
  • поред примера из поставке, да постоје и неки велики примери са пуним фидбеком, али који не носе поене

итд.

Оно што бих ја волео да имамо једног дана као могућност фидбека током такмичења на свим нивоима (а што за сада није опција) је:

  • пун фидбек на примерима из поставке, који не носе поене (као и до сада)
  • на примерима који се бодују да се за OK/WA фидбек не разликује (нпр. ознака R или нека друга, са значењем да се програм регуларно завршио, тј. без пуцања и без прекорачења времена и меморије, али се не зна да ли је резултат тачан), а све остале повратне информације (CE, MLE, TLE, RTE) да су нормално видљиве као и код пуног фидбека.

Ако ово буде у неком тренутку и омогућено, не значи да ће бити и коришћено на такмичењима. Ипак, можда није лоше да чујемо различита мишљења о таквом решењу.

1 Like

Поштовани,
Ја такође мислим да пун фидбек треба да постоји из истих разлога као што је рекао и Стефан.

”Пецање” поена је на свим такмичењима, укључујући и наша такмичења за средње школе, решено тако што се направе групни тест примери. За сваку групу тест примера постоје одређена ограничења и свака носи различит број бодова (у зависности да ли је проблем лак да се реши са датим ограничењима). Пошто се поени освајају само ако је програм дао тачан излаз за све тест примере из одређене групе то искључује могућност да неко погоди један тест пример и тиме добије поене.

Други начин како ово може да се реши јесте исто као и на рундама које организује codeforce.com . Упркос томе што се тамо поени добијају само ако је програм радио на свим тест примерима, тест примери су им такви да један тест пример садржи више тестова (на почетку се унесе променљива Т па након тога Т тест примера, а ако је нпр. ограничење неке променљиве N<=10^5 они ставе да је збир свих N-ова у тестовима <=10^5) чиме се исто смањује шанса да неко погоди излаз.
Такође, јуче је била ситуација таква да је много људи, укључујући и мене, мислило да им је тачан први задатак и да ће добити 100 поена, а заправо им је идеја била потпуно нетачна. Сигуран сам да би макар пола људи који су имали 20 поена на том задатку увидело грешку да су знали да им је код нетачан.

Срдачан поздрав.

4 Likes

Стефановим разлозима немам шта да приговорим (када је реч о највишим нивоима такмичења). Такође, хвала за сугестије против пецања поена. Што се тиче разлога који наводиш на крају поруке, желим само да ти скренем пажњу да он није једнако јак аргумент (мада је и даље известан аргумент). Ево зашто:

Ако неко на такмичењу из математике у неком кораку доказа погрешно изведе закључак, нико му у току такмичења неће рећи да доказ није коректан. Слично, ако на такмичењу из физике неко погрешно разуме описану физичку појаву, неће му бити скренута пажња на то у току такмичења. Исто тако, програмер који решава проблем ван такмичења ће при масовнијој употреби решења лако да види када му програм пуца или се дуго извршава, али неће увек лако да види да ли је резултат тачан (у том смислу, мени је сасвим разумно да фидбек подражава реалну ситуацију). На крају, фер је да онај ко без помоћи дође до праве идеје и тачног решења буде више награђен од онога ко увиди грешку тек на основу фидбека.

Са дуге стране, фер је и да се више награди онај ко на основу фидбека исправи решење, него онај ко то не уради. Један начин да се постигне градација између оних који реше из прве, оних који поправе после фидбека и оних који не поправе је да се уведу извесни пенали (негативни бодови) за претходно послата решења. Ово и јесте пракса на неким такмичењима, али можда није примерено на такмичењима за најмлађе категорије (још једна ствар за дискусију).

Хоћу да кажем да је питање пуног фидбека прилично комплексно и драго ми је да се на форуму о томе дискутује. Хвала вам што у томе учествујете, надам се да ће то допринети бољем разумевању проблема уопште, бољем међусобном разумевању свих страна које учествују у такмичењима и бољим правилима такмичења убудуће (која год она била, то тек треба видети).

2 Likes

Lično mislim da je full feedback praktično neophodan na svakom takmičenju koje se radi kratkoročno i on-site (dakle sem kvalifikacija), a sve neophodniji što je viši nivo takmičenja. Odgovoriću prvo na sve navedene kritike full-feedbacka (ako sam neku slučajno preskočio, izvinjavam se), pa ću dodati par argumenata protiv partial feedbacka.

  1. pecanje poena - ovaj problem je odavno rešen na svakom takmičenju u svetu i postoje mnoga sasvim jednostavna rešenja, neke od kojih je naveo i Uroš u threadu. Ono koje se uglavnom praktikuje na IOI-stilu takmičenja jesu podzadaci, grupisanje primera po nekom zajedničkom svojstvu, ali oni zahtevaju mnogo više posla za autora, tako da zbog količine zadataka koje vi morate da spremate mislim da svakako nije prikladna pre JSIO. Drugo rešenje je više test primera unutar jednog, ali to se iz našeg iskustva pokazalo kao loša ideja na Petlji (prosto ne može da podnese tu veličinu test primera u nekom razumnom vremenu), iako je ideja sasvim korektna.
    Mislim da je ideja koja bi najviše koristila vašoj komisiji i koja praktično potpuno eliminiše ovu kritiku jeste hrvatski sistem - kvazi-podzadaci, po dva-tri primera koji se zajedno grupišu u podzadatak, koji zapravo nemaju zajedničko svojstvo tako da nije nikakav dodatni posao autoru. Jedino je potrebno paziti da npr. ako je output da ili ne, da se zajedno grupišu primeri sa različitim odgovorom.

  2. sličnost sa industrijom - prvo smatram da je poređenje takmičarskog programiranja sa industrijom dosta neprikladno, u svetu se već uveliko smatra odvojenom disciplinom koju i treba poštovati kao takvu. Za sličnost sa industrijom postoje mnoga druga takmičenja poput hakatona i challenge takmičenja. Uveliko je poznato da su u industriji, pogotovo za prakse, jedna od najtraženijih grupa baš studenti koji su bili uspešni takmičari u srednjoj školi. To nam pokazuje da već ne moramo da brinemo o prenosivosti znanja naučenih na takmičenjima na industriju.
    Dalje, naša takmičenja se već u mnogim aspektima razlikuju od stvarnog programerskog posla i zato ne bi bilo korektno fokusirati se na industriju u samo onom aspektu koji nam odgovara. Takmičenja su jako kratka - JSIO traje svega tri sata. To je jedva dovoljno vremena da iskusni takmičar ozbiljno ručno istestira jedan zadatak, a kamoli da osnovac istestira četiri zadatka. U industriji se radi osam časova dnevno i šta se ne uradi danas, može sutra. Zato smatram da je feedback dobar balans i korektna i fer zamena za testiranje u industriji. Ovo je takođe razlog zašto sam okej sa parcijalnim feedbackom na kvalifikacijama - više vremena ostavlja prostor da takmičari nauče da efikasno testiraju svoja rešenja.

  3. poređenje sa matematikom - ovo poređenje ima smisla isključivo za zadatke sa kratkim, greedy rešenjem i nije mi dovoljno jako da zahteva partial feedback. Na matematici dovoljno je nažvrljati sve što vam padne na pamet i ako ste u nekoj od tih stvari napredovali ka rešenju, dobićete parcijalne poene. Ovako funkcioniše čak i na IMO, gde je moguće dobiti maksimalnih 7 bodova na rešenju sa malim propustima koji se lako poprave kada vam neko ukaže na njih. Situacija na takmičenjima iz informatike je skroz drugačija i da bi dobio parcijalne poene potrebno je napisati kompletan kod koji će potencijalno davati nula bodova zbog greške u jednoj liniji (svi smo upoznati sa takvim žalbama). Ova prirodna “okrutnost” programerskih u odnosu na matematička takmičenja balansirana je mogućnošću da se rešenje proveri u real-timeu, pogotovo kod mlađih učenika koji se lako demotivišu.

Dalje, ima negativnih aspekata parcijalnog feedbacka. Napomenuto je da takmičenja (pogotovo niži rangovi) nisu tu samo za odabir ekipe i ja se slažem sa time. Bitan drugi aspekat jeste popularizacija takmičenja i kroz njih informatike. Smatram da je full feedback totalno kompatibilan sa oba ova aspekta naših takmičenja. Što se tiče odabira ekipe, takmičenja svuda u svetu su zasnovana na full feedbacku. Što se tiče popularizacije, ne mogu da zamislim gori osećaj i osećaj koji bi me više odstranio od takmičenja od toga da imam dvesta poena manje nego što sam mislio zbog sitnice u kodu. To je posebno važno kod osnovaca, kod kojih su takve greške češće, a koji se takođe još razvijaju i nisu odabrali svoj put u životu. Mnogi od njih idu na mnogo takmičenja u potrazi za onime što im se sviđa i takve stvari ih lako mogu okrenuti ka drugom predmetu.

4 Likes

Prihvatam većinu argumenata koji se odnose na više nivoe takmičenja, naročito onaj da se prirodna okrutnost programerskih takmičenja kompenzuje punim fidbekom (neću da se zadržavam na diskutabilnim detaljima koji ne utiču na poentu da ne bih rasplinjavao).

Zadržao bih se na delu koji se tiče najmađih na nižim nivoima takmičenja. Razumem da neosvajanje očekivanih poena može da odvrati od dalje želje takmičenja. Međutim, priličan broj zadataka na nižim nivoima takmičenja OŠ se u velikoj meri obesmišljava ako se da pun fidbek. Ti zadaci su često prilično jednostavni, a rešenja kratka, tako da rastu šanse da takmičar koji ima pun fidbek isproba mnogo “rešenja” bez udubljivanja, dok ne dobije sve poene (kako god da su grupisani testovi). Na primer, takmičar može kôd “if … if … else …” da zameni sa “if … {if …} else …”, a da i ne razume suštinu te promene. Mnogi od ovih zadataka dopuštaju polunasumično pogađanje tog tipa: Повећај сваку цифру, Папир, камен, маказе, Ближе црти, Мајице, Највећи двоцифрен број, Карте, Столњак, Паковање, Самогласници, Број посета кућици, Четвороугао, , Играчка, Звонце, По три каше, Украсна трака, Вода, Гол у гостима, Рам од слова, Шарко, Класификација, Просек цифара, Висок притисак, Финалиста, Први понедељак, Икс-окс, Цифре и слова, Парови истих цифара, Збир средњих. Davanjem punog fidbeka na takvim zadacima postoji rizik da početnicima pogrešno sugerišemo šta programiranje jeste (ne samo programiranje u industriji, već svako programiranje osim takmičarskog sa punim fidbekom).

Ako se složimo da postoje zadaci na kojima ipak ne treba dati pun fidbek, onda se postavlja i pitanje gde je granica (ali to je sledeći korak, ako dođemo do njega).

1 Like