Практикум на ЭВМ (317)/2018 (осень)
Материал из MachineLearning.
- Обязательный курс для студентов каф. ММП 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 баллов