Факультетский день 2021-2022 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Программирование и анализ данных на Python (часть 3))
(Занятие 1. Матрицы (14.04.2022))
Строка 342: Строка 342:
  
 
=== Занятие 1. Матрицы (14.04.2022) ===
 
=== Занятие 1. Матрицы (14.04.2022) ===
 +
 +
Теория: Понятие матрицы. Сумма и произведение матриц.
 +
 +
Практика: https://to-edu.ru/node/118674
  
 
=== Занятие 2. Системы линейных уравнений (21.04.2022) ===
 
=== Занятие 2. Системы линейных уравнений (21.04.2022) ===

Версия 21:59, 28 марта 2022

Факультетский день — особая форма проведения занятий для учеников Лицея ВШЭ и школьников из других школ Распределенного лицея ВШЭ.

Основная задача факультетского дня — познакомить школьников с различными научными направлениями и почувствовать себя студентами Вышки.

Общая группа в Telegram

Таблица с оценками

Содержание

Факультетская жизнь

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

Все мероприятия будут проходить по четвергам во второй половине дня.

Просим Вас обязательно регистрироваться на каждое мероприятие!

День 1. О лабораториях и исследованиях

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

Дата: Четверг, 27 января.

Время: 16:30 -- 18:00

Аудитории: R407, R505

День 2. Об учебе на ФКН

На встрече, которая состоится 17 февраля в 16:30 в кампусе ФКН на Покровке (аудитория R505), мы расскажем про образовательные программы, которые реализует ФКН, попробуем разобраться в тонкостях поступления, процессе обучения и студенческой жизни в игровой форме.

День 3. Студенческие организации

31 марта в 16:00 (ауд.R505 на Покровке) мы пригласили представителей студенческой организации “CSTATI”. Ребята расскажут вам о том, чем можно заниматься на ФКН в свободное от учебы время и как построить свой график таким образом, чтобы это время у вас появилось.

Обязательная pегистрация

Программирование и анализ данных на Python (общая информация)

Zoom ссылка на лекцию

Идентификатор конференции: 261 255 6227

Код доступа: 939738

Плейлист с лекциями

Расписание

  • Лекция - 10:00 - 11:00
  • Индивидуальные беседы - 11:10 - 14:00

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

Изучается возможность использования языка Python для создания web-приложений на микрофремворке Flask.

Изучаются основы работы с библиотекой поддержки больших многомерных массивов NumPy, пакетом анализа данных Pandas и пакетом машинного обучения Scikit-learn. Также в курсе излагаются базовые вопросы из теории вероятностей и математической статистики, необходимые для понимания алгоритмов машинного обучения.

Конспекты лекций по Python М.С. Густокашина: https://yadi.sk/i/BkcKilJkumcPV

Видео-лекции можно смотреть тут: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)

Преподаватели И. Ю. Самоненко, А. Д. Игнатов.

Учебный ассистент Алексей Носов @alexnosof.

Учебному ассистенту можно:

  • задавать вопросы по контестам, в частности, на каком тесте падает программа,
  • попросить небольшую подсказу по решению,
  • сдавать долги по старым контестам.

Программирование и анализ данных на Python (часть 1)

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

Если логин и пароль так и не приходят, то заполните форму.

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

Каждый контест открыт в течение 14 дней. Срок устной сдачи решенного контеста - до начала 3 части курса (ориентировочно 14.04.2022).

Система оценки контестов

  1. Контест считается сданным только после устной сдачи преподавателю или ассистенту.
  2. Если в контесте решена как минимум 1 задача, то оценка 3.
  3. Если в контесте решено более половины обычных задач, то оценка 4.
  4. Если в контесте решено все обычные задачи, а также не менее половины задач со звездочкой (*), то ставится оценка 5.
  5. Если в контесте решены не все обычные задачи, но несколько задач со звездочкой (*), то одна задача со звездочкой может быть засчитана на две простых задачи. Далее действует предыдущий пункт.
  6. Независимо от предыдущих пунктов каждая решение хотя бы одной задачи с двумя звездочками (**) из контекста оценивается дополнительной бонусной оценкой 5.
  7. Если на устной сдачи выясняется, что ученик не может объяснить код, т.е. списал задачу, то выставляется оценка 1 за контест.
  8. Если ученик не решал контекст или решил, но не сдал его, то выставляется оценка 2.

