Модуль 1
161,00ч

Базовый модуль

Базовый модуль курса прививает навыки, необходимые любому программисту для решения повседневных задач разработки ПО: умение оценивать асимптотику времени работы алгоритмов и качественно реализовывать их в коде. Это достигается за счёт сочетания теории и большого количества практики. Теория преподносится понятным языком так, чтобы студенты в первую очередь поняли суть, а уже впоследствии смогли разобраться в деталях, решая практические задачи. По итогам прохождения базового модуля студенты узнают устройство, самостоятельно реализуют и смогут применять на практике алгоритмы линейного и двоичного поиска, метод двух указателей, связные списки, стек и очередь, двоичные деревья поиска, алгоритмы "быстрой сортировки", сортировки слияниями и производные от них алгоритмы разделения и нахождения порядковой статистики.
Часов в программе
13,00 часов
лекции
115,00 часов
практика
28,00 часов
самостоятельная
5,00 часов
промежуточная аттестация
161,00 час
всего
Материально-технические условия реализации программы:
Вид занятий: Теоретический компонент
Требуемое ПО:
Браузер:
• Firefox 64
• Chrome 61
• Safari 11
• Opera 57
Рекомендуется от 128 кбит/сек исходящего потока.
Рекомендуется от 256 кбит/сек входящего потока.
Вид занятий: Дополнительные теоретические материалы
Требуемое ПО:
Браузер:
• Firefox 64
• Chrome 61
• Safari 11
• Opera 57
Рекомендуется от 128 кбит/сек исходящего потока.
Рекомендуется от 256 кбит/сек входящего потока.
Информационные ресуры
http://e-maxx.ru/
http://neerc.ifmo.ru/wiki/index.php
https://habr.com/ru/flows/develop/
Образовательные ресуры
leetcode.com
codeforces.ru
www.hackerrank.com

Учебно-методические материалы

Методы, формы и технологии

1. Проблемно-развивающие методы
2. Исследовательский метод
3. Объяснительно-иллюстративный метод
4. Метод проблемного изложения
5. Частично-поисковый метод
6. Метод контроля и самоконтроля
7. Самостоятельная работа по освоению теоретического материала
8. Самоконтроль через ответы на вопросы по видеолекциям и выполнение практических заданий для самоконтроля
9. Промежуточный контроль (тесты по темам для промежуточной аттестации)
10. Итоговый контроль (итоговое тестирование по курсу)
11. Консультативная поддержка преподавателя и менторов в режиме онлайн

Методические разработки

Основное средство оттачивания навыков — задачи по программированию с автоматической проверкой.

Автоматическая проверка выполняется с помощью отдельной программы в виде Python 3 модуля.

В коде модуля определены три функции: generate, solve и check:

- generate — функция, генерирующая набор данных для одной попытки решить задание;
- solve — функция, вычисляющая правильный ответ для набора данных;
- check — функция, выполняющая проверку ответа учащегося.

generate(): функция, которая используется для генерации входных тестов — списка из нескольких наборов входных данных. Решения учащихся проверяются на каждом тесте из списка.

Функция solve выступает в роли авторского решения задания и используется для:
- проверки корректности и согласованности задания
- создания вспомогательного объекта clue для передачи в функцию check, если он не был создан в generate.

check(reply, clue): функция, которая выполняет проверку вывода программы учащегося, отработанной на одном входном тесте, и выставляет за него оценку. Опционально вместе с оценкой можно вернуть отзыв (подсказку) на решение, который будет показан учащемуся. Отзыв можно вернуть как на правильное, так и на неправильное решение.

Процесс проверки решения учащегося заключается в тестировании программы последовательно на каждом тесте из списка. Решение считается правильным, если оно успешно прошло все тесты. Проверка решения прекращается на первом неудачном тесте. В таком случае учащийся получит сообщение об ошибке с порядковым номером теста, на котором его программа выдала неправильный ответ или завершилась аварийно. Вместе с номером теста учащийся получит отзыв (подсказку), если его вернула функция check.

Материалы курса

1. Записанные видеолекции, доступные учащимся 24/7
2. Тесты для закрепления определений и терминов модуля
3. Практические задания
4. Подборки материалов для самостоятельного изучения

Учебная литература

Электронные информационные и образовательные ресурсы

Темы

Введение Асимптотические оценки алгоритмов Разбор задач на асимптотические оценки алгоритмов Алгоритмы поиска Разбор задач про алгоритмы поиска Метод двух указателей Разбор задач на метод двух указателей Элементарные структуры данных Разбор задач на элементарные структуры данных Сортировки Разбор задач на тему "Сортировки" Двоичные деревья поиска Разбор задач на двоичные деревья поиска
Лекции
1,00ч
Всего
1,00ч
Лекции
1,00ч
Практические занятия
2,00ч
Самостоятельная работа
1,00ч
Всего
4,00ч
Самостоятельная работа
1,00ч
Всего
1,00ч
Лекции
2,00ч
Практические занятия
10,00ч
Самостоятельная работа
1,00ч
Всего
13,00ч
Самостоятельная работа
1,00ч
Всего
1,00ч
Лекции
1,00ч
Практические занятия
25,00ч
Самостоятельная работа
1,00ч
Всего
27,00ч
Самостоятельная работа
1,00ч
Всего
1,00ч
Лекции
4,00ч
Практические занятия
42,00ч
Самостоятельная работа
1,00ч
Всего
47,00ч
Самостоятельная работа
4,00ч
Всего
4,00ч
Лекции
3,00ч
Практические занятия
28,00ч
Самостоятельная работа
3,00ч
Всего
34,00ч
Самостоятельная работа
8,00ч
Всего
8,00ч
Лекции
1,00ч
Практические занятия
8,00ч
Самостоятельная работа
3,00ч
Всего
12,00ч
Самостоятельная работа
3,00ч
Всего
3,00ч
Промежуточная аттестация 5,00 часов
Задача на программирование