Факультетский день 2020-2021

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск

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

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

Общая группа в Telegram: https://t.me/joinchat/CNz-Qk6AoK6LxaTJ9MUwmw

Распределение по группам и оценки: https://docs.google.com/spreadsheets/d/1xSceXxrytO5T7KdHCbeEu_41fXbB-a0j5kG6KevRGbM/edit#gid=0

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

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

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

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

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

Расписание

  • Лекция - 10:00 - 10:50
  • Индивидуальные беседы - 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 (платить денег ни в коем случае не нужно)

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

Учебный ассистент Денис Семенов @ltybc138.

Папка с материалами занятий

Занятия

03.12.2020

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

10.12.2020

Теория:

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

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

17.12.2020

Теория:

  • Асимптотический анализ для полиномов.
  • Анализ программ

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

24.12.2020

Теория:

  • Асимптотический анализ для a^n и log(n).
  • Анализ программ

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

14.01.2021 Теория:

  • Бинарный поиск
  • Инвариант цикла
  • Поиск аргумента, при которой возрастающая функция принимает заданное значение.

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

21.01.2021

Теория:

  • Сортировка пузырьком, сортировка вставкой
  • Сложность сортировок, инвариант сортировок

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

28.01.2021

Теория:

Нижняя оценка сложности алгоритмов сортировки: n*log(n).

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

04.02.2021

Теория:

  • Сортировка слиянием.
  • Быстрая сортировка.
  • Оценка времени работы и использованной памяти.

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

11.02.2021

Теория:

  • Приоритетная очередь. Формулировка задачи. Построение на базе массивов.

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

18.02.2021

Теория:

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

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

25.02.2021

Теория:

  • Связный список. Сравнение с массивом.

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

04.03.2021

Теория:

  • Хеш-таблица. Разрешение коллизий методом цепочек (списка)

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

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

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

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

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

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

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

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


У каждого из Вас есть номер из логина к Яндекс.Контесту: hse-cs-fd-2020-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_blog.sql
  • index.wsgi
  • myapp.py
  • myapp.pyc

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

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


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

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

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

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

  1. Зайти в меню Импорт
  2. Выбрать файл -> cshse_blog.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. Срок сдачи - до 8 апреля включительно. Сдача после 8 апреля допускается, но оценка на 1 балл ниже.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Откуда брать задания и куда их сдавать?

  1. Зарегистрируйтесь на сайте http://to-edu.ru/
  2. Запишитесь на курс Факультетский день ФКН (2020-2021) http://to-edu.ru/node/115390. Кодовое слово 954

15.04.2021

Теория: Понятие матрицы, сложение и вычитание матриц, умножение матриц на число. Умножение матриц (размера до 3x3)

Практика: http://to-edu.ru/node/115583


22.04.2021

Теория: Запись системы линейных уравнений в матричном виде. Обратная матрица. Связь обратной матрицы и определителя.

Практика: http://to-edu.ru/node/115742

29.04.2021

Теория: Метод наименьших квадратов для построения прямой (полинома), расположенной наиболее близко к заданному множеству точке

Практика: http://to-edu.ru/node/115972

02.09.2021

Теория: Понятие случайного события и случайной величины.

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

09.09.2021

Теория: Математическое ожидание и стандартное отклонение случайной величины. Среднее и стандартное отклонение выборки. Постановка задачи регрессии (определения положения кривой, наиболее близко проходящей к точкам) при помощи случайных величин.

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

16.09.2021

Теория: Функция плотности распределения. Плотность распределения равномерной случайной величины на отрезке.

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

23.09.2021

Теория: Нормальное распределение. Центральная предельная теорема. Экспоненциальное распределение.

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

30.09.2021

Теория: Бимодальные распределения

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

07.10.2021

Теория: Зависимость случайных величин. Корреляция.

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

14.10.2021

Теория: Задача линейной регрессии. Обучающая и тестовая выборки.

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

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

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/joinchat/CNz-QhK5a-_C1NwhwsLv2g Преподаватель И. Ю. Самоненко

Расписание

  • Индивидуальные беседы - 13:20 - 14:20

Темы

  • Декабрь - Мировые ИТ компании
  • Январь - Языки программирования
  • Февраль - Интересное приложение
  • Март - Цифровой стартап
  • Апрель-май - История одной железки
  • Сентябрь - Основы верстки научных тексов в Latex.
  • Октябрь - Визуализация

Доклады

Выбрать определенный предмет изучения Подготовить конспект (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 изображениями надо отправить в качестве ответа на задание. Оцениваться будет разумность схемы, ее подробность и красота оформления.