/mmp_practicum_fall_2022

Лекции и материалы по курсу "Практикум на ЭВМ 2022/2023" осеннего семестра для студентов 3 курса кафедры ММП, ВМК МГУ

Primary LanguageJupyter Notebook

Курс "Практикум на ЭВМ 2022/2023" для бакалавров 3 курса кафедры ММП ВМК МГУ, осенний семестр

Этот репозиторий содержит материалы к курсу "Практикум на ЭВМ", читаемому бакалаврам 3 курса кафедры ММП факультета ВМК МГУ в осеннем семестре 2022 года.

О курсе

  • Обязательный курс для студентов кафедры ММП 3 курса, 5 семестр

  • Отчётность: зачёт с оценкой

  • В ходе курса студенты выполняют различные практические задания

  • Курс читается в поддержку курса "Математические методы распознавания образов" (машинное обучение, часть 1), читаемого на кафедре ММП

Материалы

Занятия

Дата Номер Тема Материалы ДЗ
08 сентября 01
  • Введение в Python
Введение в Python Контест 1: Введение в язык Python
15 сентября 02
  • Организация кода в Python: функции, модули, классы
  • Итераторы и генераторы
Функции, модули, классы. Итераторы и генераторы Контест 2: Классы, генераторы
22 сентября 03
  • Библиотека numpy и матрично-векторные вычисления
Введение в numpy Контест 3: Векторизация вычислений с помощью библиотеки Numpy
29 сентября 04
  • Введение в обработку изображений
  • KNN
Обработка изображений, KNN Задание 1: Метрические алгоритмы классификации
06 октября 05
  • Подготовка отчётов
  • Система TeX
\(٥⁀▽⁀ )/
13 октября 06
  • Основы ООП
Основы ООП \(٥⁀▽⁀ )/
20 октября 07
  • Основы ООП
Проектирование кода Контест 4: Декораторы, итераторы, классы
27 октября 08
  • Введение в обработку текстов
Задание 2: Градиентные методы обучения линейных моделей
03 ноября 09
  • Базовые инструменты разработчика. VM, SSH, GIT
Базовые инструменты разработчика \(٥⁀▽⁀ )/
10 ноября 10
  • Виртуальные окружения и контейнеры
Виртуальные окружения и контейнеры \(٥⁀▽⁀ )/
17 ноября 11
  • Основы веб-разработки (введение)
Введение в основы веб-разработки \(٥⁀▽⁀ )/
24 ноября 12
  • Flask
Пример Flask приложения Задание 3: Ансамбли алгоритмов. Веб-сервер. Композиции алгоритмов для решения задачи регрессии
01 декабря 13
  • Серверная разработка на Python (продолжение)
Серверная веб-разработка \(٥⁀▽⁀ )/
08 декабря 14
  • Ctypes
Ctypes \(٥⁀▽⁀ )/
15 декабря 15
  • Методы повышения эффективности
Методы повышения эффективности \(٥⁀▽⁀ )/

Формат сдачи курса

  1. В рамках семестра предполагается три больших практических задания и пять контестов. Все задания сдаются в систему anytask, инвайт к курсу можно получить у преподавателя
  2. Каждое большое практическое задание оценивается из 50 баллов. В больших заданиях предусмотрены различные бонусные активности: бонусные задачи и эксперименты за которые можно получить дополнительные баллы. Задание включает в себя написание программного кода, выполнение экспериментов и написание отчёта о проделанной работе. Последнее практическое задание так же будет включать в себя реализацию работающей ML-системы. По каждому большому заданию предусмотрен мягкий дедлайн спустя две недели после выдачи задания. После мягкого дедлайна за каждый день просрочки начисляется штраф 3 балла. Через три недели после выдачи задания наступает жёсткий дедлайн и решения сданные позднее на проверку не принимаются. Практическое задание считается зачтённым, если по нему выполнены и засчитаны все три этапа работы
  3. За каждый контест можно получить от 8 до 26 баллов (в зависимости от числа заданий в контесте). Задание включает в себя написание программного кода. Срок выполнения каждого контеста — 1 неделя. Решения, сданные после этого срока, не принимаются на проверку
  4. Предварительные критерии итоговой оценки:
    • отлично ≥ 185 баллов, 3 практических задания зачтены
    • хорошо ≥ 139 баллов, 2 практических задания зачтены
    • удовлетворительно ≥ 93 баллов, 1 практическое задание зачтено

Требования к формату сдачи заданий

