Практикум на ЭВМ (317)/2018 (осень)
Материал из MachineLearning.
 (→Выступления студентов)  | 
			|||
| (16 промежуточных версий не показаны.) | |||
| Строка 22: | Строка 22: | ||
5. Критерии итоговой оценки:  | 5. Критерии итоговой оценки:  | ||
| - | * отлично —   | + | * отлично — 190 баллов, 3 практических задания зачтены  | 
| - | * хорошо —   | + | * хорошо — 145 баллов, 2 практических задания зачтены  | 
| - | * удовлетворительно —   | + | * удовлетворительно — 95 баллов, 1 практическое задание зачтено  | 
Практическое задание считается зачтённым, если по нему выполнены и засчитаны все три этапа работы.  | Практическое задание считается зачтённым, если по нему выполнены и засчитаны все три этапа работы.  | ||
| Строка 86: | Строка 86: | ||
|Занятие 4  | |Занятие 4  | ||
|  | |  | ||
| + | Метрические методы классификации.  | ||
| + | |||
Обсуждение первого практического задания.  | Обсуждение первого практического задания.  | ||
| Строка 98: | Строка 100: | ||
[https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/04_knn_images/visualization.ipynb визуализация]  | [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/04_knn_images/visualization.ipynb визуализация]  | ||
|  | |  | ||
| - | |||
| + | [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/tree/master/Tasks/task1 1 практическое задание]  | ||
<!-- Конец занятия -->  | <!-- Конец занятия -->  | ||
|- <!-- Новое занятие -->  | |- <!-- Новое занятие -->  | ||
| Строка 146: | Строка 148: | ||
|Занятие 8  | |Занятие 8  | ||
|  | |  | ||
| + | Линейные модели классификации.  | ||
| + | |||
Обсуждение второго практического задания.  | Обсуждение второго практического задания.  | ||
| Строка 154: | Строка 158: | ||
[https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/08_linear_and_text/main.pdf презентация (тексты)]  | [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/08_linear_and_text/main.pdf презентация (тексты)]  | ||
|  | |  | ||
| + | [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/tree/master/Tasks/task2 2 практическое задание]  | ||
| + | <!-- Конец занятия -->  | ||
| + | |- <!-- Новое занятие -->  | ||
| + | |9 ноября  | ||
| + | |Занятие 9  | ||
| + | |  | ||
| + | Обработка текстов (окончание).  | ||
| + | |||
| + | Выступления студентов.  | ||
| + | |  | ||
| + | |||
| + | |  | ||
| + | |||
| + | <!-- Конец занятия -->  | ||
| + | |- <!-- Новое занятие -->  | ||
| + | |16 ноября  | ||
| + | |Занятие 10  | ||
| + | |  | ||
| + | Выступления студентов.  | ||
| + | |  | ||
| + | |||
| + | |  | ||
| + | |||
| + | <!-- Конец занятия -->  | ||
| + | |- <!-- Новое занятие -->  | ||
| + | |23 ноября  | ||
| + | |Занятие 11  | ||
| + | |  | ||
| + | Декораторы.  | ||
| + | |  | ||
| + | [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/10_decorators/decorators.pdf презентация]  | ||
| + | |  | ||
| + | |||
| + | <!-- Конец занятия -->  | ||
| + | |- <!-- Новое занятие -->  | ||
| + | |23 ноября  | ||
| + | |Занятие 12  | ||
| + | |  | ||
| + | Композиции алгоритмов.  | ||
| + | |||
| + | Обсуждение третьего практического задания.  | ||
| + | |  | ||
| + | |||
| + | |  | ||
| + | [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/tree/master/Tasks/task3 3 практическое задание]  | ||
| + | <!-- Конец занятия -->  | ||
| + | |- <!-- Новое занятие -->  | ||
| + | |30 ноября  | ||
| + | |Занятие 13  | ||
| + | |  | ||
| + | Проверочная работа по теме «декораторы».  | ||
| + | |||
| + | Выступления студентов.  | ||
| + | |  | ||
| + | |||
| + | |  | ||
<!-- Конец занятия -->  | <!-- Конец занятия -->  | ||
|}  | |}  | ||
| Строка 168: | Строка 228: | ||
 |-  |  |-  | ||
 | align="center"|1 || Саенко Иван || Системы контроля версий || Зачем нужны? Кейсы использования. Какие бывают?  ||   |  | align="center"|1 || Саенко Иван || Системы контроля версий || Зачем нужны? Кейсы использования. Какие бывают?  ||   | ||