Занятие 1. 02.12.2020

Теория: Нет

Контест: https://official.contest.yandex.ru/contest/32664/problems/

Занятие 2. 09.12.2021

Теория:

  • Проблема оценки сложности работы программ
  • Асимптотический анализ: Понятие O ("О" большое)

Контест: https://official.contest.yandex.ru/contest/32667/problems/

Занятие 3. 16.12.2021

Теория:

  • Понятие Θ ("Тета большое")
  • Асимптотический анализ для полиномов.
  • Оценка сложности полиномиальных алгоритмов

Контест: https://official.contest.yandex.ru/contest/32668/problems/

Занятие 4. 23.12.2021

Теория:

  • Понятие o ("о" - маленькое)
  • Асимптотический анализ для n^k и a^n. Сравнение скоростей роста функций.
  • Оценка сложности экспоненциальных алгоритмов.

Контест: https://official.contest.yandex.ru/contest/32669/problems/

Занятие 5. 13.01.2022

Теория:

  • Функция логарифм. Свойства логарифма.
  • Асимптотический анализ для log(n) и n^k. Сравнение скоростей роста функций.
  • Линейный поиск. Бинарный поиск.
  • Поиск аргумента, при которой возрастающая функция принимает заданное значение.

Материалы:

Контест: https://official.contest.yandex.ru/contest/32670/problems/

Занятие 6. 20.01.2022

Теория:

  • Сортировка выбором, сортировка вставкой
  • Сложность сортировок, инвариант цикла

Контест: https://official.contest.yandex.ru/contest/32671/problems/

Занятие 7. 27.01.2022

Теория:

  • Сортировка слиянием

Контест: https://official.contest.yandex.ru/contest/32672/problems/

Занятие 8. 03.02.2022

Теория:

  • Оценка времени работы алгоритмов сортировки.

Контест: https://official.contest.yandex.ru/contest/32674/problems/

Занятие 9. 10.02.2022

Теория:

  • Структуры данных.
  • Связный список VS массив.
  • Приоритетная очередь.

Контест: https://official.contest.yandex.ru/contest/32675/problems/

Занятие 10. 17.02.2022

Теория:

  • Реализации кучи (приоритетной очереди) на базе массивов.
  • Структура данных куча. Добавление, изменение значений, изъятие минимального элемента.
  • Сортировка массива при помощи кучи.

Контест: https://official.contest.yandex.ru/contest/32677/problems/

Занятие 11. 24.02.2022

Теория:

  • Бинарные деревья поиска. Общая идея. Поиск, добавление и удаление вершин.
  • AVL - деревья.

Контест: https://official.contest.yandex.ru/contest/32678/problems/

Занятие 12. 24.02.2022

Теория:

  • Сортировка массива ограниченных значений.
  • Построение множества чисел при помощи хеш-функции
  • Хеширование строк. Разрешение коллизий методом цепочек (списка)

Контест: Нет.

Программирование и анализ данных на Python (часть 2)

Подготовка к минипроекту на Flask

Для выполнения проекта Вам предоставляется:

1. Адрес для размещения сайта

2. Доступ к серверу по FTP.

3. База данных MySQL.

4. Система для получения логов ошибок.


У каждого из Вас есть номер из логина к Яндекс.Контесту: hse-cs-fd-2021-N, где N - это Ваш номер.

У каждого из Вас есть пароль к Яндекс.Контексту. Для доступа по FTP и к MySQL Вам потребуется пароль, которые получается из Вашего пароля к Яндекс.Контексту приписыванием спереди четырех символов Qq!1. Например, если у Вас был пароль VxbD2bC6Q9, то для FTP и MySQL Ваш пароль Qq!1VxbD2bC6Q9.


1. Ваш сайт будет размещен по адресу N.cshse.beget.tech. Вы сразу можете проверить этот адрес. По умолчанию у Вас должна открыться страница с текстом "Hello world!".


