Олимпиада для поступления в магистратуру ФИИТ

2 с половиной часа.

Именно, гипербола.

Я бы наверное если бы мне попалась именно такая задача - решил бы ее без всяких библиотечных функций - чтобы потом просто было переносить на другие языки. Решение на C# - классное, но никуда не переносимое.

2 лайка

Забавно, что проверяют вроде как профессиональные программистские навыки (как будто это показатель развитости студента-информатика), но при этом условия поставлены такие — побольше языков и отсутствие доступа к интернету для доступа к справочным материалам — что более выгодно писать плохой код: без использования стандартных библиотек (кто помнит тысячи классов .NET или сотни сигнатур функций в Хаскеле?) и без расширений типа Линка (для упрощения переносимости, как отметил @Admin).

5 лайков

Чтобы не приумножать негатив, скажу, что понравилось. Тест понравился. Правда. Спасибо составителям - он действительно хорошо покрывал важнейшие предметы за четыре года изучения. Времени было достаточно, вопросы были хорошо сформулированы. Никаких претензий. Задача… неплохая. Действительно базовые навыки программирования + знакомство с основными структурами данных.

Но насчет умения переписать на несколько языков - не могу согласиться с тем, что это ключевое умение. Важное, но не настолько. А оценивалось оно выше, чем что-либо ещё. Нет, я целиком и полностью за то, что нужно знать разные языки программирования. Но не просто знать - нужно иметь представление, какой язык для каких задач лучше применять. Тут у каждого свои предпочтения, это понятно.

Что я бы предложила? Просто несколько задач. Желательно - максимально различающихся. Было бы, например, так - 4 задачи, за каждую давали бы по 10 очков, либо 20, если этот язык еще не использовался для решения предыдущих. И “полиглотам” хорошо, и у тех, у кого 1-2 основных языка, нормально. Ну и тест стоило оценивать выше, по-моему. А то как-то его влияние на общий результат кажется совсем минимальным.

4 лайка

В целом понравилось, но о практике… Улис с Сиамез все написали за меня.

Тут принято говорить @Ulysses и @siamezzze

Пилю на Java 8 Streams. Занятненько. Бгг, как бы это пришлось бы делать без хелпа - не представляю.

Немного оффтоп, вероятно. Какие кривые руки придумывали этот Stream API? Столько костылей, и неявностей, что на технологию, которая по идее должна представить конкуренцию LINQ, настолько не тянет, то хочется просто выколоть себе глаза от объема кода. Анонимных классов адекватных нет до сих пор… Ушло часа полтора на реализацию, хотя должно было быть что-то очень похожее на C# с небольшими изменениями. Видел этот Stream API первый раз в жизни, впрочем. Второй раз было бы сильно быстрее :smile:

Кстати, а С и С++ разделяли на сей олимпиаде? Т.е., прислав написанную на STL и на чистом С реализации, можно было получить два засчитанных решения?

1 лайк

Нет, не разделяли и принесли за это отдельные извинения прямо в памятке.

Наверное, отсутствие доступа к Интернету - это самое противоречивое условие. Обычно у любого студента 1-2 языка на пальцах, а остальные надо вспоминать. Без интернета - это со связанными руками. Я бы сильно нервничал.

Как всегда - те, кто не участвовал в олимпиадах по программированию - для них является некоторым барьером тестовая система - ошибки в ней - специфические, и надо знать, как с ними работать.

Критикуя задания, не надо забывать об основной цели олимпиады - отобрать лучших. Не обеспечить полное покрытие вопросов по компьютерным наукам, а - отобрать лучших. Судя по результатам здесь никаких неожиданностей для нас нет: олимпиада отразила то, что отразила бы любая другая олимпиада.

1 лайк

Вот пошел какой-то конструктив и распространенные предложения. А то в твиттер ничего не понять. @Vadim_Lyubanenko не проверка синтаксиса! Ваша проблема в том, что Вы за лямбы взялись. Надо быть проще. Массивы и строки!