| + | [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/reports/SaenkoI_VersionControl.pdf презентация]  | ||
 |-  |  |-  | ||
| - |  | align="center"|2 || Кормаков Георгий || Система контроля версий Git|| Преимущества. Основы работы с Git. ||   | + |  | align="center"|2 || Кормаков Георгий || Система контроля версий Git|| Преимущества. Основы работы с Git. || [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/reports/Georgy_Kormakov_GIT.pdf презентация]  | 
 |-  |  |-  | ||
 | align="center"|3 || Попов Дмитрий || Пакеты в Python || Зачем нужны, что это. Назначение __init__.py. Относительные импорты. ||   |  | align="center"|3 || Попов Дмитрий || Пакеты в Python || Зачем нужны, что это. Назначение __init__.py. Относительные импорты. ||   | ||
 |-  |  |-  | ||
| - |  | align="center"|4 || Еремеев Максим || Средства консервации объектов в Python || Зачем нужно. Json, Pickle и др. ||   | + |  | align="center"|4 || Еремеев Максим || Средства консервации объектов в Python || Зачем нужно. Json, Pickle и др. || [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/reports/Max_Eremeev_Serialization.pdf презентация]  | 
| + |  |-  | ||
| + |  | align="center"|5 || [[Участник:KorolevN|Королев Николай]] || Регулярные выражения || Зачем нужно. Синтаксис регулярных выражений. || [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/reports/KorolevN_regex.pdf презентация]  | ||
| + |  |-  | ||
| + |  | align="center"|6 || Лесников Богдан  || Разложение Холецкого.  || Что такое. Примеры использования (много и подробно). || [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/reports/lesnikov_cholesky_decomposition.pdf презентация]  | ||
 |-  |  |-  | ||
| - |  | align="center"|  | + |  | align="center"|7 || Нерус Даниил  || Стандартные матричные разложения: LDL, LU и QR.  || Что такое. Примеры использования. || [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/reports/Nerus_Daniil_Matrix.pdf презентация]  | 
 |-  |  |-  | ||
| - |  | align="center"|  | + |  | align="center"|8 || [[Участник:LebedF|Лебедь Федор]] || Метод LMNN для обучения метрики.  || Рассказать про алгоритм. || [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/reports/fedor_lebed_lmnn.pdf презентация]  | 
 |-  |  |-  | ||
| - |  | align="center"|  | + |  | align="center"|9 || [[Участник:ChernyshevA|Чернышёв Александр]] || Расстояние Левенштейна.  || Определение. Эффективный алгоритм подсчёта. || [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/reports/Chernyshev_Levenshtein_distance.pdf презентация]  | 
 |-  |  |-  | ||
| - |  | align="center"|  | + |  | align="center"|10 || Устюжанин Александр || Алгоритмы хранения разреженных матриц (COO, LIL, CSR и т.д.). || Определения. Примеры использования. Преимущества и недостатки каждого из алгоритмов. || [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/reports/Alex_Ustyuzhanin_Sparse_Matrices.pdf презентация]  | 
 |-  |  |-  | ||
| - |  | align="center"|  | + |  | align="center"|11 || Лукьянов Павел || Многопроцессорность в Python. Библиотека multiprocessing. || Что такое, как использовать.  || [https://github.com/mmp-practicum-team/mmp_practicum_fall_2018/blob/master/reports/Lukynov_multiprocessing.pdf презентация]  | 
 |-  |  |-  | ||
| - |  | align="center"|  | + |  | align="center"|12 || Петренко Дарья || Многопоточность в Python. Библиотека threading. || Что такое, как использовать. Что такое GIL?  ||  | 
 |}  |  |}  | ||
Текущая версия
- Обязательный курс для студентов каф. ММП 3 курса, 5 семестр
 - Зачёт с оценкой
 - Преподаватели: Д.А. Кропотов, Артём Попов, Виктор Януш
 - Занятия проходят в ауд. 524 по пятницам, начало в 16:20. Первое занятие 4 сентября.
 
