Во время обучения в НИУ ВШЭ освоил такие дисциплины как Линейная алгебра, Математический анализ, Дискретная математика, Алгоритмы и структуры данных, а также языки Python и C++. Имею два года практики на Python и год на C++. Посещал факультативы: Linux Kernel, Продвинутые алгоритмы. Прошел курс по C++ на Coursera (Все пояса по C++) Знаком с основами: - Linux (Ubuntu, 1 месяц пользования) - Git (знаком с основными командами) - SQLite - использовал в собственном проекте (создавал свой сайт) - CSS - HTML5 - JavaScript - Latex - Jupyter notebook Написал на Python несколько проектов: - " Моделирование гравитационного взаимодействия N тел". Использовал библиотеку pygame. Благодаря этому проекту стал быстрее писать код и лучше понимать основы ООП - Написал программу для шифрования, основанную на сложении по модулю 2 и алгоритме Блюма-Микали. Весь код выполнен в виде класса, для удобства использования. Благодаря этому проекту познакомился с основами криптографии и различными алгоритмами генерации псевдослучайных чисел. - Написал свой сайт с использованием flask, SQLite, SQLAlchemy. Благодаря этому проекту изучил основы данных библиотек и получил представление о создании интернет-продуктов. Делал лабораторные работы по линейной алгебре в jupyter notebook, в том числе на линейную регрессию и метод наименьших квадратов. Изучил такие библиотеки Python как numpy, matplotlib. Имею хорошее понимание основ алгоритмов и структур данных и навык их реализации: - решение задач на элементарные структуры данных такие как стек, очередь, дек, двоичное дерево поиска. - Алгоритмы обходов графов такие как DFS, BFS, Floyd-Warshall & Bellman-Ford, алгоритм Дейкстры. - Знание хеш-функций, линейное и двойное зондирование, знаком с методами борьбы с коллизиями: хранение с использованием цепочек и открытая адресация) - Реализовывал и применял алгоритм Блюма-Микали - Владею основами метода Разделяй и властвуй, а конкретно такими задачами как быстрое умножение чисел, сортировка слиянием, задача о нахождении k-го по величине элемента массива. - Владею основами концепции динамического программирования такими как sliding window, наибольшая возрастающая последовательность, расстояние редактирования, задача о рюкзаке. - Алгоритм роя пчел, муравьиный алгоритм, битонная сортировка - Владею основами и знаю концепцию генетических алгоритмов - Знаком с основами криптографических алгоритмов шифрования - бинарный поиск Знаком с видами алгоритмических подходов такими как: - динамическое программирование - линейное программирование (симплекс метод, задачи о потоках в сетях) - жадные алгоритмы (покрывающие деревья, кодирование Хаффмана, формулы Хорна, покрытие множествами) Знаком с амортизационным анализом - банковский метод и метод потенциалов Знаком с O-символикой |