luckyea77 (luckyea77) wrote,
luckyea77
luckyea77

Программирование на С/С++

Курс "Подготовительная программа по программированию на С/С++"

Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана
Лектор - Валентина Глазкова

Цель курса — подготовка студентов к поступлению и обучению в Технопарке; получение слушателями базовых навыков в области применения языков С и С++. Cтуденты овладеют такими навыками, как: работа с памятью на языке С, реализация средств инкапсуляции, полиморфизма и наследования в программах на языке С++, обработка исключительных ситуаций, базовые навыки обобщённого программирования.



















Курс "Углубленное программирование на C/C++"

Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана.
Лектор Алексей Петров.



Цели, задачи, структура курса. Язык C в современной промышленной разработке. Организация оперативной памяти. Одно- и многомерные массивы, строки и указатели. Выравнивание и упаковка переменных простых и составных типов. Выделение и освобождение памяти, управление памятью и производительность кода. Стандарт POSIX и переносимый исходный код.



Лекция №2. Одно- и многомерные массивы, строки и указатели. Выравнивание и упаковка переменных простых и составных типов. Выделение и освобождение памяти, управление памятью и производительность кода. Стандарт POSIX и переносимый исходный код.



Лекция №3. Инкапсуляция — один из трёх базовых принципов объектно-ориентированного проектирования. В первую очередь описывается, что представляет собой инкапсуляция. Даётся определение класса, разбирается его состав, перечисляются существующие виды классов. Подробно рассматриваются объекты класса, в том числе константные, атрибуты и методы класса, битовые поля и вложенные классы. Далее описываются разные виды методов класса (статические и нестатические, встроенные, константные, неустойчивые), а также указатели на них. Затем рассматриваются так называемые дружественные классы и функции. Ближе к концу лекции рассказывается про классы-объединения, анонимные и безымянные объединения, битовые поля в определении классов. Финальная часть лекции посвящена конструкторам и деструкторам.



Лекция №4. В начале лекции обсуждаются инициализация без конструктора, конструкторы по умолчанию, конструкторы с параметрами, закрытые и защищённые конструкторы. Далее рассказывается о механизмах почленной инициализации и присваивания, о конструкторах копирования, операциях преобразования, а также о деструкторах, в том числе виртуальных. Обсуждается идиома RAII (Resource acquisition is initialization), явный вызов деструкторов и список инициализации в конструкторе. Рассказывается о переносе в языке С++11, в том числе о семантике и конструкторе переноса. Далее обсуждаются такие базовые принципы ООП, как наследование (раннее и позднее связывание, базовые и производные классы) и полиморфизм (защищённые и закрытые члены класса, перегрузка и перекрытие членов класса). Затем говорится о вызове конструкторов и деструкторов производных классов, списке инициализации при наследовании, виртуальных функциях и абстрактных классах. Рассказывается о виртуальном и множественном наследовании. В завершение лекции обсуждаются такие вопросы, как динамическая идентификация типов времени выполнения (RTTI) и операции приведения типов, производительность и безопасность полиморфизма и средств поддержки RTTI.



Лекция №5

В начале лекции даётся определение шаблонов классов и рассматриваются их параметры. Объясняется механизм конкретизации шаблонов классов. Рассказывается о методах шаблонов, о дружественных объектах в шаблонах, о статических членах, о специализации шаблонов, в том числе о полной и частичной. В качестве примера метапрограммирования рассматривается рекурсивное определение шаблонов. Объясняется суть новой идиомы, SFINAE (Substitution failure is not an error), в том числе применительно к интроспекции времени компиляции. Солидная часть лекции посвящена всевозможным характеристикам типов. Рассказывается о технологии обработки исключительных ситуаций. Следующий блок информации посвящён безопасному программированию: безопасности классов, методов, конструкторов и деструкторов, критериям безопасности и нейтральности кода. В конце лекции обсуждаются различные исключения в стандартной библиотеке.



Лекция №6

Сначала рассказывается об истории создания стандартной библиотеки шаблонов (STL): о предпосылках, о предназначении STL и гарантиях производительности. Далее подробно рассказывается обо всех компонентах, входящих в состав STL. Рассматриваются отношения сравнения в алгоритмах, обратные отношения, операции над множествами и хипами. Затем говорится об итераторах STL, об их видах (в том числе об итераторах вставки и потоковых итераторах), о поддерживаемых итераторами диапазонах и операциях. Ближе к концу лекции обсуждаются стандартные функциональные объекты STL и их базовые классы. Даётся информация об адаптерах (контейнерных, функциональных). В конце затрагивается вопрос применения контейнеров в STL.



Лекция №7

Лекция начинается с рассказа о лямбда-функциях, основных правилах их оформления, ключевых преимуществах и применении замыканий. Затем обсуждается Boost (набор из нескольких десятков автономных библиотек), его состав и назначение. Основная часть лекции посвящена рассмотрению примеров использования Boost: проверке времени компиляции, характеристикам типов, вариантным контейнерам, «умным» указателям. В заключение рассказывается об использовании средств Boost для повышения производительности и безопасности кода.



Лекция №8

