Финансовые технологии

  • информатика
  • математика
  • Дает 100 баллов на ЕГЭ

Алгоритмы и данные давно являются частью современного общества. Они — в смартфоне, в телевизоре, в транспорте, в больницах и учебных заведениях. Именно от них зависит, какие новости вы получаете, как быстро общаетесь, насколько хорошо вы учитесь и качественно путешествуете. Мобильные операторы превращаются в центры разработки ПО, традиционные банки модифицируются в высокотехнологические компании. Квалифицированный инженер информационных технологий, программист — сейчас проектировщик реальности и будущего.

Профиль «Программная инженерия финансовых технологий» о программировании и современных технологиях, использующихся как в финансовом секторе, так и далеко за его пределами. Он посвящен телекоммуникациям, информационной безопасности, анализу и обработке данных, а также главному — современным инструментам создания программного обеспечения.

Профиль приглашает участников Олимпиады НТИ почувствовать себя частью стартапдвижения — теми, кто может создавать актуальные ИТпроекты на переднем плане технологий!

Профиль входит в список олимпиад РСОШ и дает победителям и призерам 100 баллов к ЕГЭ по профильным предметам при поступлении.

Разработчик

АНО ВО “Университет Иннополис”

Отборочные этапы

Во втором этапе Олимпиады КД НТИ участникам предстоит решить несколько заданий, которые требуют не только и не столько навыков решения классических задач по программированию, сколько умения самостоятельно разбираться в API существующего программного обеспечения, способности в небольшие сроки найти и изучить информацию по какой-либо технологии, применять знания языков программирования, алгоритмов и структур данных для решения реальных, хоть и сильно упрощенных, задач из индустрии.

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

В решении заданий второго этапа помогут ссылки на материалы для самостоятельного изучения. Также заранее рекомендуется посмотреть на разборы заданий прошлых лет — это сформирует понимание того, какого рода задачи могут встретиться.

Рекомендации для наставника
см. хард скилы + все ссылки с текущей страницы профиля финтех

Заключительный этап

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

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

Финалисты должны будут создать решение, которое позволяло бы передавать информацию из одной блокчейн платформы. Решение должно быть отказоустойчивым и максимально децентрализованным. Для достижения второй цели участникам финала нужно будет разрабатывать контракты для платформ, поддерживающих Ethereum Virtual Machine.
Для проверки решения задачи финала будет использоваться система автоматического тестирования на базе GitLab CI/CD. А для успешного создания многокомпонентного приложения участникам рекомендуется внедрить технологию контейнеризации c применением Docker.

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

На финале понадобятся все описанные ниже hard и soft skills, для подготовки используйте материалы прикрепленные на странице профиля.

Материалы для участников

Что должен знать участник

Математика: начальные главы аналитической алгебры, геометрия, комбинаторика, отдельные разделы теории чисел, статистики и теории вероятности, теории графов и линейной алгебры.

Информатика: кодирование и декодирование информации, структуры хранения и обработки данных, комбинаторные алгоритмы, алгоритмы перебора и сортировки, обработка графов, обработка строк, битовые операции.

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

Hard skills

  • Написание элементов ПО для решения конкретной задачи.
    Декомпозиция задачи.
  • Использование парадигм ООП для написания программного обеспечения.
  • Создание аккаунта для сети, совместимой с Ethereum, и выполнения простейших операций — получение баланса, проведение транзакций.
  • Работа с публичной тестовой сетью, совместимой с Ethereum посредством JSONRPC.
  • Извлечение данных из сети Ethereum, совместимой с Ethereum: информация о блоках, о транзакциях, о выписках транзакций.
  • Написание Python приложений для работы с узлами блокчейн сети, совместимой с Ethereum.
  • Написание и отладка контрактов для блокчейн, совместимым Ethereum, в онлайн среде программирования Remix.
  • Применение методик оптимизации работы контрактов Ethereum для уменьшения потребления gas и использования storage.
  • Написание приложений на языке Python для работы с контрактами в блокчейн, совместимым Ethereum.
  • Применение многопоточной архитектуры для создания серверных приложений.
  • Применение микросервисной архитектуры для создания серверных приложений.
  • Определение таких ограничений сетевых приложений, как отзывчивость и пропускная способность.
  • Проверка сетевых приложений на заявленные ограничения
  • Работа с простыми базами данных: базовая настройка, внесение информации, поиск информации.
  • Построение и использование docker контейнеров.
  • Работа с базовыми командами консоли Linux, запуск процессов в фоне, остановка фоновых процессов, перенаправление ввода и вывода.
  • Использование итеративного процесса разработки.
  • Использование систем версифицирования исходного кода (git) для командной разработки программного обеспечения.
  • Базовое понимание настройки систем непрерывной интеграции (напр., GitLab CI/CD)

Soft skills

  • Навыки чтения документации и понимания поставленной задачи.
  • Навыки генерации и обсуждения идей, навык выслушать чужое мнение.
  • Навыки критического мышления.
  • Навыки рефлексии и предоставления обратной связи.
  • Принятие ответственности за выполняемый фронт работ.
  • Навыки взаимопомощи.
  • Навыки работы в команде разработки, навыки управления командой разработки.
  • Стрессоустойчивость.

Численность команды и роли

Состав команды — 3 человека:

Программист, специализирующийся на написании серверных приложений: выстраивание архитектуры многопоточных или микросервисных приложений, понимание особенностей написания ПО для работы в сети и работы с блокчейн узлами, знание RPC API.

Программист, ответственный за компоненты работающие в окружении Ethereum Virtual Machine: понимание транзакционной природы функционирования EVM контрактов, разработка контрактов на языке Solidty или Vyper, понимание концепции gas, оптимизация контрактов для уменьшения вычислительной сложности контрактов и нагрузки на хранилище данных.

DevOps инженер/тестировщик: оформление многопоточного или микросервисного приложения в виде docker сервисов, развертывание частей приложения посредством dockercompose, интеграция с системой ведения версий и системой автоматического тестирования, обеспечение процесса своевременной диагностики на ошибки и несоответствие требованиям.

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

Рынки НТИ

  • FinNet
  • SafeNet