Основы и методология программирования на ПМИ 2020/2021 (основной поток) 3 модуль — различия между версиями
Строка 12: | Строка 12: | ||
== Краткая программа курса == | == Краткая программа курса == | ||
− | 1. Типы данных и переменные. Операторы. Контейнеры string/vector. Функции. | + | 1. Типы данных и переменные. Операторы. Контейнеры string/vector. Функции.<br/> |
− | 2. Структуры. Классы std::pair и std::tuple. Ссылки. Указатели. Константность. Передача параметров в функции. | + | 2. Структуры. Классы std::pair и std::tuple. Ссылки. Указатели. Константность. Передача параметров в функции.<br/> |
− | 3. Контейнеры стандартной библиотеки (array, deque, list, map, set, unordered_map, unordered_set). | + | 3. Контейнеры стандартной библиотеки (array, deque, list, map, set, unordered_map, unordered_set).<br/> |
− | 4. Шаблонные функции. Алгоритмы стандартной библиотеки. | + | 4. Шаблонные функции. Алгоритмы стандартной библиотеки.<br/> |
− | 5. Жизненный цикл объектов. Static/dynamic storage duration. Move-семантика. | + | 5. Жизненный цикл объектов. Static/dynamic storage duration. Move-семантика.<br/> |
− | 6. Классы. Шаблоны классов. Обработка исключений. | + | 6. Классы. Шаблоны классов. Обработка исключений.<br/> |
− | 7. Наследование и полиморфизм. Фабрики объектов. Класс std::variant. | + | 7. Наследование и полиморфизм. Фабрики объектов. Класс std::variant.<br/> |
− | 8. Идиома RAII. Умные указатели. | + | 8. Идиома RAII. Умные указатели.<br/> |
− | 9. Работа с байтами и памятью. | + | 9. Работа с байтами и памятью.<br/> |
− | 10. Сборка сложных проектов (заголовочные файлы, единицы трансляции, компоновщик, CMake). | + | 10. Сборка сложных проектов (заголовочные файлы, единицы трансляции, компоновщик, CMake).<br/> |
11. Реализация стандартных контейнеров. | 11. Реализация стандартных контейнеров. | ||
Версия 21:36, 11 января 2021
Содержание
- 1 Основы и методология программирования (C++), основной поток, 2020/2021, III модуль
- 2 Краткая программа курса
- 3 Регулярные домашние контесты
- 4 Контрольные работы
- 5 Экзамен
- 6 Требования к оформлению кода программ
- 7 Формула оценок
- 8 Используемое ПО
- 9 Курсы на Курсере от разработчиков Яндекса
- 10 Полезные ссылки
Основы и методология программирования (C++), основной поток, 2020/2021, III модуль
Лектор: А. И. Зобнин
Лекции: вторник и четверг, 11:10. Лекции проходят онлайн.
Телеграм-канал для объявлений: https://t.me/joinchat/WCcO-u6O5uBli0ON
Телеграм-группа для вопросов и обсуждений: https://t.me/joinchat/GGD7Q_iiHS9LQlfg
Краткая программа курса
1. Типы данных и переменные. Операторы. Контейнеры string/vector. Функции.
2. Структуры. Классы std::pair и std::tuple. Ссылки. Указатели. Константность. Передача параметров в функции.
3. Контейнеры стандартной библиотеки (array, deque, list, map, set, unordered_map, unordered_set).
4. Шаблонные функции. Алгоритмы стандартной библиотеки.
5. Жизненный цикл объектов. Static/dynamic storage duration. Move-семантика.
6. Классы. Шаблоны классов. Обработка исключений.
7. Наследование и полиморфизм. Фабрики объектов. Класс std::variant.
8. Идиома RAII. Умные указатели.
9. Работа с байтами и памятью.
10. Сборка сложных проектов (заголовочные файлы, единицы трансляции, компоновщик, CMake).
11. Реализация стандартных контейнеров.
Регулярные домашние контесты
Мы напишем 8 домашних контестов. Вот правила начисления баллов и проверки контестов.
1. Контест №1
Контрольные работы
Мы напишем 4 контрольных контеста с асинхронным прокторингом.
Даты будут объявлены позже. Контрольные контесты будут проходить вместо лекции с 11:10 до 12:30.
Экзамен
В конце курса пройдёт теоретический экзамен в виде теста.
Требования к оформлению кода программ
Вот наш style guide. Мы используем cpplint для проверки некоторых требований. В контестах мы запускаем вот такой модифицированный скрипт, не требующий указания опций, и принимающий в качестве параметра просто проверяемый файл.
Формула оценок
У нас будет 8 регулярных домашних контестов, 4 контрольных и экзамен.
При этом контрольная будет весить как две домашки, а экзамен - как четыре домашки.
Весь курс будет весить как 20 домашек. То есть, каждая домашка будет весить 0.05, контрольная - 0.1, а экзамен - 0.2.
Если сложить вместе все домашки и контрольные и считать, что оценка за элементы контроля выставляется по десятибалльной шкале, то будет такая формула оценки за III модуль: Round(0.4 * домашки + 0.4 * контрольные + 0.2 * экзамен).
Так как курс "продолжается" с I модуля, то итоговая оценка за весь курс будет равна Round(1/3 * первый модуль + 2/3 * третий модуль).
Все округления - математические.
Используемое ПО
На лекциях мы будем работать в Linux, использовать текстовый редактор Vim и компиляторы g++ и clang. В контесте мы используем компилятор g++-8. Вы можете использовать любую среду разработки и любой компилятор.
Курсы на Курсере от разработчиков Яндекса
Основы разработки на C++: белый пояс
Основы разработки на C++: жёлтый пояс
Основы разработки на C++: красный пояс
Основы разработки на C++: коричневый пояс
Основы разработки на C++: чёрный пояс
Видеолекции курса можно посмотреть бесплатно.
Полезные ссылки
cppreference.com - полезный сайт-справочник по C++
С++ tutorial - классический tutorial по C++ (немного устарел)
C++ Core Guidelines - рекомендации по C++ от Бьярна Страуструпа и Герба Саттера