Прочитайте и вдумайтесь в эти названия:
- Технология Contract Shared Memory в ОС Microsoft Singularity
- Back-In-Time Debugger: отладчик под Linux с возможность восстановления предыдущего состояния отлаживаемой программы
- Модификация Dalvik VM для бета-тестирования Android-приложений с возможностью воспроизведения пользовательских действий
Если я скажу вам, что это — научные проекты российских школьников 10-11 класса, вы скорее всего мне не поверите.
Но это так!
Есть у нас в стране конкурсы, которые помогают талантливым школьникам раскрыть свой потенциал и поддерживают работу над подобными проектами.
Один из таких конкурсов уже упоминался на Хабре — это Балтийский Научно-Инженерный Конкурс.
В 2014 году у этого конкурса очень жестко встал финансовый вопрос. Если не получится собрать нужную сумму, организаторы скорее всего будут вынуждены сделать конкурс платным для школьников, что, конечно, будет полным позором для нашей страны…
Цель этого поста — убедить уважаемое IT-сообщество Хабра в необходимости инвестировать в будущее поколение IT-специалистов и поддержать финансово научный конкурс школьников на краудфандинг-портале planeta.ru.
Примеры научных проектов школьников:
Во-первых, немного про проекты из начала поста.
1. Технология Contract Shared Memory в ОС Microsoft Singularity
В этом проекте школьник 10 класса…
- Взял Microsoft Singularity, экспериментальную ОС компании Microsoft
- Проанилизровал производительность системы для некоторых задач
- Предложил более эффективный способ работы с памятью
- Реализовал это, провел тесты, подвел итог
- Предствил работу на Балтийском конкурсе, выиграл поездку в Америку.
- Представил Россию в Америке на международном конкурсе Intel ISEF, стал победителем (2 место).
Презентация проекта для конкурса в России:
Стенд проекта на международной выставке Intel ISEF:
Репортаж про школьника в новостях:
2. Back-In-Time Debugger: отладчик под Linux с возможность восстановления предыдущего состояния отлаживаемой программы
В этом проекте школьник 11 класса…
- Разрабатывая игрушку just for fun на C++, осознал все “прелести” отладки ПО. Особенно те моменты, когда причина возникновения ошибки находится где-то за 10000 строк до того момента, где проблема реально появилась. (например, память “побилась” 3 минуты назад, а Segmentation Fault произошел только сейчас, когда попробовали обратится к побитой памяти)
- Придумал сделать отладчик с возможностью откатить программу до предыдущего состояния и таким образом научиться легко исправлять трудновоспроизводимые баги.
- Взял за основу исходники опенсорного отладчика GDB. Собрал под Cygwin.
- В течение 6 месяцев безуспешно пытался реализовать затею из-под винды.
- Через 6 месяцев решил попробовать сделать это под Linux. В коде программы в пямяти отлаживаемого процесса помещались инструментации, включающие функцию клонирования процессов fork(). Клонирование процесса программы позволяло сохранять состояния программы и откатывать её назад.
- Сделал кастомизированную версию GDB, выложил код на SourceForge.
- Предствил работу на Балтийском конкурсе, выиграл поездку в Америку.
- Представил Россию в Америке на международном конкурсе Intel ISEF, стал победителем (4 место).
Стенд проекта для конкурса в России:
Стенд проекта на международной выставке Intel ISEF:
3. Модификация Dalvik VM для бета-тестирования Android-приложений с возможностью воспроизведения пользовательских действий
В этом проекте школьник 11 класса…
- Ради интереса начал разрабатывать мобильные приложения под Android
- В процессе разработки столкнулся с проблемой, что если у кого-то из бета-тестировщиков приложения возникает ошибка, её иногда довольно трудно воспроизвести и никак при этом не использовать отладчик.
- Вдохновился проектом соотечественника про Back-In-Time отладчик. Решил сделать нечто подобное для Android-приложений.
- Сделал модификацию Dalvik VM (виртуальная машина используемая в Android), в которой в байт-код тестируемого приложения автоматически вставляется код, записывающий системные события и действия пользователя.
- Разработал «плеер», который позволяет по созданному таким образом лог-файлу «проиграть» жизнь приложения, которая получилась у бета-тестера. При этом, разумеется, можно использовать отладчик.
- Предствил работу на Балтийском конкурсе, выиграл поездку в Америку.
- Представил Россию в Америке на международном конкурсе Intel ISEF. Главную премию не выиграл, но получил хорошие призы.
Стенд проекта на международной выставке Intel ISEF:
4. Другие проекты
Приведенные выше 3 проекта выбраны лишь потому, что я знаком со школьниками, которые эти проекты делали («школьники», конечно, уже давно не школьники. Один «школьник» сегодня уже руководит IT-компанией, которая разрабатывает программный продукт в нашей стране и уже продает его на экспорт в Европу). Ну и, понятно, были выбраны именно довольно серьезные Computer Science проекты, которые могли бы быть интересны хабра-сообществу. На Балтийском конкурсе представлются проекты не только в секции Computer Science и не только подобного уровня сложности. На конкурсе можно встретить как «приложение-тренажер для детей на flash» от школьника 9 класса из села Барановичи, так и «распределенную систему взлома паролей» от 11-классника из Питера. В других секциях можно встретить массу сильных работ — вот для примера несколько названий с прошлого года (говорят сами за себя, мне кажется):
- Алгебра Йонеды одной из специальных бирядных алгебр
- Новый тип слоистого двойного никель гидроксида для использования в гибридных суперконденсаторах
- Когомологии p-групп ручного типа представлений
- Изучение способов селекции Mytilus Edulis и Mytilus Trossulus мидий куликом-сорокой (Haemotopys Ostralegus) мидиями видов на территории Кандалакшского заподеника острова Ряжков
- Синтез аналога стероидных гормонов, содержащего фтор в положении 2
Список работ победителей конкурса 2013 года можно посмотреть здесь.
Здесь можно посмотреть отличный фото-отчет с конкурса 2010 года: habrahabr.ru/post/83758/
Специфика научных проектов, отличие от олимпиад по программированию
Крайне важно понимать принципиальное отличие Балтийского конкурса и ему подобных от всевозможных олимпиад типа ACM.
На олимпиадах по програмированию:
- Дается задача, которая уже кем-то 100% решена до тебя;
- Задачу нужно решить за 10 минут, школьник должен соображать очень быстро, быстро тушить пожары;
- Качество кода не имеет значения. Главное — отправить на проверку файл с задачей task3NewNewNew.cpp и получить «Accepted»;
- Используются базовые элементы языка: массивы, строки, пара стандартных алгоритмов.
На Балтийском конкурсе:
- Дается задача с «открытым концом». Никто толком не знает что получится в итоге и получится ли вообще;
- Задачу невозможно решить за 10 минут. Как правило задача делается год;
- Результат работы школьника — полнофункциональный программный продукт. Школьник вынужден учиться писать код проекта правильно, грамотно продумывать архитектуру;
- Школьник «курит» 1000 манов, чтобы разобраться в сложных технологиях, причем в 90% случаев все это на английском.
А теперь представьте себе двух студентов 1 курса. Один в 11 классе тренировался на олимпиадных задачках, а другой в это время делал крупный проект на Балтийский конкурс.
Какого из двух студентов вы бы взяли на стажировку в проект в свою компанию?
Думаю, что определенно второго. Реальные софтверные проекты — это, как правило, не олимпиадные задачки, где нужно за 10 минут быстро что-то закодить. В реальных проектах мы часами изучаем спецификации, продумываем архитектуру, разбираемся в чужом коде и т.д.
Важно ли для нашей IT-индустрии поддерживать такие конкурсы?
По-моему, просто необходимо. Иначе в один прекрасный день мы проснемся и поймем, что все 50 кандидатов на вакансию для вашего сложного проекта способны лишь на что-то примитивное и одноходовое.
Про финансирование конкурса
Один из важнейших принципов организации конкурса для школьников из регионов, приезжающих в Петербург — участние в конкурсе не должно быть платным.
Для школьников из провинции возможность выступить перед научным жюри и пообщаться с единомышленниками особенно актуальна, так как дома у них таких возможностей практически нет. Оплата проезда и проживания при этом для многих ребят представляет существенную проблему.
По этой причине, подобные расходы организаторы конкурса решили взять на себя.
В любой нормальной стране, конечно же, подобные конкурсы для школьников должны спонсироваться государством. От поддержки таких конкурсов зависит то, станет ли страна в будущем «сырьевым придатком» или лидером в инновационных разработках.
В 2014 году Балтийский кокнурс не получил финансовой поддержки от российских чиновников. Не буду описывать в деталях, куда организаторы обращались и что получили в ответ. Думаю, читающие этот пост прекрасно знают, как у нас в стране обстоят дела с эффективностью расходования наших налогов.
Вкратце, «алгоритм» такой:
- Комитет по науке не занимается школьниками
- Комитет по образованию не занимается наукой
- Комитет по молодежной политике не занимается ни наукой, ни школьниками, их стезя — развлекательные мероприятия
- Губернатор перенаправляет письма снова в Комитет по науке
- goto 1
Почему IT-сообщество должно поддержать Балтийский конкурс?
Представьте Ивана Иванова, ученика 10го класса из города Челябинска.
Пока все друзья Ивана играют в World of Tanks и пьют пиво в подъезде, Иван хочет разработать модификацию Dalvik VM, чтобы отлаживать Android-приложения стало удобнее.
Иван хочет попасть в Питер на конкурс, чтобы получить фидбек от профессионалов IT-индустрии, но у него нет лишних 10 000, чтобы обеспечить себе поездку.
Попробуйте для себя ответить на следующие вопросы:
- Сильно ли важно для IT-индустрии в нашей стране, чтобы Иван смог сделать свой проект и приехать на конкурс?
- В стране, где выделяются миллиарды на развитие науки в школе, должно ли государство помочь Ивану и оплатить поездку?
- Если государство в итоге не помогает, должно ли IT-сообщество вмешаться и поддержать Ивана?
Если на все 3 вопроса вы уверенно ответили «да», прошу вас нажать «помочь проекту» здесь и перечислить пару тысяч в поддержку конкурса.