@Ulysses при составлении олимпиады мы во-первых решили, что давать доступ к интернету во время теор теста просто неразумно. Во-вторых, давать сложную задачу (даже одну!) на использование стандартных библиотек и тобой упомянутого, это значит завалить 90% участников.

@siamezzze мы не могли выйти за рамки 3 часов на все пор все. Какие 4 задачи можно решить за 3 часа? Напоминаю, что на “алгоритмах на графах” за пару практики с моими объяснениями никто из вашей группы не решил даже одну задач (даже на dfs bfs). А на все 6 уходило по полгода со списыванием. Я не представляю какие 3-4 задачи надо подобрать.

Согласен. Но его наличие может превратить олимпиаду в командную, т.е. в фикцию. Когда появится поколение несписывающих студентов, я первый предложу включить интернет на олимпиаде.

Попытаюсь обобщить общественное мнение на текущий момент. Сложнее задачи, доступ к интернету. Ок, это означает значительное увеличение времени на разработку задач, а также увеличение длительности олимпиады до 5-6 часов. Студенты вас это не смущает? Меня терзают сомнения, посмотрите сюда. Победители взяли 260 из 400 баллов и при этом только одна задача на 100%. Как-то это не очень, особенно если учесть требования главного корпуса про X% баллов.

Хочу пояснить, почему считаю олимпиаду посильной для целевой аудитории. В принципе, @Admin уже это произнес.

Чтение строк из файла. Парсинг с помощью строковых функций, если не помните, то циклом по символам. Сохраняем все в массивы. Сортируем (если не помним, то пишем “пузырька”). Выдаем ответ. Таким образом, задача сводится к “работа с файлами+сортировка”. И тут приведу цитату одного из магистров ИТ

Не кажется ли участникам, что это утверждение не в бровь, а в глаз. Почему Вы просите более сложных задач?

Когда я активно участвовал в олимпиадах(в последний раз, к сожалению, не смог - рабочий день был) - представлял все это иначе.

Есть одна простая задача, вроде этой, которую решат все, на знание базовых структур и алгоритмов. Баллов 10-15 из 100.

Есть две средней сложности - переборные задачи с обширной возможностью оптимизации, например. Какие-нибудь “ветви и границы”, стандартные алгоритмы на графах. Баллов по 20 на каждую.

Есть еще одна - в которой не видно очевидных алгоритмов, которые нужно применить. Нетривиальные преобразования данных, недоступность базовых структур типа множеств/словарей(тут подразумевается, что с ними можно, но медленно). 50. Для такой задачи смекалистый конкурсант попытается написать заглушку, работающую на 20-30% тестов, дабы сорвать с нее лишних баллов.

На такой олимпиаде из тридцати человек будет всего 1-2, которые решат первые три и попробуют четвертую. Зато - они действительно покажут свой уровень на фоне остальных. И 4 человека, получающих место в престижном факультете, выбрать будет проще. Олимпиада должна быть сложной. В конце концов, всегда можно пойти на экзамен тем, кто не справились.

Как вы знаете, редко когда на региональных олимпиадах кто-нибудь набирает более 60-70%. Это нормально, когда решили не все. И не всё. А когда все всё решили - это слабый показатель. В конкретном этом случае означает, что люди не совсем бездельничали на первом и втором курсе.

Ну серьезно, олимпиады школьников 9-10 класса уровня области выглядят сложнее. А у поступающих в магистратуру опыта по идее должно больше быть…

Вообще мне не очень хочется углубляться в критику, как человеку, который сам с поставленной задачей справился довольно плохо. Но есть утопическая надежда, что конструктивная критика действительно поможет что-то сделать лучше в следующий раз.