Лекция открывается длительным обсуждением целей, проблем и принципов объектно-ориентированного проектирования. Далее рассказывается о шаблонах проектирования: что это такое, какие бывают виды шаблонов, каковы их преимущества. Рассматриваются базовые шаблоны и их реализации: наследование и композиция; делегирование; неизменяемые объекты; интерфейс. После этого разбираются три группы шаблонов GoF. Порождающие шаблоны: абстрактная фабрика; строитель; фабричный метод; прототип; класс с единственным экземпляром. Структурные шаблоны: адаптер; декоратор; мост; компоновщик; фасад; приспособленец; заместитель. Поведенческие шаблоны: интерпретатор; команда; цепочка ответственности; итератор; хранитель; состояние; наблюдатель; стратегия; посредник; посетитель; шаблонный метод. И в заключение рассказывается о принципах S.O.L.I.D.



Лекция №9
Завершающая лекция в рамках данного курса. Сначала даётся определение термина «идиома языка программирования». Рассказывается об идиомах процедурного программирования, об объектно-ориентированных идиомах. Обсуждаются методы управления памятью, относящиеся к идиомам повышенного уровня сложности: контекстно-зависимая перегрузка индексирования; «автоматическая» сборка мусора и подсчёт ссылок; управление памятью заменой операций new и delete; идиома «конверт/письмо» и делегированный полиморфизм.

Следующая часть лекции посвящена рефакторингу и статическому анализу исходного кода: даются определения, рассказывается о возможном применении, рассматриваются преимущества, недостатки и сопутствующие риски. Далее разбираются типовые анти-шаблоны, «грязные техники», логико-семантические ошибки. Обсуждаются вопросы оптимизации программ с точки зрения производительности, размера объектного кода и объёма памяти данных. Затем рассматривается понятие «качественного ПО», описываются функциональные и структурные показатели качества кода. Рассказывается о моделях и факторах качества ПО, в том числе о модели МакКола. Далее говорится о сложности кода как об атрибуте качества ПО, о способах управления сложностью и о влиянии на неё модульности. Затем рассматриваются понятие «технического долга», стандарты и стили кода, методологии промышленной разработки (правила организации и способы записи, комментирование и документирование, жизненный цикл разработки ПО, его модели). И в завершение курса даётся обзор SWEBoK (Software engineering body of knowledge).

Курс "Многопоточное программирование на С/С++"

Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Лектор - Дмитрий Калугин-Балашов

Курс представляет собой изучение основ многопоточного программирования. Рассматриваются как классическое создание дочерних процессов (через fork) и использование средств межпроцессного взаимодействия (IPC), различные способы создания многопоточного приложения (pthreads, std::thread, boost::thread), а также и более высокоуровневые средства распараллеливания (OpenMP, Intel TBB). В курсе дополнительно представлены способы работы с сетью и контейнеры (STL, boost).















Еще курсы:
Видео курс С++ Starter


Tags: программирование
Subscribe

Posts from This Journal “программирование” Tag

  • Удаленная работа для программиста: результаты исследования от Stack Overflow

    Опрос Stack Overflow Developer Survey 2018 уже прошёл, и пока в компании разбираются с данными за этот год, давайте посмотрим на результаты,…

  • Видеокурс по HTML5 и CSS3

    Для того чтобы создавать страницы с использованием новой семантической разметкой современному Frontend разработчику необходимо освоить технологию…

  • Видеокурс по JavaScript

    Видеокурс по JavaScript Essential Если Вы хотите стать веб-разработчиком, Вам не обойтись без элементов динамики, интерактивности в ваших…

  • Видеокурс по HTML&CSS

    Видеокурс по HTML&CSS Если Вы хотите стать веб-разработчиком, освоить процесс создания веб-сайтов, лучше всего начать с изучения основ…

  • Комплексная подготовка программистов 1С:Предприятие 8.2

    Урок 1. • Знакомство, регламентные вопросы. • архитектура системы (логическая и физическая) • понятия "Информационная база" и "Конфигурация" •…

  • Обучение C# (c sharp)

    Обучение C# (c sharp) для начинающих Данный видеокурс представлен для новичков в языке программирования C#. Если Вы решили, что готовы начать…

  • Курс "Язык Python"

    Еще курсы Python: Python Starter Python Essential Вебинары Python Курс: Python | Лектор: Екатерина Тузова |…

  • Программирование на Perl

    Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова. Лекторы - Николай Шуляковский, Владимир Перепелица, Вадим Пуштаев Цель курса — научиться…

  • Программирование на Go

    Лекция читается в рамках образовательного проекта "Техносфера Mail.ru Group" при МГУ им.Ломоносова. КРАТКОЕ СОДЕРЖАНИЕ: Основные особенности…

promo luckyea77 june 21, 2015 20:04 26
Buy for 10 tokens
В этой записи я буду давать ссылки на посты с лекциями и уроками в этом блоге: Учебные материалы и тесты: Дистанционное образование Правила дорожного движения 11 ресурсов для бесплатного образования Сайты для обучения программированию Игры, в которых нужно писать код: Grid Garden, Elevator…
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments