Основы и методология программирования 2019/2020 — различия между версиями
(→Краткое содержание лекций) |
(→Контрольные работы) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 33: | Строка 33: | ||
6. [https://official.contest.yandex.ru/contest/16584/problems/ Контест №6]<br/> | 6. [https://official.contest.yandex.ru/contest/16584/problems/ Контест №6]<br/> | ||
7. [https://official.contest.yandex.ru/contest/16585/problems/ Контест №7]<br/> | 7. [https://official.contest.yandex.ru/contest/16585/problems/ Контест №7]<br/> | ||
+ | 8. [https://official.contest.yandex.ru/contest/16586/problems/ Контест №8]<br/> | ||
== Контрольные работы == | == Контрольные работы == | ||
Мы напишем 4 контрольных контеста и одну теоретическую работу.<br/> | Мы напишем 4 контрольных контеста и одну теоретическую работу.<br/> | ||
1. [https://official.contest.yandex.ru/contest/16996/problems/ Контрольная работа №1]<br/> | 1. [https://official.contest.yandex.ru/contest/16996/problems/ Контрольная работа №1]<br/> | ||
− | 2. [https://official.contest.yandex.ru/contest/17293/problems/ Контрольная работа №2] | + | 2. [https://official.contest.yandex.ru/contest/17293/problems/ Контрольная работа №2]<br/> |
− | 3. [https://official.contest.yandex.ru/contest/17421/problems/ Контрольная работа №3] | + | 3. [https://official.contest.yandex.ru/contest/17421/problems/ Контрольная работа №3]<br/> |
− | + | 4. [https://official.contest.yandex.ru/contest/17451/problems/ Контрольная работа №4]<br/> | |
== Используемое ПО == | == Используемое ПО == | ||
Строка 47: | Строка 48: | ||
== Формула оценок == | == Формула оценок == | ||
Результат третьего модуля = 0.4 * контрольные + 0.3 * регулярные_контесты + 0.3 * экзамен | Результат третьего модуля = 0.4 * контрольные + 0.3 * регулярные_контесты + 0.3 * экзамен | ||
+ | |||
+ | Итог: Округление(1/3 * результат первого модуля + 2/3 * результат третьего модуля) | ||
== Требования к оформлению кода программ == | == Требования к оформлению кода программ == |
Текущая версия на 18:06, 2 октября 2020
Содержание
[убрать]Основы и методология программирования - 2, основной поток, 2019/2020, 3 модуль
Лектор: А. И. Зобнин
Лекции: вторник и четверг, 2-я пара, R401
Телеграм-канал для объявлений: https://t.me/joinchat/AAAAAFUyg83J72MbQMOCPA
Краткое содержание лекций
1. Hello, world! Обзор примитивных типов. Условный оператор и циклы. Потоковый консольный ввод-вывод. Классы vector и string. (см. конспект 2016 года)
2. Классы string и vector (продолжение). Размер и ёмкость вектора. (см. конспект 2016 года)
3. Ошибки индексации вектора. Структуры. Сортировка вектора структур. Ссылки. Константность (см. конспект 2016 года)
4. Устройство вектора в памяти. Функции. Передача параметров по ссылке и по значению. Классы pair и tuple.
5. Ассоциативные массивы (map/set и unordered_map/unordered_set), двусвязный список (list) (см. конспект 2016 года и видеозапись экрана)
6. Deque, array, адаптеры stack, queue и priority_queue. Шаблонные функции. Алгоритмы стандартной библиотеки (см. конспект 2016 года и видеозапись экрана)
7. Алгоритмы стандартной библиотеки (продолжение). Инвалидация итераторов. (видеозапись экрана)
8. Алгоритмы стандартной библиотеки (завершение). Классы, жизненный цикл объектов. (см. конспект 2016 года и видеозапись экрана)
9. Классы: конструкторы, деструктор, функции-члены, перегрузка операторов. (см. конспект 2016 года и видеозапись экрана)
10. Шаблонные классы. Приватные и публичные имена. Генерация и обработка исключений. (видеозапись экрана)
11. Указатели и адресная арифметика. Создание объектов и массивов в динамической памяти. (см. конспект 2016 года и видеозапись экрана)
12. Идиома RAII. Умный указатель unique_ptr. (см. конспекты лекций 2016 года и видеозапись экрана)
13. Работа с байтами и памятью. (см. видеозапись экрана)
14. Наследование и полиморфизм.
Регулярные домашние контесты
1. Контест №1
2. Контест №2
3. Контест №3
4. Контест №4
5. Контест №5
6. Контест №6
7. Контест №7
8. Контест №8
Контрольные работы
Мы напишем 4 контрольных контеста и одну теоретическую работу.
1. Контрольная работа №1
2. Контрольная работа №2
3. Контрольная работа №3
4. Контрольная работа №4
Используемое ПО
На лекциях мы будем работать в Linux, использовать текстовый редактор Vim и компилятор g++. На занятия можно приносить свой ноутбук и использовать любую среду разработки.
Формула оценок
Результат третьего модуля = 0.4 * контрольные + 0.3 * регулярные_контесты + 0.3 * экзамен
Итог: Округление(1/3 * результат первого модуля + 2/3 * результат третьего модуля)
Требования к оформлению кода программ
Мы используем 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++: коричневый пояс
Основы разработки на C++: чёрный пояс
Полезные ссылки
cppreference.com - полезный сайт-справочник по C++
С++ tutorial - классический tutorial по C++ (немного устарел)
C++ Core Guidelines - рекомендации по C++ от Бьярна Страуструпа и Герба Саттера
Bandit - игра для освоения консольных команд Linux
Practical Vim - хороший учебник по Vim
YouCompleteMe - полезный плагин для Vim для автодополнения кода
Конспекты лекций 2016 года (немного устарело)