Анонимные отзывы по курсу можно оставлять здесь: ссылка на гугл-форму
Репозиторий со всеми материалами: ссылка
Содержание | 
Объявления
ВНИМАНИЕ! Занятия переехали в аудиторию 524!
Правила сдачи практикума
1. В рамках семестра предполагается три больших практических задания и пять домашних заданий. Все задания сдаются в систему anytask, инвайт к курсу можно получить у преподавателя.
2. За каждое большое практическое задание можно получить до 50-ти баллов. Задание включает в себя написание программного кода, выполнение экспериментов и написание отчёта о проделанной работе. Срок выполнения каждого задания — 3 недели. Задания, сданные после этого срока, не принимаются на проверку.
3. За каждое домашнее задание можно получить от 15 до 25 баллов (в зависимости от задания). Задание включает в себя написание программного кода. Срок выполнения каждого задания — 1 неделя. Задания, сданные после этого срока, не принимаются на проверку.
4. Предусмотрены различные бонусные активности: бонусные задачи, за которые можно получить дополнительные баллы, возможность сделать выступление по заранее заданной теме.
5. Критерии итоговой оценки:
- отлично — 190 баллов, 3 практических задания зачтены
 
- хорошо — 145 баллов, 2 практических задания зачтены
 
- удовлетворительно — 95 баллов, 1 практическое задание зачтено
 
Практическое задание считается зачтённым, если по нему выполнены и засчитаны все три этапа работы.
Материалы занятий
| Дата | Номер | Тема | Материалы | Д/З | 
|---|---|---|---|---|
| 4 сентября | Занятие 1 | 
 Организационные вопросы. Введение в Python.  | 
 контест 1 (в anytask) Прочитать о PEP8:  | |
| 18 сентября | Занятие 2 | 
 Разбор 1 контеста. Библиотека numpy и векторизация вычислений.  | 
 контест 2 (в anytask) 
  | |
| 28 сентября | Занятие 3 | 
 Организация кода в Python: функции, модули, классы. ООП в Python.  | 
 контест 3 (в anytask) 
  | |
| 5 октября | Занятие 4 | 
 Метрические методы классификации. Обсуждение первого практического задания. Введение в обработку изображений. Визуализация в Python.  | ||
| 12 октября | Занятие 5 | 
 Подготовка текстовых отчётов. Система TeX.  | ||
| 19 октября | Занятие 6 | 
 Обработка исключений. Мененджеры контекста. Тестирование. Подготовка коротких выступлений.  | ||
| 26 октября | Занятие 7 | 
 Итераторы. Генераторы.  | 
 контест 4 (в anytask)  | |
| 2 ноября | Занятие 8 | 
 Линейные модели классификации. Обсуждение второго практического задания. Обработка текстов (начало).  | ||
| 9 ноября | Занятие 9 | 
 Обработка текстов (окончание). Выступления студентов.  | ||
| 16 ноября | Занятие 10 | 
 Выступления студентов.  | ||
| 23 ноября | Занятие 11 | 
 Декораторы.  | ||
| 23 ноября | Занятие 12 | 
 Композиции алгоритмов. Обсуждение третьего практического задания.  | ||
| 30 ноября | Занятие 13 | 
 Проверочная работа по теме «декораторы». Выступления студентов.  | 
