За изпита по структури от данни
Колеги, давам малко пояснения за изпита по структури от данни, който предстои в неделя (13 септември):
- Ще има две задачи - една с unit tests и една с judge-базирана проверка
- И на двете задачи въвеждаме следния принцип на оценяване:
- Ако минават всички тестове, взимате пълния брой точки за задачата.
- Ако не минават всички тестове, взимате до 50% от точките, пропорционално на броя преминати тестове.
- Пример: задачата има 20 теста с еднаква тежест. Ако всичките тестове минават, взимате 100 точки (максимума). Ако минават 19 от 20 теста, взимате 100*(19/20)/2 = 47.50 точки.
- На задачата с unit tests ще имате C# и Java вариант
- Проект-скелет (на VS или Eclipse) + интерфейс за имплементация + тестове (функционалност и performance)
- На задачата с judge-базираната проверка ще изпращате решение в judge системата и тя ще ви оценява. Ако не минават всички тестове, ще ви се признават до 50% от точките за задачата. Ако минават всички тестове, ще ви се присъждат всички точки.
Защо едната задача се оценява с unit tests, а другата автоматизирано?
- Задачата с unit tests е по-лесна, защото ви се дават всички тестове и ако нещо не работи, можете да дебъгвате конкретния тест, който не минава.
- Задачата с judge-базирано оценяване е по-трудна, защото не виждате тестовете и ако нещо гърми само може да предполагате какво сте сбъркали.
Я кажете сега: някой ще пише ли на C++? Да се пънем ли да превеждаме C# кода на C++? За Java обещавам, че ще има читав превод.
Наков
Съгласен съм - за 1 тест 50% са много. Можеше да се измисли по-гъвкаво решение на проблема - 19/20 теста - 90т, 18/20 теста - 80т, 17/20 - 70т и надолу някакво скалиране примерно - 16/20 = 100 * (16/20) / 1.3 = 61, 15/20 => 57 или нещо подобно. Мисълта ми е до 2-3 теста да има някакъв толеранс, при 17/20 се предполага, че задачата нещо малко и куца, да не говорим за 19/20.
Варианта с ръчна проверка също звучи добре, но предполагам няма ресурс за нея. Иначе най-доброто решение се съгласявам, че е с комплексни тестове, но пък тогава сигурно идва проблема с времето за изпълнение.
Не съм сигурен, че ще има проблем с времето за изпълнение. Пример:
днес като решавах първата задача от примерния изпит не обърнах внимание, че в скелета на solution-а в тестовете за performance и двата реда инициализират бавната структура. Добавянето с List отнемаше 33 секунди, а с речник 50ms... разликата е прекалено голяма, така че лесно може да се направят комплексни тестове, които при правилна структура от данни да минават за милисекунди.
Не, няма такъв вариант, Ники.
Няма ПРАВИЛНАТА структура от данни. има много възможности, които биха били практически верни и даващи разлика една от друга, както има и много възможности, които биха могли да бъдат грешни.
Ако се направи всеки един тест да е на границата на ПРАВИЛНАТА структура от данни, значи има само едно валидно решение и това е авторското.
Нека само да ви спомена, че темата е за да ни информира какъв ще е регламентът на изпита, а не за да ни попита дали сме съгласни.
В крайна сметка, ако някой се бори за сертификат според мен е логично да може да го вземе само и единствено с макс точки на изпита. За останалите, които ще вземам/вземем по-малко точки, остават кредитите от курса и това, че явно не са/сме научили до толкова, че да се сертифицираме в структури от данни.
Знаеш ли какво ми е направило впечатление до сега от изпитите? Че например изкарав 380/400 точки им и се губят 2 теста от една задача. Остават ми 2 часа до края на изпита и останалите 20 точки ги взимам в последните секунди. Демек съм блъскал 2 часа за 20 точки. Накрая някой с 350 точки да речем е на равно с мен или над мен в оценяването. Т.е. де факто 2-3 часа труд т.е. половината от времето на изпита не са имали значение.