Программирование на языке C++. (односеместровый) 2026: различия между версиями

Материал из Public ATP Wiki
Перейти к навигации Перейти к поиску
Строка 156: Строка 156:


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


1. Основы и синтаксис (с нуля)
=== Основы и синтаксис (с нуля) ===
* Бьерн Страуструп — «Программирование. Принципы и практика использования C++»
Один из лучших вводных курсов от создателя языка. Много примеров, объясняет не только «как», но и «почему».
** Стенли Липпман, Жози Лажойе, Барбара Му — «Язык программирования C++. Базовый курс» (5 е издание)
Системное введение в язык и STL, с акцентом на правильные привычки и современные возможности C++.
*** Герберт Шилдт — «C++: базовый курс» (3 е издание)
Более «школьный» формат: много задач, пошаговое объяснение синтаксиса.


2. Для тех, кто уже знаете синтаксис
# '''Бьерн Страуструп''' — ''«Программирование. Принципы и практика использования C++»''
* Скотт Мейерс — «Эффективное использование C++» и «Наиболее эффективное использование C++»
#: Один из лучших вводных курсов от создателя языка. Много примеров, объясняет не только «как», но и «почему».
Классика: 55+ советов по стилю, управлению ресурсами, RAII, const, правильному использованию STL
#
** Герб Саттер — «Новые сложные задачи на C++» и «Решение сложных задач на C++» (Dawid Sutter / Herb Sutter)
# '''Стенли Липпман, Жози Лажойе, Барбара Му''' — ''«Язык программирования C++. Базовый курс»'' (5-е издание)
Примеры нетривиальных ситуаций, показывают, как думать о коде, а не только о синтаксисе
#: Системное введение в язык и STL, с акцентом на правильные привычки и современные возможности C++.
*** Николай Джосаттис — «C++ Стандартная библиотека»
#
Подробный справочник по STL: векторы, контейнеры, алгоритмы, итераторы, с примерами и замечаниями по эффективности.practicum.yandex+1
# '''Герберт Шилдт''' — ''«C++: базовый курс»'' (3-е издание)
#: Более «школьный» формат: много задач, пошаговое объяснение синтаксиса.


3. Современные C++ 17/20 и продвинутые темы
=== Для тех, кто уже знает синтаксис ===
* Бьерн Страуструп — «A Tour of C++» (2 е и 3 е издания)
 
Обзор современного C++ для опытных программистов: кратко, но полно о C++11/14/17/20, идеях дизайна и типичных паттернах.  
# '''Скотт Мейерс''' — ''«Эффективное использование C++»'' и ''«Наиболее эффективное использование C++»''
** Андрей Александреску, Герб Саттер — «C++ Coding Standards: 101 Rules, Guidelines, and Best Practices»
#: Классика: более 55 советов по стилю, управлению ресурсами, RAII, const и правильному использованию STL.
Стандарты кода, именование, безопасность, производительность, использование шаблонов и STL по правилам.  
#
*** Николай Джосаттис — «C++ 20. The Complete Guide»
# '''Герб Саттер''' — ''«Новые сложные задачи на C++»'' и ''«Решение сложных задач на C++»''
Обзор новых возможностей C++20: modules, coroutines, ranges, константы, улучшения шаблонов.
#: Примеры нетривиальных ситуаций, показывают, как думать о коде, а не только о синтаксисе.
#
# '''Николай Джосаттис''' — ''«C++. Стандартная библиотека»''
#: Подробный справочник по STL: контейнеры, алгоритмы, итераторы, с примерами и замечаниями по эффективности.
 
=== Современный C++17/20 и продвинутые темы ===
 
# '''Бьерн Страуструп''' — ''«A Tour of C++»'' (2-е и 3-е издания)
#: Обзор современного C++ для опытных программистов: кратко, но полно о возможностях C++11/14/17/20, идеях дизайна и типичных паттернах.
#
# '''Андрей Александреску, Герб Саттер''' — ''«C++ Coding Standards: 101 Rules, Guidelines, and Best Practices»''
#: Стандарты кода, именование, безопасность, производительность, использование шаблонов и STL.
#
# '''Николай Джосаттис''' — ''«C++20. The Complete Guide»''
#: Обзор новых возможностей C++20: modules, coroutines, ranges, константные вычисления и улучшения шаблонов.

Версия от 11:21, 16 июля 2026

Программирование на C++

О курсе

Односеместровый курс (основной поток).

Параметр Значение
Формат 15 лекций + 15 семинаров (1 пара лекция + 1 пара семинар в неделю)
Стандарт языка C++17 (отдельные элементы C++20)
Среда разработки MSVC / g++ / clang++ — на выбор студента
Система сборки CMake или встроенная сборка IDE (без отдельной лекции)
Домашние работы 5 блоковых заданий (1–2 недели каждое) + итоговый проект
Использование LLM Разрешено при обязательной устной защите решения

Курс посвящён изучению современного C++ от базовых конструкций языка до продвинутых возможностей, применяемых в промышленной разработке. В ходе обучения слушатели освоят синтаксис языка, работу с памятью, указателями, функциями, контейнерами STL и обработкой ошибок, а также научатся писать безопасный и эффективный код.