Выступления студентов
Выступление должно сопровождаться презентацией, подготовленной в LaTeX с помощью пакета beamer. При согласовании с преподавателем разрешается делать презентацию в Jupyter notebook или просто использовать Jupyter notebook вместо презентации. Приблизительный регламент выступления — 10 минут. После выступления необходимо залить свою презентацию в репозиторий курса. За выступление выставляется до 5 бонусных баллов.
Каждый студент должен выбрать одну тему из списка ниже либо предложить свою тему.
| № п/п | ФИО студента | Тема | Замечания | Материалы | 
|---|---|---|---|---|
| 1 | Саенко Иван | Системы контроля версий | Зачем нужны? Кейсы использования. Какие бывают? | |
| 2 | Кормаков Георгий | Система контроля версий Git | Преимущества. Основы работы с Git. | презентация | 
| 3 | Попов Дмитрий | Пакеты в Python | Зачем нужны, что это. Назначение __init__.py. Относительные импорты. | |
| 4 | Еремеев Максим | Средства консервации объектов в Python | Зачем нужно. Json, Pickle и др. | презентация | 
| 5 | Королев Николай | Регулярные выражения | Зачем нужно. Синтаксис регулярных выражений. | презентация | 
| 6 | Лесников Богдан | Разложение Холецкого. | Что такое. Примеры использования (много и подробно). | презентация | 
| 7 | Нерус Даниил | Стандартные матричные разложения: LDL, LU и QR. | Что такое. Примеры использования. | презентация | 
| 8 | Лебедь Федор | Метод LMNN для обучения метрики. | Рассказать про алгоритм. | презентация | 
| 9 | Чернышёв Александр | Расстояние Левенштейна. | Определение. Эффективный алгоритм подсчёта. | презентация | 
| 10 | Устюжанин Александр | Алгоритмы хранения разреженных матриц (COO, LIL, CSR и т.д.). | Определения. Примеры использования. Преимущества и недостатки каждого из алгоритмов. | презентация | 
| 11 | Лукьянов Павел | Многопроцессорность в Python. Библиотека multiprocessing. | Что такое, как использовать. | презентация | 
| 12 | Петренко Дарья | Многопоточность в Python. Библиотека threading. | Что такое, как использовать. Что такое GIL? | 
Требования к отчёту по практическим заданиям
Отчёт должен быть самодостаточным документом в формате PDF, подготовленным в системе LATEX. Студенты, хорошо выполнившие отчёты по прошлым заданиям, получают возможность сдавать отчёты в формате HTML или PDF, подготовленные с помощью jupyter notebook.
Отчёт должен давать проверяющему ответы на следующие вопросы:
- К какому курсу относится задание?
 - Какое задание выполнено?
 - Кем выполнено задание?
 - В чём заключалось задание?
 - Что было сделано? Что не было сделано?
 - Даны ли правильные ответы на все теоретические вопросы задания?
 - Проведены ли все необходимые эксперименты? Получены ли осмысленные ВЫВОДЫ?
 - Выполнена ли творческая часть задания?
 - Пользовался ли студент чьей-либо помощью? Если да, то в каком объёме?
 - Какой литературой пользовался студент?
 
Некоторые элементы хорошего отчёта:
- Объём отчёта: 5--20 страниц;
 - Текст отчёта не повторяет полной формулировки задания;
 - Структура отчёта соответствует пунктам задания;
 - Используются векторные шрифты;
 - Графики оформлены надлежащим образом;
 - Шкала для графиков выбрана правильно;
 - На разных графиках результаты для одинаковых методов отображаются одним и тем же цветом;
 - Между расположением графиков и местами их упоминания в тексте относительно небольшое расстояние (на той же или на соседней странице);
 - На страницах не должно быть много пустого места;
 - В большинстве случаев графики/таблицы/псевдокоды алгоритмов не должны занимать большей части одной страницы отчёта;
 - Все числа в тексте/таблицах указаны с необходимым числом значащих цифр;
 - В большинстве случае в отчёте не должно быть никакого кода;
 - Для всех экспериментов описан выбранный дизайн экспериментов, а также сделаны выводы из полученных результатов;
 
Требования к программному коду
- Код должен в целом соответствовать PEP8 (eng или rus )
 - В частности, код должен проходить автоматическую проверку стиля ссылка. Скрипт запускается из командной строки так: python3 mmp_pep8.py <ваш скрипт>. Код, вызывающий предупреждения, может дополнительно штрафоваться.
 - Код должен быть понятным и единообразным. Переменные, функции и другие элементы кода должны иметь осмысленные, значимые имена, отвечающие их назначению.
 - Код, который не соответствует прототипам, выданным в задании, автоматически оценивается в 0 баллов
 - Код, который не удовлетворяет требованиям задания (например, запрету на использование конкретных библиотек), автоматически оценивается в 0 баллов
 - Код, содержащий плагиат, автоматически оценивается в 0 баллов
 