2. Для доступа по FTP Вы можете использовать любой FTP клиент, например WinSCP. Для доступа по FTP Вам необходимо задать:

  • Server: cshse.beget.tech
  • Port: 21
  • Пользователь: cshse_N
  • Пароль к FTP.

Если подключение произошло успешно, то Вы увидите папку со следующим содержимым:

  • static (папка)
  • templates (папка)
  • cshse_test_flask.sql
  • index.wsgi
  • myapp.py
  • myapp.pyc

Для выполнения дальнейшей работы Вам потребуется папки и файлы cshse_test_flask.sql и myapp.py. Другие файлы редактировать не надо.

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


3. База данных.

Для доступа к базе данных надо перейти по адресу https://rainbow.beget.com/phpMyAdmin/

  • Имя пользователя: cshse_N
  • Пароль к MySQL

Возможно, Вы увидите базу данных с таблицами прошлого года. Если так, то Вам надо удалить эти таблицы. Для этого нажать на чекбокс "Отмтеить все", затем выбрать "С отмеченными:" -> "Удалить". Затем нажать "Да".

Далее Вам необходимо загрузить стартовые таблицы. Для этого необходимо сделать следующее:

  1. Зайти в меню Импорт
  2. Выбрать файл -> cshse_test_flask.sql
  3. Нажать Вперед

В результате слева у Вас должен появиться список таблиц:

  • message
  • subscription
  • user


4. Система для получения логов ошибок.

Теперь все готово для того, чтобы запустить блог и начать менять код. Однако, как и любой процесс программирования, он связан с появлением ошибок. Некоторые ошибки (которые допущены внутри функций) будут отображаться прямо на web странице, которую Вы попытаетесь открыть. Однако некоторые ошибки приводят к тому, что страница вовсе не откроется. Тогда логи этих ошибок можно увидеть в специальном файле по адресу: http://cshse.beget.tech/log/?n=N, где N - это Ваш номер.

Давайте проверим, что данная система работает.

Откройте для редактирования файл myapp.py, впишите во второй строке test (получается, что вы вызываете неопределённую ранее переменную), сохраните файл и перейдите на сайт. Должна появиться ошибка "Internal Server Error". Теперь перейдите по ссылке для лога ошибок, и на открывшейся странице Вы увидите информацию о том, где появилась ошибка.

Теперь удалите test из второй строки и запишите его между строками

   def main(): # Основная страница
   return "Hello world!"

Снова перейдите на сайт. Тут Вы также увидите сообщение об ошибке, но уже внутри страницы.

Удалите ненужный test.


5. Запуск тестового блога

  • Укажите имя пользователя, пароль и имя базы (= имя пользователя) от MySQL в 19,20 и 21 строкаx.
  • Уберите комментирование в строке #engine = create_engine("mysql://" + username ...
  • В функции main() удалите или закомментируйте return "Hello world!" и уберите комментарии в двух последующих строках.

Перейдите на сайт. Если Вы все сделали верно, то у Вас должен открыться микроблог.

Требования к проекту

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

2. Для оформления страниц сайта должны использоваться каскадные таблицы стилей (css). В исходном примере css используется для оформления заголовка.

3. На сайте должна быть стартовая страница, а также как минимум одна страница, которая генерируется из базы данных в зависимости от параметра адресной строки. База данных должна состоять как минимум из трех связных таблиц. В исходном примере - это страницы вида /user/1, /user/2, /user/3 и т.д.

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

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

Критерии оценки и сроки выполнения

1. Проект считается принятым только после устной беседы.

2. Срок сдачи - до 7 апреля включительно. Сдача после 7 апреля допускается, но оценка на 1 балл ниже.

3. Если Вы сделали статический сайт на HTML и CSS (т.е. выполнили пункты 1. и 2.), то оценка 3.

4. Если Вы сделали сайт, которые только отображает информацию из базы данных, но не позволяет ее редактировать (т.е. не выполнили пункт 4), то оценка 4.

5. Если Вы сделали сайт, который отвечает всем 5 пунктам, то оценка 5.

