Основы и методология программирования на ПМИ 2019 (С++, основной поток)
Содержание
Основы и методология программирования (C++), основной поток поток, 2019, III модуль
Лектор: А. И. Зобнин
Лекции: понедельник - 2-я пара; среда - 3-я пара, ауд. 622
Через каждые две недели во время лекции проводится контрольный контест.
Даты ближайших контрольных: 18 февраля, 4 марта, 18 марта.
Телеграм-канал для объявлений: https://t.me/cs_hse_cpp_2019
Регулярные домашние контесты
1. Контест №1 - дедлайн 15.01.2019 в 23:59:59
2. Контест №2 - дедлайн 22.01.2019 в 23:59:59
3. Контест №3 - дедлайн 29.01.2019 в 23:59:59
4. Контест №4 - дедлайн 05.02.2019 в 23:59:59
5. Контест №5 - дедлайн 13.02.2019 в 23:59:59
6. Контест №6 - дедлайн 19.02.2019 в 23:59:59
7. Контест №7 - дедлайн 01.03.2019 в 23:59:59
8. Контест №8 - дедлайн 08.03.2019 в 23:59:59
9. Контест №9 - дедлайн 16.03.2019 в 23:59:59
10. Контест №10 - дедлайн 22.03.2019 в 23:59:59
Контрольные работы
1. Контрольная работа №1
2. Контрольная работа №2
3. Контрольная работа №3
4. Контрольная работа №4
5. Контрольная работа №5
Темы лекций
1. Потоки cin/cout; типы string, int, double, bool, char; конструкции if, while, for, goto, switch.
2. Контейнер vector.
3. Ссылки. Константность. Функции, передача параметров по значению и по ссылке. Классы pair/tuple.
4. Структуры. Алгоритм sort. Лямбда-функции. Контейнер map.
5. Контрольная работа №1.
6. Ассоциативные контейнеры map/set, unordered_map/unordered_set.
7. Контейнеры deque, list, array. Адаптеры stack, queue, priority_queue.
8. Контрольная работа №2.
9. Алгоритмы стандартной библиотеки.
10. Классы. Конструкторы, функции-члены, перегрузка операторов, константность.
11. Пример: шаблонный класс "Матрица".
12. Контрольная работа №3.
13. Итератор по матрице. Создание объектов в динамической памяти с помощью new/delete. Указатели.
14. Сравнение указателей и ссылок. Указатели и массивы.
15. Указатели и динамическая память.
16. Контрольная работа №4.
17. Исключения. Идиома RAII.
18. Умные указатели unique_ptr и shared_ptr.
19. Наследование и виртуальные функции.
20. Контрольная работа №5.
Используемое ПО
Мы будем работать в Linux, использовать текстовый редактор Vim и компилятор g++.
На занятия можно приносить свой ноутбук.
Формулы оценок
Накопленная оценка за III модуль = 0,4 * регулярные домашние контесты + 0,6 * контрольные контесты
Итоговая оценка за III модуль = 0,4 * экзамен + 0,6 * накопленная оценка
Требования к оформлению кода программ
Мы используем cpplint для проверки стиля. Вот список требований.
Флаги для cpplint: --filter=-,+build/include,-build/include_order,+build/include_what_you_use,+build/storage_class,+readability/alt_tokens,+readability/braces, +readability/casting,+readability/inheritance,+runtime/casting,-runtime/explicit,+whitespace/blank_line,+whitespace/braces,+whitespace/comma, +whitespace/comments,+whitespace/empty_conditional_body,+whitespace/empty_loop_body,+whitespace/end_of_line, +whitespace/ending_newline,+whitespace/forcolon,+whitespace/indent,+whitespace/line_length,+whitespace/newline, +whitespace/operators,+whitespace/parens,+whitespace/semicolon,+whitespace/tab --linelength=100
Курсы на Курсере от разработчиков Яндекса
Основы разработки на C++: белый пояс
Основы разработки на C++: желтый пояс
Основы разработки на C++: красный пояс
Основы разработки на C++: коричневый пояс
Полезные ссылки
Bandit - игра для освоения консольных команд Linux
Practical Vim - хороший учебник по Vim
YouCompleteMe - полезный плагин для Vim для автодополнения кода
cppreference.com - полезный сайт-справочник по C++
C++ Core Guidelines - рекомендации по C++ от Бьярна Страуструпа и Герба Саттера
Конспекты лекций 2016-го года