Особое внимание уделяется объектно-ориентированному программированию, принципам проектирования (SOLID), шаблонам, исключениям, RAII, умным указателям, move-семантике и современным возможностям C++17/20. Отдельный блок посвящён стандартной библиотеке STL, алгоритмам, контейнерам и современному стилю разработки.

По завершении курса участники смогут разрабатывать надёжные приложения на C++, грамотно управлять ресурсами, проектировать архитектуру программ, использовать современные возможности языка и эффективно применять стандартную библиотеку для решения практических задач.

Пререквизиты

Для успешного освоения курса слушателю достаточно иметь базовые навыки программирования: понимать, что такое переменные, типы данных, условные операторы, циклы и функции. Желателен опыт написания простых программ на любом языке программирования (например, Python, Java, C#, Pascal или JavaScript), а также уверенное владение компьютером и средой разработки. Специальных знаний по C++ не требуется, так как курс начинается с основ языка.

Команда курса

  • Руководитель и лектор курса: Виденин Сергей Александрович
  • Семинаристы:
    • Виденин Сергей Александрович
    • Обжерин Евсей Романович
    • Халтурин Евгений Александрович
  • Ассистенты:
    • Пелевин Леонид Андреевич
    • Черноморцев Ярослав Сергеевич
    • Якупов Динар Элинарович
    • Шелегеда Наталья Андреевна
    • Хомченко Илья Романович

Программа курса

Неделя Темы лекций Темы семинаров Домашние задания
1 Введение в C++ и первая программа Знакомство со средой и первые программы ДЗ 1. Основы C++: текстовый обработчик данных. Срок сдачи: после 4-го семинара.
2 Объявления, выражения, управление потоком, ошибки Разбор ошибок и управляющих конструкций
3 Указатели, память, массивы Работа с указателями и динамической памятью
4 Функции, ссылки, const Функции и эффективная передача данных Сдача ДЗ 1
5 Классы и инкапсуляция Проектирование простых классов ДЗ 2. ООП: полиморфная предметная область.
6 Конструкторы, деструкторы, правило трёх Класс с управлением ресурсом (Rule of Three)
7 Наследование, интерфейсы и полиморфизм Полиморфная иерархия классов
8 SOLID, композиция, агрегация, паттерны Рефакторинг и проектирование Сдача ДЗ 2
9 Шаблоны Шаблоны на практике ДЗ 3. Шаблоны и исключения: generic-контейнер.
10 Исключения и RAII Безопасный код с исключениями Сдача ДЗ 3
11 Умные указатели Умные указатели вместо new/delete ДЗ 4. Современный C++: ресурсный менеджер.
12 Move-семантика и приведения типов Move и cast на практике
13 Вывод типов, лямбды, std::function Современный стиль C++ Сдача ДЗ 4
14 STL: контейнеры, итераторы, алгоритмы STL на практике ДЗ 5. STL: прикладная задача на контейнерах и алгоритмах.
Итоговый проект (параллельно с ДЗ 5).
15 Итоги: современный C++ и перспективы Итоговое занятие Сдача ДЗ 5. Защита итогового проекта.

Более подробную программу курса можно посмотреть здесь:

Подробная программа курса

Коммуникация

Ссылка на чат курса в мессенджере (ближе к старту семестра).

Прогресс студентов

Ссылка на таблицу студентов с оценками (ближе к старту семестра).

Критерии оценивания и формы контроля успеваемости

Информация будет дополнена к 1.09.2026.

Материалы курса

Рекомендуемая литература

Основы и синтаксис (с нуля)

  1. Бьерн Страуструп — «Программирование. Принципы и практика использования C++»
    Один из лучших вводных курсов от создателя языка. Много примеров, объясняет не только «как», но и «почему».
  2. Стенли Липпман, Жози Лажойе, Барбара Му — «Язык программирования C++. Базовый курс» (5-е издание)
    Системное введение в язык и STL, с акцентом на правильные привычки и современные возможности C++.
  3. Герберт Шилдт — «C++: базовый курс» (3-е издание)
    Более «школьный» формат: много задач, пошаговое объяснение синтаксиса.

Для тех, кто уже знает синтаксис

  1. Скотт Мейерс — «Эффективное использование C++» и «Наиболее эффективное использование C++»
    Классика: более 55 советов по стилю, управлению ресурсами, RAII, const и правильному использованию STL.
  2. Герб Саттер — «Новые сложные задачи на C++» и «Решение сложных задач на C++»
    Примеры нетривиальных ситуаций, показывают, как думать о коде, а не только о синтаксисе.
  3. Николай Джосаттис — «C++. Стандартная библиотека»
    Подробный справочник по STL: контейнеры, алгоритмы, итераторы, с примерами и замечаниями по эффективности.

Современный C++17/20 и продвинутые темы

  1. Бьерн Страуструп — «A Tour of C++» (2-е и 3-е издания)
    Обзор современного C++ для опытных программистов: кратко, но полно о возможностях C++11/14/17/20, идеях дизайна и типичных паттернах.
  2. Андрей Александреску, Герб Саттер — «C++ Coding Standards: 101 Rules, Guidelines, and Best Practices»
    Стандарты кода, именование, безопасность, производительность, использование шаблонов и STL.
  3. Николай Джосаттис — «C++20. The Complete Guide»
    Обзор новых возможностей C++20: modules, coroutines, ranges, константные вычисления и улучшения шаблонов.