Этот репозиторий содержит материалы к курсу "Практикум на ЭВМ", читаемому бакалаврам 3 курса кафедры ММП факультета ВМК МГУ в осеннем семестре 2021 года.
-
Обязательный курс для студентов кафедры ММП 3 курса, 5 семестр
-
Отчётность: зачёт с оценкой
-
В ходе курса студенты выполняют различные практические задания
-
Курс читается в поддержку курса "Математические методы распознавания образов" (машинное обучение, часть 1), читаемого на кафедре ММП
-
Видеозаписи практикума 2021/2022 года можно посмотреть в этом плейлисте
-
Материалы прошлого года можно посмотреть в этом репозитории
-
Видеозаписи практикума прошлого года (2020/2021) можно посмотреть в этом плейлисте
-
Большие практические задания выкладываются здесь
-
Все задания сдаются в системе anytask
Дата | Номер | Тема | Материалы | ДЗ |
---|---|---|---|---|
02 сентября | 1 |
|
Введение в Python | Контест 1: Введение в язык Python |
09 сентября | 2 |
|
Векторизация с помощью Numpy | Контест 2: Векторизация вычислений с помощью библиотеки Numpy |
13 сентября | 3 |
|
Функции, модули, классы | Контест 3: Классы |
20 сентября | 4 |
|
Обработка изображений, K-NN | |
27 сентября | 5 |
|
Составление отчётов, Система TeX | \(٥⁀▽⁀ )/ |
4 октября | 5.2 (доп) |
|
Презентация (tex), biblatex + ГОСТ (tex) | 👀 👀 👀 |
4 октября | 6 |
|
Презентация | ⊙_ರೃ |
11 октября | 7 |
|
Ноутбук Презентация (tex) | Контест 4: Итераторы и генераторы |
18 октября | 8 |
|
Презентация | |
25 октября | 9 |
|
Ноутбук | Контест 5: Декораторы |
1 ноября | 10 |
|
Ноутбук | \(٥⁀▽⁀ )/ |
15 ноября | 11 |
|
Полезные команды | \(٥⁀▽⁀ )/ |
22 ноября | 12 |
|
Простейшее Flask приложение | Практическое задание 3: Ансамбли алгоритмов. Веб-сервер. Композиции алгоритмов для решения задачи регрессии |
- В рамках семестра предполагается три больших практических задания и пять контестов. Все задания сдаются в систему anytask, инвайт к курсу можно получить у преподавателя
- Каждое большое практическое задание оценивается из 50 баллов. В больших заданиях предусмотрены различные бонусные активности: бонусные задачи и эксперименты за которые можно получить дополнительные баллы. Задание включает в себя написание программного кода, выполнение экспериментов и написание отчёта о проделанной работе. Последнее практическое задание так же будет включать в себя реализацию работающей ML-системы. По каждому большому заданию предусмотрен мягкий дедлайн спустя две недели после выдачи задания. После мягкого дедлайна за каждый день просрочки начисляется штраф 3 балла. Через три недели после выдачи задания наступает жёсткий дедлайн и решения сданные позднее на проверку не принимаются. Практическое задание считается зачтённым, если по нему выполнены и засчитаны все три этапа работы
- За каждый контест можно получить от 8 до 26 баллов (в зависимости от числа заданий в контесте). Задание включает в себя написание программного кода. Срок выполнения каждого контеста — 1 неделя. Решения, сданные после этого срока, не принимаются на проверку
- Предварительные критерии итоговой оценки:
- отлично ≥ 185 баллов, 3 практических задания зачтены
- хорошо ≥ 139 баллов, 2 практических задания зачтены
- удовлетворительно ≥ 93 баллов, 1 практическое задание зачтено
- Код должен в целом соответствовать PEP8 (eng или rus )
- В частности, код должен проходить автоматическую проверку стиля ссылка. Скрипт запускается из командной строки так: python3 mmp_pep8.py <ваш скрипт>. Код, вызывающий предупреждения, может дополнительно штрафоваться.
- Код должен быть понятным и единообразным. Переменные, функции и другие элементы кода должны иметь осмысленные, значимые имена, отвечающие их назначению.
- Код, который не соответствует прототипам, выданным в задании, автоматически оценивается в 0 баллов
- Код, который не удовлетворяет требованиям задания (например, запрету на использование конкретных библиотек), автоматически оценивается в 0 баллов
- Код, содержащий плагиат, автоматически оценивается в 0 баллов
Невыполнение данных требований к отчёту будет дополнительно штрафоваться.
Отчёт должен быть самодостаточным документом в формате PDF, подготовленным в системе LATEX.
Отчёт должен давать проверяющему ответы на следующие вопросы:
- К какому курсу относится задание?
- Какое задание выполнено?
- Кем выполнено задание?
- В чём заключалось задание?
- Что было сделано? Что не было сделано?
- Даны ли правильные ответы на все теоретические вопросы задания?
- Проведены ли все необходимые эксперименты? Получены ли осмысленные ВЫВОДЫ?
- Выполнена ли творческая часть задания?
- Пользовался ли студент чьей-либо помощью? Если да, то в каком объёме?
- Какой литературой пользовался студент?
Некоторые элементы хорошего отчёта:
- Объём отчёта: 5–20 страниц
- Текст отчёта не повторяет полной формулировки задания
- Структура отчёта соответствует пунктам задания
- Используются векторные шрифты
- Графики оформлены надлежащим образом
- Графики реализованы в векторном формате
- Шкала для графиков выбрана правильно
- На разных графиках результаты для одинаковых методов отображаются одним и тем же цветом
- Между расположением графиков и местами их упоминания в тексте относительно небольшое расстояние (на той же или на соседней странице)
- На страницах не должно быть много пустого места
- В большинстве случаев графики/таблицы/псевдокоды алгоритмов не должны занимать большей части одной страницы отчёта
- Все числа в тексте/таблицах указаны с необходимым числом значащих цифр
- Все формулы реализованы в математическом окружении latex.
- В большинстве случае в отчёте не должно быть никакого кода
- Для всех экспериментов описан выбранный дизайн экспериментов, а также сделаны выводы из полученных результатов
Некоторые элементы хорошего графика:
Графики должны быть с одной стороны понятными и информативными, а с другой стороны красивыми. Вот несколько пунктов, которые помогут удовлетворить этим требования:
- Все графики должны быть отрисованы в векторном формате. Обратите внимание, что смена режима графиков с динамического на статический и обратно может приводить к сбросу параметров отрисовки графиков. Переход в векторный режим можно выполнить с помощью команды
matplotlib_inline.backend_inline.set_matplotlib_formats('pdf', 'svg')
- На всех графиках без исключения должна быть отрисована сетка
- Все графики и группы графиков должны иметь заголовок (
title
) - При необходимости оси должны быть подписаны
- Если на графике отображено несколько сущностей (линии/точки/bar разных цветов, формы и так далее), то необходима исчерпывающая легенда
- Все линии на графиках должны быть чётко видны (нет похожих цветов или цветов, сливающихся с фоном и так далее)
- Масштаб по каждой оси на графике должен быть выбран правильно. Используйте масштабы
log
,symlog
по необходимости - Если отображена величина, имеющая очевидный диапазон значений (например, проценты могут быть от 0 до 100), то желательно масштабировать ось на весь диапазон значений (исключением является случай, когда вам необходимо показать малое отличие, которое незаметно в таких масштабах)
- Частота отметок по каждой оси должна быть тщательно подобрана, по необходимости задавайте
[xy]ticks
,[xy]ticklabels
вручную. Подписи тиков на осях не должны сливаться как на одной оси, так и между ними - Помните, что matplotlib умеет выполнять рендеринг Latex. Используйте эту возможность для написания формул в заголовках, легенде и в подписях осей
- Используйте красивую цветовую палитру с хорошо различимыми цветами. Примеры цветовых палитр можно посмотреть здесь
- Графики должны быть не супер-микро и не супер-макро по размерам, так, чтобы можно было увидеть все, что нужно