Повторю - сама задача была нормальной. То есть, на её решение на привычном языке уходило меньше часа. @Vadim_Lyubanenko вот написал свой результат - около 10 минут. Это, думаю, лучший или один из лучших результатов, но представление даёт. Большая часть времени, которого, как Вы, @RS, вполне оправданно опасаетесь, может не хватить, уходило на переписывание на другие языки и мучительные попытки вспомнить, как там называются привычные языковые конструкции. Я тут с Вадимом полностью согласна: то, что большая часть времени ушла именно на это, а не на, собственно, решение - не очень хороший показатель для олимпиады. Так вот, если на задачу уходило пусть минут по 40, то вполне возможно сделать 3 таких же, или чуть легче, задач и, убрав необходимость переписывать на другие языки, уложиться в те же временные рамки. Какие должны быть задачи? Ну, считая, что эта (или подобная) у нас остается, стоит выбрать что-то, где IO не будет камнем преткновения. Ну, к примеру, что-то вроде "Дана последовательность целых чисел. Требуется найти в ней наибольшую неубывающую подпоследовательность простых чисел и вывести её сумму." Ну и что-нибудь на вычисления с большими числами было бы кстати, тот же факториал. Тем, кто на Haskell пишет, понравилось бы, и тем, кто помнит библиотеку больших чисел из Java. Ханойские башни еще можно, например.

Возможно, я одна вообще не знала, что иду на олимпиаду по программированию? То есть, я помнила заочный тур, видела программу экзамена, и, в общем-то, ожидала куда больший упор на теорию. А потом еще почитала регламент:

3.9. Олимпиадные задания должны выполняться участниками на бумажных листах установленного образца. Задания, выполненные на листах произвольной формы, к рассмотрению не принимаются. Ответы на вопросы олимпиадных заданий должны быть исчерпывающими, точными, исключающими возможность двойного толкования. Ответы, оформленные небрежно, а также двусмысленные ответы не рассматриваются. Тексты практического задания должны быть удобочитаемыми. Материалы, написанные неразборчиво, не рассматриваются. Черновики работ не проверяются.

, и окончательно засомневалась в том, что нам компьютеры-то разрешат включать. Нет, я подозревала, что что-то по программированию будет, но это “что-то”, как я думала, будет лишь одним-двумя из вопросов и будет скорее представлять из себя типовые алгоритмы - ну там, решето Эратосфена, алгоритм Евклида …

  1. Все же, @RS, ответьте, если не затруднит - почему тест “весил” так непропорционально мало по сравнению с практикой? Если я правильно понимаю, сейчас его результаты лишь помогут отсортировать тех, у кого есть 2-3 решения практической задачи. То есть, ну совсем вспомогательная роль. Возможно, некоторые участники форума сейчас скажут, что такое распределение очков вполне отражает приоритеты в нашем образовании и практика действительно в 4 раза важнее теории, но я как-то всегда надеялась, что это не так. Подтвердите или опровергните мои опасения, что ли.

Вообще еще раз скажу, если это не было видно из моего первого поста - олимпиада, в целом, была неплохой. Расстроили, конечно, расстановка баллов и акцент на знание основ нескольких языков на память, но, я надеюсь, это как-то изменится к следующему году. А так - соглашусь с @Admin

Условия были равными, лучшие были выявлены. Лично я вижу в том, что я в их число не попадаю, только свою проблему. Ну… в конце концов, действительно, есть экзамен.

1 лайк