6. Допустимо, что у разных учеников сайты на схожую тематику, но запрещено полное совпадение двух проектов, как по коду, так и по реализации.

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

8. Оценка за проект ставится с весом 8, т.к. на проект выделяется 4 недели, и за каждую неделю Вы получаете по 2 оценки.

Порядок выполнения

1. Необходимо до 17 марта (включительно) в форме указать тему Вашего проекта.

2. В целом Вы можете сделать проект с той скоростью, как пожелаете.

3. Но рекомендуется:

  • до 17 марта сделать статические страницы с той информацией, которую Вы будете размещать. Замечание созданные локально HTML и CSS файлы Вы можете записать в отдельную папку на сервере, например, папку test. Но для того, чтобы открыть статический сайт надо в явном виде указать стартовый файл, т.е. N.cshse.beget.tech/test/index.html
  • до 31 марта сделать базу данных и отображение данных из нее.
  • до 7 апреля или ранее сделать возможность записи в базу данных.

4. Лекционная часть 10 и 17 марта будет посвящена разбору данной тематики.

5. Семинарское время 17 марта и 31 марта будут посвящено консультациям по проекту.

6. 7 апреля целиком будет посвящено сдачи проектов. Но сдавать можно и раньше, если Вы все уже все сделаете.

7. В каникулы 24 марта что-либо делать не обязательно. Но консультации в этот день получить можно.

8. Если что-то не ясно или не получается, то сразу пишите в чат!

Альтернативный проект

Кроме представленного выше проекта, есть еще один проект, который могут выполнить 1 или 2 ученика.

Тема проекта: Разработка визуального интерфейса для системы автоматического обновления рабочих ведомостей студентов.

Не секрет, что многие задания, которые выдаются студентам на Факультете Компьютерных Наук (ФКН) (и не только) проверяются автоматическими системами – например, Яндекс.Контест или online.hse.ru. В настоящее время разработан Python-модуль, предназначенный для автоматической выгрузки результатов выданных заданий, их агрегации и выставления оценок в рабочую ведомость (Excel или Google Sheets).

Ученикам Факультетского Дня ФКН предлагается присоединиться к данному проекту и принять участие в разработке визуального интерфейса для данной системы. Интерфейс должен предоставлять функции управления рабочими ведомостями (изменение списка студентов и списка заданий). По сути, это одна или две страницы HTML (со всплывающими окнами).

Выполнение проекта также предполагает создание базы данных с таблицами для рабочих ведомостей, заданий и вспомогательных данных (логины / пароли для систем проверки, настройки, т.п.). Проект желательно выполнить на Flask, но Django также допустим.

Проект выполняется под руководством Игнатова А.Д.

Программирование и анализ данных на Python (часть 3)

Занятие 1. Матрицы (14.04.2022)

Теория: Понятие матрицы. Сумма и произведение матриц.

Практика: https://to-edu.ru/node/118674

Занятие 2. Системы линейных уравнений (21.04.2022)

Занятие 3. Метод неопределённых коэффициентов (28.04.2022)

Занятие 4. Метод наименьших квадратов (12.05.2022)

Занятие 5. Повторение материала (19.05.2022)

Занятие 6. Повторение материала (26.05.2022)

Математические основы информатики

Первое занятие: 9.12.2021

Zoom конференция

Идентификатор конференции: 581 195 5118

Код доступа: pE6Umj

Расписание

  • Группа 1 - 11:10 - 12:30
  • Группа 2 - 12:40 - 14:00

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

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

Темы курса

Раздел №1 Комбинаторика

  1. Множества и операции с ними. Геометрия комбинаторных задач;
  2. комбинаторное правило суммы и произведения событий (дерево решений);
  3. общая схема решения комбинаторных задач, урновая схема шаров и урн (случаи различимых и неразличимых объектов);
  4. формула включений-исключений;
  5. перестановки, размещения с повторениями и без повторений;
  6. сочетания, доказательство Эйлера для формулы сочетаний без повторений;
  7. свойства биномиальных коэффициентов;
  8. бином Ньютона;
  9. разбиения на упорядоченные группы;
  10. разбиения на неупорядоченные группы, задача о разбиении натурального числа на сумму натуральных;
  11. принцип отражения и лемма о баллотировке;
  12. задача о разборчивой невесте;
  13. принцип Дирихле;
  14. инверсии, игра в 15.
  15. перечисление цветов, группы симметрии.

