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

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Материалы по курсу Python)
(Научно-исследовательский семинар)
(не показаны 104 промежуточные версии этого же участника)
Строка 3: Строка 3:
 
Основная задача факультетского дня — познакомить школьников с различными научными направлениями и почувствовать себя студентами Вышки.
 
Основная задача факультетского дня — познакомить школьников с различными научными направлениями и почувствовать себя студентами Вышки.
  
[https://drive.google.com/open?id=1OzwioSd6HhsWP3Ntj25gmGPYvqxj58Z0 Презентация факультетского дня ФКН на "карусели 2019"]
+
Общая группа в Telegram: https://t.me/joinchat/CNz-Qk6AoK6LxaTJ9MUwmw
  
'''[https://t.me/joinchat/CNz-Qlliyysmd3AijbvvJw Группа в Telegram для учащихся]'''
+
Распределение по группам и оценки: https://docs.google.com/spreadsheets/d/1xSceXxrytO5T7KdHCbeEu_41fXbB-a0j5kG6KevRGbM/edit#gid=0
  
'''[https://docs.google.com/spreadsheets/d/e/2PACX-1vSBLzqATg1gJIJe5U4sQO48GW6WihGA7A-JlOhZ-6BY240wp4xzLUal1nyKw-YrkQjlKe0g0wTplx9x/pubhtml# Распределение по группам и журнал]'''
+
== Программирование и анализ данных на Python (часть 1) ==
 +
[https://zoom.us/j/5528060756?pwd=VzZWb1FKcCtuTXM3Qmt5L3lFV1ViUT09 Zoom конференция]
  
== Учебный план ==
+
Идентификатор конференции: 552 806 0756
Учебный план факультетского дня состоит из трех курсов:
+
* Программирование и анализ данных на Python (обязательный курс)
+
* Математические основы информатики (курс по выбору)
+
* Научно-исследовательский семинар (курс по выбору)
+
  
'''Программирование и анализ данных на Python'''
+
Код доступа: 543267
 +
 
 +
'''[https://www.youtube.com/playlist?list=PLRzwNfXEjXKKcEUU8UH_U_pkmMpkbejnw Плейлист с лекциями]'''
 +
 
 +
'''Расписание'''
 +
* Лекция - 10:00 - 10:50
 +
* Индивидуальные беседы - 11:10 - 14:00
  
 
Курс посвящён изучению основ и методологии программирования на основе языка Python, который широко используется для разработки и реализации методов анализа данных. Рассматриваются основные алгоритмы и структуры данных, средства разработки и отладки программ.  
 
Курс посвящён изучению основ и методологии программирования на основе языка Python, который широко используется для разработки и реализации методов анализа данных. Рассматриваются основные алгоритмы и структуры данных, средства разработки и отладки программ.  
 +
 
Изучается возможность использования языка Python для создания web-приложений на микрофремворке Flask.
 
Изучается возможность использования языка Python для создания web-приложений на микрофремворке Flask.
 +
 
Изучаются основы работы с библиотекой поддержки больших многомерных массивов NumPy, пакетом анализа данных Pandas и пакетом машинного обучения Scikit-learn. Также в курсе излагаются базовые вопросы из теории вероятностей и математической статистики, необходимые для понимания алгоритмов машинного обучения.  
 
Изучаются основы работы с библиотекой поддержки больших многомерных массивов NumPy, пакетом анализа данных Pandas и пакетом машинного обучения Scikit-learn. Также в курсе излагаются базовые вопросы из теории вероятностей и математической статистики, необходимые для понимания алгоритмов машинного обучения.  
  
Учебные группы: Python1, Python2 -- преподаватель [https://www.hse.ru/staff/samonenko И. Ю. Самоненко]
+
Конспекты лекций по Python [https://www.hse.ru/org/persons/133408680 М.С. Густокашина]: https://yadi.sk/i/BkcKilJkumcPV
  
Учебные группы: Python3, Python4 -- преподаватель [https://www.hse.ru/staff/aignatov А. Д. Игнатов]
+
Видео-лекции можно смотреть тут: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)
  
''Занятия проходят в компьютерных классах, однако если у Вас есть свой ноутбук и Вам привычнее работать на нем, то лучше приносите его.''
+
Преподаватели [https://www.hse.ru/staff/samonenko И. Ю. Самоненко], [https://www.hse.ru/staff/aignatov А. Д. Игнатов].
  
Конспекты лекций по Python [https://www.hse.ru/org/persons/133408680 М.С. Густокашина]: https://yadi.sk/i/BkcKilJkumcPV
+
Учебный ассистент Денис Семенов @ltybc138.  
  
Видео-лекции можно смотреть тут: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)
+
[https://eduhseru-my.sharepoint.com/:f:/g/personal/isamonenko_hse_ru/ErNdkLPSC5xBtdY6jvDpgNkBDd0vLyGFw3QrM2k3UcKC9A?e=Dmhmwu Папка с материалами занятий]
 +
 
 +
'''Занятия'''
 +
 
 +
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
 +
 
 +
Вы увидите пустую (без таблиц) базу данных. Для загрузки таблиц необходимо сделать следующее:
 +
# Зайти в меню Импорт
 +
# Выбрать файл -> cshse_blog.sql
 +
# Нажать Вперед
 +
 
 +
В результате слева у Вас должен появиться список таблиц:
 +
* 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 марта в [https://docs.google.com/forms/d/e/1FAIpQLSfVDLGVfX-OvyFRA1Jt_mnv64BQB0Yuo5uVxM1XMn2mmnLz5w/viewform форме] указать тему Вашего проекта.
 +
 
 +
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) ==
 +
'''Откуда брать задания и куда их сдавать?'''
 +
 
 +
# Зарегистрируйтесь на сайте http://to-edu.ru/
 +
# Запишитесь на курс Факультетский день ФКН (2020-2021) http://to-edu.ru/node/115390. Кодовое слово '''954'''
  
'''Математические основы информатики'''
+
15.04.2021
  
Курс знакомит с особыми разделами математики, которые играют ключевую роль в компьютерных науках. Курс состоит из теории и задач по следующим темам: комбинаторика, математическая логика и теория графов. Курс является основой для дальнейшего изучения дискретной математики в университете.
+
Теория: Понятие матрицы, сложение и вычитание матриц, умножение матриц на число. Умножение матриц (размера до 3x3)
  
Учебные группы: Math1, Math2 -- преподаватель [https://www.hse.ru/org/persons/100060671 А.В. Булычев]
+
Практика: http://to-edu.ru/node/115583
  
'''Научно-исследовательский семинар'''
 
  
В рамках научно-исследовательского семинара учащиеся изучают публикации и готовят доклады на различные темы, связанные с компьютерными науками. Кроме того, в рамках НИСа читается мини-курс «Современная математика: от основ к искусственному интеллекту». Занятия на НИС проходят 1 раз в 2 недели.
+
22.04.2021
  
Учебные группы: Research -- преподаватель [https://www.hse.ru/staff/samonenko И. Ю. Самоненко]
+
Теория: Запись системы линейных уравнений в матричном виде. Обратная матрица. Связь обратной матрицы и определителя.
  
== Расписание занятий  ==
+
Практика: http://to-edu.ru/node/115742
{| class="wikitable"
+
|-
+
! Группа !! Время !! 06.02.20 !! 13.02.20 !! 20.02.20 !! 27.02.20
+
|-
+
| Python1 || 10:30-11:50 || R604  || R604  || R604 || R604
+
|-
+
| Python2  || 12:10-13:30 || R604 || R604  || R604 || R604
+
|-
+
| Python3 || 10:30-11:50 || R607  || R607  || R607 || R607
+
|-
+
| Python4 || 12:10-13:30 || R607  || R607  || R607 || R607
+
|-
+
| Math1 ||10:30-11:50 || G406 || R101  || R101 || R101
+
|-
+
| Math2 || 12:10-13:30 || G406 || R101 ||  R101 || R101
+
|}
+
  
== Олимпиадное программирование ==
+
29.04.2021
Дополнительно после факультетского дня проводятся занятия по олимпиадному программированию.
+
  
Преподаватель -- [https://www.hse.ru/org/persons/191485259 В.В. Куренков]
+
Теория: Метод наименьших квадратов для построения прямой (полинома), расположенной наиболее близко к заданному множеству точке
  
В 2020 году занятия проходят с 15:10 до 19:30 в аудитории R607.
+
Практика: http://to-edu.ru/node/115972
  
== Материалы по курсу Python  ==
+
== Математические основы информатики ==
Семинар 1: https://official.contest.yandex.ru/contest/16158/enter/ (до 12.12.19)
+
[https://us04web.zoom.us/j/5811955118?pwd=SUIydytqVGtSUGIvbWpGbTB6MDB0dz09 Zoom конференция]
  
Семинар 2: https://official.contest.yandex.ru/contest/16300/enter/ (до 19.12.19)
+
Идентификатор конференции: 581 195 5118
  
Семинар 3: https://official.contest.yandex.ru/contest/16410/enter/ (до 25.12.19)
+
Код доступа: pE6Umj
  
Семинар 4: https://official.contest.yandex.ru/contest/16483/enter/ (до 08.01.20)
+
'''Расписание'''
 +
* Группа 1 - 11:10 - 12:30
 +
* Группа 2 - 12:40 - 14:00
  
Семинар 5: https://official.contest.yandex.ru/contest/16597/enter/ (до 15.01.20)
+
Занятия будут проходить следующим образом: половина занятия лекционная, т.е. введение в тему, обсуждение общих принципов и подходов решения предлагаемых задач. Вторая половина семинарская, т.е. непосредственное решение задач в рамках пройденных тем и, исходя из решения, формулирование обобщающих принципов, которые позволяют использовать полученные знания в приложениях. Домашние задания планируется давать по результатам пройденных на занятиях тем почти после каждого занятия для обеспечения текущего контроля успеваемости; периодически обучающимся будут предлагаться аудиторные контрольные работы с задачами схожими с задачами домашних заданий. Все темы и задачи будут разбираться детально, поэтому у каждого будет школьника будет возможность задать все интересующие его вопросы как преподавателю, так и ассистенту. Требования к подготовке: необходима хорошая успеваемость по алгебре и информатике, умение логически мыслить и рассуждать.  
  
Семинар 6: https://official.contest.yandex.ru/contest/16859/enter/ (до 23.01.20)
+
- для получения положительных оценок необходимо, во-первых, посещать занятия и проявлять на них активность; под активностью понимается вовлеченность в процесс обсуждения и решения задач, в частности постановка вопросов для группы, преподавателя и ассистента. Во-вторых, необходимо решать домашние задания и в первую очередь именно производить попытки решения. В-третьих, решать аудиторные контрольные работы. При подведении итогов будет возможно повысить свой балл посредством решения дополнительных задач.
 +
 +
Темы курса
 +
Раздел №1 Комбинаторика
 +
# Множества и операции с ними. Геометрия комбинаторных задач;
 +
# комбинаторное правило суммы и произведения событий (дерево решений);
 +
# общая схема решения комбинаторных задач, урновая схема шаров и урн (случаи различимых и неразличимых объектов);
 +
# формула включений-исключений;
 +
# перестановки, размещения с повторениями и без повторений;
 +
# сочетания, доказательство Эйлера для формулы сочетаний без повторений;
 +
# свойства биномиальных коэффициентов;
 +
# бином Ньютона;
 +
# разбиения на упорядоченные группы;
 +
# разбиения на неупорядоченные группы, задача о разбиении натурального числа на сумму натуральных;
 +
# принцип отражения и лемма о баллотировке;
 +
# задача о разборчивой невесте;
 +
# принцип Дирихле;
 +
# инверсии, игра в 15.
 +
# перечисление цветов, группы симметрии.
 +
 +
Раздел №2 Рекурсия и производящие функции
 +
# рекуррентные отношения
 +
# конечные разности;
 +
# факториальные многочлены;
 +
# числа Стирлинга первого рода и числа Стирлинга второго рода;
 +
# суммирование разностей;
 +
# производящие функции, сущность подхода;
 +
# производящие функции, рекуррентные отношения и комбинаторные подсчеты.
 +
 +
Раздел №3 Теория графов
 +
# основные определения теории графов;
 +
# ориентированные графы
 +
# деревья;
 +
# пути и циклы Эйлера;
 +
# игра “Мгновенное безумие”;
 +
# алгебраические свойства графов;
 +
# планарные графы;
 +
# пути и циклы Гамильтона;
 +
# алгоритм поиска кратчайшего пути.
 +
 +
Раздел №4 Логика
 +
# исчисление предикатов;
 +
# основные положения теории доказательств;
 +
# математическая индукция;
 +
# сравнения.
  
Задачи на O-символику: https://www.dropbox.com/s/9u5bqv6yjpnrls6/week1.pdf?dl=0
+
Преподаватель [https://www.hse.ru/org/persons/100060671 А.В. Булычев]
  
Семинар 7: https://official.contest.yandex.ru/contest/16972/enter/ (до 30.01.20)
+
== Научно-исследовательский семинар ==
  
Семинар 8: https://official.contest.yandex.ru/contest/17061/enter/ (до 06.02.20)
+
Группа в Telegram: https://t.me/joinchat/CNz-QhK5a-_C1NwhwsLv2g
  
Семинар 9: https://official.contest.yandex.ru/contest/17177/enter/ (до 13.02.20)
+
'''Расписание'''
 +
* Индивидуальные беседы - 13:20 - 14:20
  
Семинар 10:
+
'''Темы'''
 +
* Декабрь - Мировые ИТ компании
 +
* Январь - Языки программирования
 +
* Февраль - Интересное приложение
 +
* Март - Цифровой стартап
 +
* Апрель-май - История одной железки
  
1. Зарегистрироваться на сайте http://to-edu.ru/
 
  
2. Записаться на курс http://to-edu.ru/node/93784 (кодовое слово 357)
+
'''Необходимо:'''
 +
Выбрать определенный предмет изучения
 +
Подготовить конспект (1-2 страницы)
 +
Записать 15-20 минутный доклад (презентация + рассказ)
  
3. Перейти к заданию http://to-edu.ru/node/98311
+
Преподаватель [https://www.hse.ru/staff/samonenko И. Ю. Самоненко]

Версия 02:22, 10 мая 2021

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

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

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

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

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

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

Идентификатор конференции: 552 806 0756

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

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

Расписание

  • Лекция - 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

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

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

Темы

  • Декабрь - Мировые ИТ компании
  • Январь - Языки программирования
  • Февраль - Интересное приложение
  • Март - Цифровой стартап
  • Апрель-май - История одной железки


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

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