Мисли относно "Judge" системата
Здравейте!
Пише ви колега, който е записал "Programming Fundamentals" редовна форма, но поради лични / здравословни причини няма възможност да посещава занятията и реално се обучава онлайн. Това прави живота доста по-труден в онези вълшебни моменти, когато Judge дава 80/100 на решението ти, а наоколо няма ментори или колеги, до които да се допиташ. Когато това се случи, започваш да си мислиш:
"Защо, по дяволите, Judge не ми показва при какъв input решението не дава верен резултат?!"
Известни са ми историческите съображения зад това решение. Знам, че преди системата е показвала желаната информация, докато не са се намерили тарикати, които са решили, че ще е много хитро да си вземат 100-те точки с решение от типа на "if (input) --> Console.WriteLine(output)". Разбирам и позицията, че за нас е полезно сами да си търсим грешката, защото после в реалния живот никой няма да стои до рамото ни с верния output под ръка, така че да можем лесничко да си сверим резултатите.
Но в сегашния си вид системата (поне според мен) не работи добре, понеже задачите често имат некоректно зададени условия - с липсваща или подвеждаща (а понякога и откровено грешна) информация. Това, в комбинация със скриването на грешните тестове, води до огромна загуба на време (и нерви) на много от участниците. Не знам как точно стоят нещата при другите колеги, но за себе си мога да кажа, че времето, което губя в опити да си докарам "решена" задача от 90 до 100 точки е в пъти повече от това, което прекарвам в писане на решения по други задачи. Дори когато проблемът не стои в условието на задачата, а просто има някой много крив тест, проверяващ частен случай, за който трудно бихме се досетили сами... Не смятате ли, че за един студент би било по-добре да открие грешката в кода си след подсказка, но със спестеното време да реши N на брой допълнително задачи и да натрупа опит, чрез който в бъдеще сам да идентифицира подобни критични точки?
Знам, че показването на input-а при грешните тестове би било покана към всички cheater-и с оглед на това, че до 20% от оценката идва от резултатите на домашните. Затова искам да попитам, не може ли да се премахне тежестта на домашните от крайната оценка? Така или иначе, всеки сам за себе си решава дали иска да се упражнява или смята, че е достатъчно добър. Да не говорим, че няма никакъв контрол над това дали домашното на Пешо е написано от него. Нека оценката зависи изцяло от изпита (и активността във форума - колегите, които помагат на другите, трябва да бъдат поощрявани!), а домашните да останат това, което трябва да бъдат - нещо, което правим сами за себе си. Така никой няма да има стимул да cheat-ва и Judge ще може да показва input-а за онези, които искат да го ползват добросъвестно. А ако все пак продължават да се въдят тарикати - пожелавам им късмет на реалните изпити, или по-късно на интервютата за работа, защото с техните умения ще им е необходим.
Благодаря ви за вниманието!
Никой не се оплаква от "кривите частни случаи" - разбира се, че такива трябва да има, за да може да се отсеят пълните решения от онези, които работят само в ограничен спектър. Но когато един такъв случай ти отнеме половин (или дори цял) ден за да го съобразиш, идва на дневен ред въпроса "Заслужаваше ли си? Знанието, което добих от тази задача, по-ценно ли е от това, което можех да добия решавайки още 10 задачи?".
Не казвам, че една задача е решена само когато имаш 100 точки на нея. Но за мен е важно да имам пълния брой точки навсякъде, защото резултат под 100 означава, че някъде съм пропуснал нещо. Това нещо може да е съвсем тривиално, но може и да е фундаментален пропуск, който да има отношение към бъдещото ми развитие. Затова, докато не разбера какво е, не мога просто да го подмина и да си кажа "Голяма работа, нали имам 90%!".
Относно това, че преди е можело да се гледа входа - това е нещо, което чух в едно от първите видеа на Наков от началото на курса. Ако по погрешка съм извадил думите му от контекст, се извинявам. Това е моето разбиране по въпроса към днешна дата.
Попринцип съм съгласен. И аз се дразня като получавам по-малко от 100/100, но чак пък "Фундаментален пропуск, който да има отношение към бъдещото ти развитие" :)
Хаха, верно звучи малко пресилено :)
Може би не избрах правилната формулировка. Това, което имах предвид е, че има разлика между малък пропуск, причинен от бързане или моментно разсейване (в някой цикъл си сложил < вместо <=) и грешка в логиката на решението. И двете могат да дадат разлика от 10 точки в крайния резултат (ако имаш достатъчно късмет само един тест да гърми заради логическата ти грешка), но второто е много по-сериозно. Защото ние идваме тук за да се научим да мислим като програмисти, съответно ако не изчистваме алгоритмите си от грешки, а се успокояваме с добър резултат, полагаме лоша основа. Затова и използвах думичката "фундаментални". Така де - сигурен съм, че разбираш какво се опитвам да кажа :)