Раздел №2 Рекурсия и производящие функции

  1. рекуррентные отношения
  2. конечные разности;
  3. факториальные многочлены;
  4. числа Стирлинга первого рода и числа Стирлинга второго рода;
  5. суммирование разностей;
  6. производящие функции, сущность подхода;
  7. производящие функции, рекуррентные отношения и комбинаторные подсчеты.

Раздел №3 Теория графов

  1. основные определения теории графов;
  2. ориентированные графы
  3. деревья;
  4. пути и циклы Эйлера;
  5. игра “Мгновенное безумие”;
  6. алгебраические свойства графов;
  7. планарные графы;
  8. пути и циклы Гамильтона;
  9. алгоритм поиска кратчайшего пути.

Раздел №4 Логика

  1. исчисление предикатов;
  2. основные положения теории доказательств;
  3. математическая индукция;
  4. сравнения.

Преподаватель А.В. Булычев

Научно-исследовательский семинар

Группа в Telegram: https://t.me/+t_DyBE3eJLs1ZjUy

Преподаватель И. Ю. Самоненко

Консультации: 14:00 - 14:20

Список тем

  1. Декабрь - Мировые ИТ компании
  2. Январь - Языки программирования
  3. Февраль - Интересное приложение
  4. Март - Цифровой стартап
  5. Апрель - История одной железки
  6. Май - Урок информатики
  7. Сентябрь - Задание в Latex
  8. Октябрь - Задание на визуализацию

Темы 1. - 6.

  • Выбрать определенный предмет изучения
  • Подготовить конспект (1-2 страницы)
  • Подготовить презентацию (количество слайдов не регламентируется, но важно, чтобы они хорошо иллюстрировали Ваш доклад)
  • Записать 15-20 минутный доклад (презентация + рассказ)

Задание в Latex

Вам необходимо зарегистрироваться на сайте https://www.overleaf.com/. Допустимо также установить себе на компьютер пакет Latex и некоторый редактор, но это не обязательно, и можно пользоваться web версией.

Необходимо выбрать пять заданий по математике и информатике, например, из ЕГЭ:

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

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

  • Для заданий по алгебре необходимо пользоваться версткой формул, которые есть в Latex. Если необходимо построить график, то воспользуйтесь какой-то системой построения графиков, например http://yotx.ru/ или аналогичной. Полученные картинки добавьте в Ваш документ.
  • Для построения геометрических чертежей воспользуйтесь системой Geogebra: https://www.geogebra.org. Полученные картинки добавьте в Ваш документ.
  • Для решения задачи по информатике изучите, как правильно оформить код: http://mydebianblog.blogspot.com/2012/12/latex.html

Для каждой задачи запишите ее условие и подробное образцовое решение.

В результате Вам необходимо подготовить и отправить:

  • Архив tex файлом и всеми дополнительными файлами (в overleaf есть кнопка "Download" в списке проектов)
  • Итоговый PDF файл (в overleaf при редактировании есть "Download PDF")

Задание будет оцениваться по количеству задач и качеству оформления текста.

Задание на визуализацию

Вам необходимо выбрать пять каких-то понятий или явлений и построить для них диаграмму связей (mind map, ментальная карта). Что такое диаграммы связей можно почитать, например, тут:

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

Сделайте карты достаточно подробными, в каждой из них должно быть не менее 20 связных элементов. Если Вам кажется, что для данного явления или понятия нет 20 элементов, то:

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

Вы можете воспользоваться различными online сервисами для построения mind map, например https://www.mindmup.com. Но допускается нарисовать все вручную на бумаге, красиво графически оформив Ваш рисунок.

Архив с 5 изображениями надо отправить в качестве ответа на задание. Оцениваться будет разумность схемы, ее подробность и красота оформления.