Требования к программному коду

  • Код должен в целом соответствовать PEP8 (eng или rus )
  • В частности, код должен проходить автоматическую проверку стиля. Скрипт запускается из командной строки так: python3 pycodestyle.py <ваш скрипт>. Код, вызывающий предупреждения, может дополнительно штрафоваться.
  • Код должен быть понятным и единообразным. Переменные, функции и другие элементы кода должны иметь осмысленные, значимые имена, отвечающие их назначению.
  • Код, который не соответствует прототипам, выданным в задании, автоматически оценивается в 0 баллов
  • Код, который не удовлетворяет требованиям задания (например, запрету на использование конкретных библиотек), автоматически оценивается в 0 баллов
  • Код, содержащий плагиат, автоматически оценивается в 0 баллов. Также, за наличие плагиата начисляется дополнительный штраф

Требования к отчёту по практическим заданиям

Невыполнение данных требований к отчёту будет дополнительно штрафоваться.

Отчёт должен быть самодостаточным документом в формате PDF, подготовленным в системе LATEX.

Отчёт должен давать проверяющему ответы на следующие вопросы:

  • К какому курсу относится задание?
  • Какое задание выполнено?
  • Кем выполнено задание?
  • В чём заключалось задание?
  • Что было сделано? Что не было сделано?
  • Даны ли правильные ответы на все теоретические вопросы задания?
  • Проведены ли все необходимые эксперименты? Получены ли осмысленные ВЫВОДЫ?
  • Выполнена ли творческая часть задания?
  • Пользовался ли студент чьей-либо помощью? Если да, то в каком объёме?
  • Какой литературой пользовался студент?

Некоторые элементы хорошего отчёта:

  • Объём отчёта: 5–20 страниц
  • Текст отчёта не повторяет полной формулировки задания
  • Структура отчёта соответствует пунктам задания
  • Используются векторные шрифты
  • Графики оформлены надлежащим образом
  • Графики реализованы в векторном формате
  • Шкала для графиков выбрана правильно
  • На разных графиках результаты для одинаковых методов отображаются одним и тем же цветом
  • Между расположением графиков и местами их упоминания в тексте относительно небольшое расстояние (на той же или на соседней странице)
  • На страницах не должно быть много пустого места
  • В большинстве случаев графики/таблицы/псевдокоды алгоритмов не должны занимать большей части одной страницы отчёта
  • Все числа в тексте/таблицах указаны с необходимым числом значащих цифр
  • Все формулы реализованы в математическом окружении latex.
  • В большинстве случае в отчёте не должно быть никакого кода
  • Для всех экспериментов описан выбранный дизайн экспериментов, а также сделаны выводы из полученных результатов

Некоторые элементы хорошего графика:

Графики должны быть с одной стороны понятными и информативными, а с другой стороны красивыми. Вот несколько пунктов, которые помогут удовлетворить этим требования:

  1. Все графики должны быть отрисованы в векторном формате. Обратите внимание, что смена режима графиков с динамического на статический и обратно может приводить к сбросу параметров отрисовки графиков. Переход в векторный режим можно выполнить с помощью команды matplotlib_inline.backend_inline.set_matplotlib_formats('pdf', 'svg')
  2. На всех графиках без исключения должна быть отрисована сетка
  3. Все графики и группы графиков должны иметь заголовок (title)
  4. При необходимости оси должны быть подписаны
  5. Если на графике отображено несколько сущностей (линии/точки/bar разных цветов, формы и так далее), то необходима исчерпывающая легенда
  6. Все линии на графиках должны быть чётко видны (нет похожих цветов или цветов, сливающихся с фоном и так далее)
  7. Масштаб по каждой оси на графике должен быть выбран правильно. Используйте масштабы log, symlog по необходимости
  8. Если отображена величина, имеющая очевидный диапазон значений (например, проценты могут быть от 0 до 100), то желательно масштабировать ось на весь диапазон значений (исключением является случай, когда вам необходимо показать малое отличие, которое незаметно в таких масштабах)
  9. Частота отметок по каждой оси должна быть тщательно подобрана, по необходимости задавайте [xy]ticks, [xy]ticklabels вручную. Подписи тиков на осях не должны сливаться как на одной оси, так и между ними
  10. Помните, что matplotlib умеет выполнять рендеринг Latex. Используйте эту возможность для написания формул в заголовках, легенде и в подписях осей
  11. Используйте красивую цветовую палитру с хорошо различимыми цветами. Примеры цветовых палитр можно посмотреть здесь
  12. Графики должны быть не супер-микро и не супер-макро по размерам, так, чтобы можно было увидеть все, что нужно