Основы и методология программирования на ПМИ 2019 (С++, основной поток) — различия между версиями
(→Контрольные работы) |
|||
(не показано 18 промежуточных версии этого же участника) | |||
Строка 7: | Строка 7: | ||
'''Лекции:''' понедельник - 2-я пара; среда - 3-я пара, ауд. 622<br /> | '''Лекции:''' понедельник - 2-я пара; среда - 3-я пара, ауд. 622<br /> | ||
Через каждые две недели во время лекции проводится контрольный контест.<br/> | Через каждые две недели во время лекции проводится контрольный контест.<br/> | ||
− | + | Даты ближайших контрольных: 18 февраля, 4 марта, 18 марта.<br/> | |
Телеграм-канал для объявлений: https://t.me/cs_hse_cpp_2019 | Телеграм-канал для объявлений: https://t.me/cs_hse_cpp_2019 | ||
Строка 16: | Строка 16: | ||
3. [https://official.contest.yandex.ru/contest/11643/problems/ Контест №3] - дедлайн 29.01.2019 в 23:59:59<br/> | 3. [https://official.contest.yandex.ru/contest/11643/problems/ Контест №3] - дедлайн 29.01.2019 в 23:59:59<br/> | ||
4. [https://official.contest.yandex.ru/contest/11845/problems/ Контест №4] - дедлайн 05.02.2019 в 23:59:59<br/> | 4. [https://official.contest.yandex.ru/contest/11845/problems/ Контест №4] - дедлайн 05.02.2019 в 23:59:59<br/> | ||
− | 5. [https://official.contest.yandex.ru/contest/11909/problems/ Контест №5] - дедлайн | + | 5. [https://official.contest.yandex.ru/contest/11909/problems/ Контест №5] - дедлайн 13.02.2019 в 23:59:59<br/> |
+ | 6. [https://official.contest.yandex.ru/contest/11969/problems/ Контест №6] - дедлайн 19.02.2019 в 23:59:59<br/> | ||
+ | 7. [https://official.contest.yandex.ru/contest/12040/problems/ Контест №7] - дедлайн 01.03.2019 в 23:59:59<br/> | ||
+ | 8. [https://official.contest.yandex.ru/contest/12108/problems/ Контест №8] - дедлайн 08.03.2019 в 23:59:59<br/> | ||
+ | 9. [https://official.contest.yandex.ru/contest/12154/problems/ Контест №9] - дедлайн 16.03.2019 в 23:59:59<br/> | ||
+ | 10. [https://official.contest.yandex.ru/contest/12236/problems/ Контест №10] - дедлайн 22.03.2019 в 23:59:59<br/> | ||
− | == | + | == Контрольные работы == |
− | 1. | + | 1. [https://official.contest.yandex.ru/contest/11645/problems/ Контрольная работа №1]<br/> |
− | 2. | + | 2. [https://official.contest.yandex.ru/contest/11903/problems/ Контрольная работа №2]<br/> |
− | 3. | + | 3. [https://official.contest.yandex.ru/contest/11985/problems/ Контрольная работа №3]<br/> |
− | 4. | + | 4. [https://official.contest.yandex.ru/contest/12134/problems/ Контрольная работа №4]<br/> |
− | 5. | + | 5. [https://official.contest.yandex.ru/contest/12310/problems/ Контрольная работа №5]<br/> |
− | + | ||
− | + | ||
+ | == Темы лекций == | ||
+ | 1. Потоки cin/cout; типы string, int, double, bool, char; конструкции if, while, for, goto, switch.<br/> | ||
+ | 2. Контейнер vector.<br/> | ||
+ | 3. Ссылки. Константность. Функции, передача параметров по значению и по ссылке. Классы pair/tuple.<br/> | ||
+ | 4. Структуры. Алгоритм sort. Лямбда-функции. Контейнер map.<br/> | ||
+ | 5. Контрольная работа №1.<br/> | ||
+ | 6. Ассоциативные контейнеры map/set, unordered_map/unordered_set.<br/> | ||
+ | 7. Контейнеры deque, list, array. Адаптеры stack, queue, priority_queue.<br/> | ||
+ | 8. Контрольная работа №2.<br/> | ||
+ | 9. Алгоритмы стандартной библиотеки.<br/> | ||
+ | 10. Классы. Конструкторы, функции-члены, перегрузка операторов, константность.<br/> | ||
+ | 11. Пример: шаблонный класс "Матрица".<br/> | ||
+ | 12. Контрольная работа №3.<br/> | ||
+ | 13. [https://github.com/alzobnin/hse-cs-prog/blob/master/2019-1/matrix.cpp Итератор по матрице]. Создание объектов в динамической памяти с помощью new/delete. Указатели. <br/> | ||
+ | 14. Сравнение указателей и ссылок. Указатели и массивы.<br/> | ||
+ | 15. Указатели и динамическая память.<br/> | ||
+ | 16. Контрольная работа №4.<br/> | ||
+ | 17. Исключения. Идиома RAII.<br/> | ||
+ | 18. Умные указатели unique_ptr и shared_ptr.<br/> | ||
+ | 19. Наследование и виртуальные функции.<br/> | ||
+ | 20. Контрольная работа №5.<br/> | ||
== Используемое ПО == | == Используемое ПО == |
Текущая версия на 12:01, 20 марта 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-го года