Это было моё предложение, поэтому попробую ответить. Причин несколько:

  1. Знание теории (и только оно) будет проверяться на госэкзамене и на вступительном экзамене в магистратуру. Олимпиада — немного другой жанр, поэтому, на мой взгляд, делать и в ней упор на теорию не стоило. Конечно, можно было бы насобирать сколько-то сложных, по-настоящему олимпиадных задач по «фундаментальной информатике», но я почему-то уверен, что их не решил бы вообще никто.
  2. В очный тур олимпиады прошли студенты ПМИ, которые практически ничего из программы вступительного экзамена не изучали. Если они идут на экзамен, то они готовятся по программе, но если они идут на олимпиаду, то вряд ли они будут это делать. Соответственно, делать упор на теорию здесь означает лишать их всякого шанса на прохождение в призёры.
  3. Я изначально рассчитывал, что именно теоретический тест позволит выявить победителя и поможет расставить призёров по местам. Это, как мне кажется, не такая уж вспомогательная роль. То есть победителем должен был оказаться тот, кто лучше знает теорию. Разумеется, при этом он должен уметь программировать не хуже других. Насколько я понимаю, получилось не совсем так, но теперь это уже не очень важно.
1 лайк

Это - провокационный пост. Сейчас конечно все бросятся говорить :smile:

Давайте еще раз: олимпиада не отражает ничего кроме как выявить лучших в каком-то смысле так чтобы они не сдавали экзамен. Олимпиада отражает выполнить желание Главного корпуса провести олимпиаду в 2 этапа и грохнуть на это кучу времени и человек 7 преподавателей - с малым эффектом - победят всего 4-6.

Положительное в олимпиаде - она служит для привлечения внимания к магистратуре - бОльшее количество человек будет поступать и, возможно, из других ВУЗов.

Нейтральное - сдать вступительный экзамен на мой взгляд проще чем победить в олимпиаде - да и честнее если хотите, потому что обеспечивается то самое покрытие.

Сложность составления заданий именно на эту олимпиаду состоит в том, что можно не угадать с аудиторией, переусложнить задания, и тогда ни один - я подчеркиваю - НИ ОДИН человек не победит из-за безумных требований Главного корпуса - и куча труда пойдёт прахом.

Так что я бы критиковал конечно, но осторожно.

И еще - ИТ-шники - ну относитесь вы к заданиям как к спецификации задачи на производстве - вот придете Вы на производство, поставят Вам задачу, а Вы скажете - ну, не интересно ее решать, потому что она не обеспечивает покрытие, да и требование использовать то то и то то и не использовать то то и то то мне не нравится. Мне кажется, как-то неправильно это.

1 лайк

Хорошо, @bravit, @Admin, я вас поняла. @bravit, причины понятны, спасибо. @Admin, прошу прощения у Вас и организаторов, если моя критика несла оттенок осуждения. Повторюсь, я высказывала это только потому, что существование этой темы натолкнуло меня на мысль, что обратная связь была бы полезна. Я уважаю труд организаторов этого мероприятия и благодарю их за то, что они приложили большое количество усилий к тому, чтобы олимпиада была честной и условия были равными.

Поздравлять победителей рано, так что просто выражаю уважение также тем, кто хорошо справился с поставленной задачей, несмотря на все проблемы.

1 лайк

Маша, мне кажется, никто и никогда не упрекнет Вас в не деликатности. Все в порядке и эта тема была открыта именно для “разбора полетов”. Спасибо Вам и еще паре участников, которые не постеснялись высказать свое мнение. И считаю, что посты Ваш и Вадима достаточно аргументированы. В частности, потому что здесь можно эти самые аргументы уместить. Очень надеюсь, что Георгий заглянет в эту тему и более развернуто, чем в твиттере опишет свою точку зрения.

Вот это мнение я слышу второй раз (первый устно от @dummer). Неужели действительно такая проблема запомнить ввод-вывод на 3-4 языках? Я думал, что это основы и уж это Вы должны за 4 года освоить. Возникает такой вопрос: Если бы участников предупредили заранее о необходимости использовать несколько ЯП, было бы проще? UPDATE: Автоматически проверяемые задачи без IO вообще придумать проблема.

Честно говоря, я про это не знал. И это ужасно! Главный корпус просто убивает все нормальные начинания.

Появились предварительные результаты: Олимпиада ЮФУ. Правда, там всё в Excel, с неверным форматированием и без сортировки, но это уж как обычно.