Основы и методология программирования на ПМИ 2020/2021 (пилотный поток)

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск

Основы и методология программирования, пилотный поток, 2020/2021, I модуль

Лектор: А. И. Зобнин

Лекции: вторник и суббота, 9:30. Лекции проходят онлайн.

Краткое содержание лекций

05.09. Типы данных и переменные. Операторы. Контейнеры string/vector. Функции.
08.09. Структуры. Ссылки. Указатели. Константность. Передача параметров.
12.09. Контейнеры стандартной библиотеки.
15.09. Шаблонные функции. Алгоритмы стандартной библиотеки.
19.09. КР 1
22.09. Жизненный цикл объектов. Стек и динамическая память. Move-семантика.
26.09. Классы. Шаблоны классов. Обработка исключений.
29.09. Наследование и полиморфизм. Фабрики объектов.
03.10. КР 2
06.10. Идиома RAII. Умные указатели.
10.10. Работа с байтами и памятью.
13.10. Реализация стандартных контейнеров.
17.10. КР 3


Регулярные домашние контесты

1. Контест №1
2. Контест №2
3. Контест №3
4. Контест №4
5. Контест №5
6. Контест №6


Контрольные работы

Мы напишем 3 контрольных контеста.
19.09. Контрольная работа №1
03.10. Контрольная работа №2
17.10. Контрольная работа №3

Экзамен

В конце курса пройдёт теоретический экзамен в виде теста.


Формула оценок

0.15 * (КР1 + КР2 + КР3) + 0.25 * ДЗ + 0.3 * ЭКЗ


Используемое ПО

На лекциях мы будем работать в Linux, использовать текстовый редактор Vim и компиляторы g++ и clang. На практические занятия можно приносить свой ноутбук и использовать любую среду разработки.


Требования к оформлению кода программ

Мы используем 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++ от Бьярна Страуструпа и Герба Саттера

- некоторые видеолекции по C++ прошлого учебного года