Этот репозиторий содержит материалы к курсу "Практикум на ЭВМ", читаемому бакалаврам 3 курса кафедры ММП факультета ВМК МГУ в осеннем семестре 2022 года.
-
Обязательный курс для студентов кафедры ММП 3 курса, 5 семестр
-
Отчётность: зачёт с оценкой
-
В ходе курса студенты выполняют различные практические задания
-
Курс читается в поддержку курса "Математические методы распознавания образов" (машинное обучение, часть 1), читаемого на кафедре ММП
-
Видеозаписи практикума 2022/2023 года можно посмотреть в этом плейлисте
-
Видеозаписи практикума 2021/2022 года можно посмотреть в этом плейлисте
-
Видеозаписи практикума 2020/2021 года можно посмотреть в этом плейлисте
-
Материалы 2021/2022 года можно посмотреть в этом репозитории
-
Материалы 2020/2021 года можно посмотреть в этом репозитории
-
Большие практические задания выкладываются здесь
-
Все задания сдаются в системе anytask
Дата | Номер | Тема | Материалы | ДЗ |
---|---|---|---|---|
08 сентября | 01 |
|
Введение в Python | Контест 1: Введение в язык Python |
15 сентября | 02 |
|
Функции, модули, классы. Итераторы и генераторы | Контест 2: Классы, генераторы |
22 сентября | 03 |
|
Введение в numpy | Контест 3: Векторизация вычислений с помощью библиотеки Numpy |
29 сентября | 04 |
|
Обработка изображений, KNN | Задание 1: Метрические алгоритмы классификации |
06 октября | 05 |
|
\(٥⁀▽⁀ )/ | |
13 октября | 06 |
|
Основы ООП | \(٥⁀▽⁀ )/ |
20 октября | 07 |
|
Проектирование кода | Контест 4: Декораторы, итераторы, классы |
27 октября | 08 |
|
Задание 2: Градиентные методы обучения линейных моделей | |
03 ноября | 09 |
|
Базовые инструменты разработчика | \(٥⁀▽⁀ )/ |
10 ноября | 10 |
|
Виртуальные окружения и контейнеры | \(٥⁀▽⁀ )/ |
17 ноября | 11 |
|
Введение в основы веб-разработки | \(٥⁀▽⁀ )/ |
24 ноября | 12 |
|
Пример Flask приложения | Задание 3: Ансамбли алгоритмов. Веб-сервер. Композиции алгоритмов для решения задачи регрессии |
01 декабря | 13 |
|
Серверная веб-разработка | \(٥⁀▽⁀ )/ |
08 декабря | 14 |
|
Ctypes | \(٥⁀▽⁀ )/ |
15 декабря | 15 |
|
Методы повышения эффективности | \(٥⁀▽⁀ )/ |
- В рамках семестра предполагается три больших практических задания и пять контестов. Все задания сдаются в систему anytask, инвайт к курсу можно получить у преподавателя
- Каждое большое практическое задание оценивается из 50 баллов. В больших заданиях предусмотрены различные бонусные активности: бонусные задачи и эксперименты за которые можно получить дополнительные баллы. Задание включает в себя написание программного кода, выполнение экспериментов и написание отчёта о проделанной работе. Последнее практическое задание так же будет включать в себя реализацию работающей ML-системы. По каждому большому заданию предусмотрен мягкий дедлайн спустя две недели после выдачи задания. После мягкого дедлайна за каждый день просрочки начисляется штраф 3 балла. Через три недели после выдачи задания наступает жёсткий дедлайн и решения сданные позднее на проверку не принимаются. Практическое задание считается зачтённым, если по нему выполнены и засчитаны все три этапа работы
- За каждый контест можно получить от 8 до 26 баллов (в зависимости от числа заданий в контесте). Задание включает в себя написание программного кода. Срок выполнения каждого контеста — 1 неделя. Решения, сданные после этого срока, не принимаются на проверку
- Предварительные критерии итоговой оценки:
- отлично ≥ 185 баллов, 3 практических задания зачтены
- хорошо ≥ 139 баллов, 2 практических задания зачтены
- удовлетворительно ≥ 93 баллов, 1 практическое задание зачтено
- Код должен в целом соответствовать PEP8 (eng или rus )
- В частности, код должен проходить автоматическую проверку стиля. Скрипт запускается из командной строки так:
python3 pycodestyle.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. Используйте эту возможность для написания формул в заголовках, легенде и в подписях осей
- Используйте красивую цветовую палитру с хорошо различимыми цветами. Примеры цветовых палитр можно посмотреть здесь
- Графики должны быть не супер-микро и не супер-макро по размерам, так, чтобы можно было увидеть все, что нужно