Курс "Подготовительная программа по программированию на С/С++"
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана
Лектор - Валентина Глазкова
Цель курса - подготовка студентов к поступлению и обучению в Технопарке; получение слушателями базовых навыков в области применения языков С и С++. Cтуденты овладеют такими навыками, как: работа с памятью на языке С, реализация средств инкапсуляции, полиморфизма и наследования в программах на языке С++, обработка исключительных ситуаций, базовые навыки обобщённого программирования.
Click to view
Click to view
Click to view
Click to view
Click to view
Click to view
Click to view
Click to view
Click to view
Курс "Углубленное программирование на C/C++"
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана.
Лектор Алексей Петров.
Click to view
Цели, задачи, структура курса. Язык C в современной промышленной разработке. Организация оперативной памяти. Одно- и многомерные массивы, строки и указатели. Выравнивание и упаковка переменных простых и составных типов. Выделение и освобождение памяти, управление памятью и производительность кода. Стандарт POSIX и переносимый исходный код.
Click to view
Лекция №2. Одно- и многомерные массивы, строки и указатели. Выравнивание и упаковка переменных простых и составных типов. Выделение и освобождение памяти, управление памятью и производительность кода. Стандарт POSIX и переносимый исходный код.
Click to view
Лекция №3. Инкапсуляция - один из трёх базовых принципов объектно-ориентированного проектирования. В первую очередь описывается, что представляет собой инкапсуляция. Даётся определение класса, разбирается его состав, перечисляются существующие виды классов. Подробно рассматриваются объекты класса, в том числе константные, атрибуты и методы класса, битовые поля и вложенные классы. Далее описываются разные виды методов класса (статические и нестатические, встроенные, константные, неустойчивые), а также указатели на них. Затем рассматриваются так называемые дружественные классы и функции. Ближе к концу лекции рассказывается про классы-объединения, анонимные и безымянные объединения, битовые поля в определении классов. Финальная часть лекции посвящена конструкторам и деструкторам.
Click to view
Лекция №4. В начале лекции обсуждаются инициализация без конструктора, конструкторы по умолчанию, конструкторы с параметрами, закрытые и защищённые конструкторы. Далее рассказывается о механизмах почленной инициализации и присваивания, о конструкторах копирования, операциях преобразования, а также о деструкторах, в том числе виртуальных. Обсуждается идиома RAII (Resource acquisition is initialization), явный вызов деструкторов и список инициализации в конструкторе. Рассказывается о переносе в языке С++11, в том числе о семантике и конструкторе переноса. Далее обсуждаются такие базовые принципы ООП, как наследование (раннее и позднее связывание, базовые и производные классы) и полиморфизм (защищённые и закрытые члены класса, перегрузка и перекрытие членов класса). Затем говорится о вызове конструкторов и деструкторов производных классов, списке инициализации при наследовании, виртуальных функциях и абстрактных классах. Рассказывается о виртуальном и множественном наследовании. В завершение лекции обсуждаются такие вопросы, как динамическая идентификация типов времени выполнения (RTTI) и операции приведения типов, производительность и безопасность полиморфизма и средств поддержки RTTI.
Click to view
Лекция №5
В начале лекции даётся определение шаблонов классов и рассматриваются их параметры. Объясняется механизм конкретизации шаблонов классов. Рассказывается о методах шаблонов, о дружественных объектах в шаблонах, о статических членах, о специализации шаблонов, в том числе о полной и частичной. В качестве примера метапрограммирования рассматривается рекурсивное определение шаблонов. Объясняется суть новой идиомы, SFINAE (Substitution failure is not an error), в том числе применительно к интроспекции времени компиляции. Солидная часть лекции посвящена всевозможным характеристикам типов. Рассказывается о технологии обработки исключительных ситуаций. Следующий блок информации посвящён безопасному программированию: безопасности классов, методов, конструкторов и деструкторов, критериям безопасности и нейтральности кода. В конце лекции обсуждаются различные исключения в стандартной библиотеке.
Click to view
Лекция №6
Сначала рассказывается об истории создания стандартной библиотеки шаблонов (STL): о предпосылках, о предназначении STL и гарантиях производительности. Далее подробно рассказывается обо всех компонентах, входящих в состав STL. Рассматриваются отношения сравнения в алгоритмах, обратные отношения, операции над множествами и хипами. Затем говорится об итераторах STL, об их видах (в том числе об итераторах вставки и потоковых итераторах), о поддерживаемых итераторами диапазонах и операциях. Ближе к концу лекции обсуждаются стандартные функциональные объекты STL и их базовые классы. Даётся информация об адаптерах (контейнерных, функциональных). В конце затрагивается вопрос применения контейнеров в STL.
Click to view
Лекция №7
Лекция начинается с рассказа о лямбда-функциях, основных правилах их оформления, ключевых преимуществах и применении замыканий. Затем обсуждается Boost (набор из нескольких десятков автономных библиотек), его состав и назначение. Основная часть лекции посвящена рассмотрению примеров использования Boost: проверке времени компиляции, характеристикам типов, вариантным контейнерам, «умным» указателям. В заключение рассказывается об использовании средств Boost для повышения производительности и безопасности кода.
Click to view
Лекция №8
Лекция открывается длительным обсуждением целей, проблем и принципов объектно-ориентированного проектирования. Далее рассказывается о шаблонах проектирования: что это такое, какие бывают виды шаблонов, каковы их преимущества. Рассматриваются базовые шаблоны и их реализации: наследование и композиция; делегирование; неизменяемые объекты; интерфейс. После этого разбираются три группы шаблонов GoF. Порождающие шаблоны: абстрактная фабрика; строитель; фабричный метод; прототип; класс с единственным экземпляром. Структурные шаблоны: адаптер; декоратор; мост; компоновщик; фасад; приспособленец; заместитель. Поведенческие шаблоны: интерпретатор; команда; цепочка ответственности; итератор; хранитель; состояние; наблюдатель; стратегия; посредник; посетитель; шаблонный метод. И в заключение рассказывается о принципах S.O.L.I.D.
Click to view
Лекция №9
Завершающая лекция в рамках данного курса. Сначала даётся определение термина «идиома языка программирования». Рассказывается об идиомах процедурного программирования, об объектно-ориентированных идиомах. Обсуждаются методы управления памятью, относящиеся к идиомам повышенного уровня сложности: контекстно-зависимая перегрузка индексирования; «автоматическая» сборка мусора и подсчёт ссылок; управление памятью заменой операций new и delete; идиома «конверт/письмо» и делегированный полиморфизм.
Следующая часть лекции посвящена рефакторингу и статическому анализу исходного кода: даются определения, рассказывается о возможном применении, рассматриваются преимущества, недостатки и сопутствующие риски. Далее разбираются типовые анти-шаблоны, «грязные техники», логико-семантические ошибки. Обсуждаются вопросы оптимизации программ с точки зрения производительности, размера объектного кода и объёма памяти данных. Затем рассматривается понятие «качественного ПО», описываются функциональные и структурные показатели качества кода. Рассказывается о моделях и факторах качества ПО, в том числе о модели МакКола. Далее говорится о сложности кода как об атрибуте качества ПО, о способах управления сложностью и о влиянии на неё модульности. Затем рассматриваются понятие «технического долга», стандарты и стили кода, методологии промышленной разработки (правила организации и способы записи, комментирование и документирование, жизненный цикл разработки ПО, его модели). И в завершение курса даётся обзор SWEBoK (Software engineering body of knowledge).
Курс "Многопоточное программирование на С/С++"
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Лектор - Дмитрий Калугин-Балашов
Курс представляет собой изучение основ многопоточного программирования. Рассматриваются как классическое создание дочерних процессов (через fork) и использование средств межпроцессного взаимодействия (IPC), различные способы создания многопоточного приложения (pthreads, std::thread, boost::thread), а также и более высокоуровневые средства распараллеливания (OpenMP, Intel TBB). В курсе дополнительно представлены способы работы с сетью и контейнеры (STL, boost).
Click to view
Click to view
Click to view
Click to view
Click to view
Click to view
Click to view
Еще курсы:
Видео курс С++ Starter