Ко всем курсам Event-менеджмент Excel и Google Таблицы MBA PR-менеджмент Аналитика для руководителей Антикризисный менеджмент Арт-менеджмент Бухгалтерский учет Геймификация Деловые переговоры и коммуникация Документационное обеспечение Закупки и тендеры Кадровое делопроизводство и охрана труда Клиентский сервис Комьюнити-менеджмент Консалтинг Коучинг Курсы для директоров Маркетплейсы и e-commerce Менеджмент в индустрии моды Менеджмент в образовании Музыкальный менеджмент Нетворкинг Операционный менеджмент Открытие бизнеса Подбор и управление персоналом Продакт-менеджмент Разработка онлайн-курсов Рекрутмент Ресторанный менеджмент Создание презентаций Спортивный менеджмент Строительство и недвижимость Тимбилдинг Управление бизнесом Управление командами Управление продажами Управление проектами Управление производством Управление разработкой и IT Финансовый менеджмент

C++ Developer: углубленный уровень разработки на C++ от Otus

Вы научитесь

Курс подойдёт опытным разработчикам, которые хотели бы выйти на новый уровень в программировании. Вы рассмотрите системы сборки и познакомитесь с особенностями современных паттернов в C++. Программа также включает в себя изучение основ machine learning, принципов написания асинхронного и многопоточного кода и организацию объектно-реляционного преобразования для хранения большого объёма данных. В конце обучения вы выполните итоговый проект на выбранную тему, например, реализуете in-memory sql-сервер, хранилище типа key-value или очередь с моделью подписчиков.
Тип курса
Онлайн
Тип обучения
Курс
Локация
Длительность
5 месяцев
Стоимость
127000 ₽
Помощь в трудоустройстве
Да
Выдача сертификата
Да
Вы научитесь
#01
Программировать на С++
#02
Взаимодействовать с сетью
#03
Писать многопоточный и асинхронный код
#04
Применять стандарты C++11 / C++14 / C++17;
#05
Настраивать хранение и обработку больших объемов данных
Программа курса

Онлайн-курс познакомит вас с особенностями разработки программного обеспечения на С++, после чего вы закрепите полученные знания на практике и разработаете итоговый проект.

Современный C++

Познакомитесь с принципами CI/CD, настроите стенд для выполнения ДЗ, а также рассмотрите возможности автоматизации сборки. Изучите online-инструменты С++, поработаете со спецификаторами, замыканиями и кортежами, а также в качестве практики отфильтруете IP-адреса. Узнаете, зачем использовать rvalue и lvalue ссылки, обсудите особенности простых структур данных в Си. Освежите знания о семантике перемещения, пользовательских литералах и двоичных константах, разберёте детали некоторых операторов. Поймёте, как управлять ресурсами, а также получите представление об области видимости и времени жизни shared_ptr и unique_ptr. Оцените важность стратегий аллокации памяти и научитесь самстоятельно писать контейнер и реализовывать Std::allocator. Познакомитесь с метафункциями, рекурсией и механизмом, связанным с шаблонами и перегрузкой функций.  Узнаете, в каких случаях используются constexpr lambda и fold expression, а также изучите атрибуты и параметры автошаблонов  Узнаете, что такое "неопределённое поведение", и какой алгорим работы с ним необходимо применить. Познакомитесь с нововведениями стандарта С++20 и поймёте, как применять их в реальной практике программирования.

Познакомитесь с принципами CI/CD, настроите стенд для выполнения ДЗ, а также рассмотрите возможности автоматизации сборки.

Изучите online-инструменты С++, поработаете со спецификаторами, замыканиями и кортежами, а также в качестве практики отфильтруете IP-адреса.

Узнаете, зачем использовать rvalue и lvalue ссылки, обсудите особенности простых структур данных в Си.

Освежите знания о семантике перемещения, пользовательских литералах и двоичных константах, разберёте детали некоторых операторов.

Поймёте, как управлять ресурсами, а также получите представление об области видимости и времени жизни shared_ptr и unique_ptr.

Оцените важность стратегий аллокации памяти и научитесь самстоятельно писать контейнер и реализовывать Std::allocator.

Познакомитесь с метафункциями, рекурсией и механизмом, связанным с шаблонами и перегрузкой функций. 

Узнаете, в каких случаях используются constexpr lambda и fold expression, а также изучите атрибуты и параметры автошаблонов 

Узнаете, что такое "неопределённое поведение", и какой алгорим работы с ним необходимо применить.

Познакомитесь с нововведениями стандарта С++20 и поймёте, как применять их в реальной практике программирования.

Архитектура

Научитесь читать UML-диаграммы, а также узнаете, для чего нужно использовать такие принципы, как SoC, DRY, YAGNI, KISS, TDA, LoD, SOLID. Познакомитесь с паттернами, решающими общие задачи программирования, а также сможете выявлять ошибки в архитектурных деталях кода. Освоите такие паттерны, как одиночка, пул одиночек, фабричный метод, абстрактная фабрика, ленивая инициализация и другие. Разберёте структурные паттерны: адаптер, мост, компоновщик, декоратор, фасад, приспособленец и заместитель. Сможете использовать паттерны поведения: команда, интерпретатор, итератор, посредник, хранитель и цепочка ответственности. Примените на практике паттерны: наблюдатель, состояние, стратегия, шаблонный метод и посетитель. Обработаете последовательность команд с помощью настройки поведения ассоциативных контейнеров. Сможете использовать алгоритмы поиска, сортировки, модификации и перестановки, узнаете об отличительных особенностях каждого типа. Перечислите принципы размещения элементов в двоичном дереве, выполните балансировку и удаление компонентов. Разберётесь в философии проекта, познакомитесь с документацией по нему, а также научитесь выбирать и применять библиотеки. Реализуете паттерны проектирования фабрика, слот-сигнал и легковес, а также детально проработаете принципы использования библиотек Boost::fusion. Научитесь создавать хэш-функции для разных объектов и добавлять данные в хэш-таблицы методом цепочек.

Научитесь читать UML-диаграммы, а также узнаете, для чего нужно использовать такие принципы, как SoC, DRY, YAGNI, KISS, TDA, LoD, SOLID.

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

Освоите такие паттерны, как одиночка, пул одиночек, фабричный метод, абстрактная фабрика, ленивая инициализация и другие.

Разберёте структурные паттерны: адаптер, мост, компоновщик, декоратор, фасад, приспособленец и заместитель.

Сможете использовать паттерны поведения: команда, интерпретатор, итератор, посредник, хранитель и цепочка ответственности.

Примените на практике паттерны: наблюдатель, состояние, стратегия, шаблонный метод и посетитель.

Обработаете последовательность команд с помощью настройки поведения ассоциативных контейнеров.

Сможете использовать алгоритмы поиска, сортировки, модификации и перестановки, узнаете об отличительных особенностях каждого типа.

Перечислите принципы размещения элементов в двоичном дереве, выполните балансировку и удаление компонентов.

Разберётесь в философии проекта, познакомитесь с документацией по нему, а также научитесь выбирать и применять библиотеки.

Реализуете паттерны проектирования фабрика, слот-сигнал и легковес, а также детально проработаете принципы использования библиотек Boost::fusion.

Научитесь создавать хэш-функции для разных объектов и добавлять данные в хэш-таблицы методом цепочек.

Параллельные вычисления

Научитесь применять в приложениях потоки, выполняемые параллельно, а также сможете решать проблемы с помощью стандартных библиотек. Рассмотрите многопоточные паттерны, которые вы сможете использовать для решения прикладных задач. Изучите отличия асинхронности от многопоточности и параллельности, начнёте решать задачи по обработке команд с помощью освоенных паттернов. Познакомитесь с подходом lock-free, поймёте, что такое атомарность и неблокирующие структуры данных. Реализуете в коде атомарные операции при помощи (std::atomic), а также узнаете о принципах упорядочения памяти.

Научитесь применять в приложениях потоки, выполняемые параллельно, а также сможете решать проблемы с помощью стандартных библиотек.

Рассмотрите многопоточные паттерны, которые вы сможете использовать для решения прикладных задач.

Изучите отличия асинхронности от многопоточности и параллельности, начнёте решать задачи по обработке команд с помощью освоенных паттернов.

Познакомитесь с подходом lock-free, поймёте, что такое атомарность и неблокирующие структуры данных.

Реализуете в коде атомарные операции при помощи (std::atomic), а также узнаете о принципах упорядочения памяти.

Сеть

Освежите знания о TCP/IP, сокетах, сериализации и OSI/ISO, а также узнаете, для чего использовать сеть в приложениях на С++. Подберёте подходящие библиотеки и инструменты для работы с сетью, рассмотрите практики работы с неблокирующей передачей данных.

Освежите знания о TCP/IP, сокетах, сериализации и OSI/ISO, а также узнаете, для чего использовать сеть в приложениях на С++.

Подберёте подходящие библиотеки и инструменты для работы с сетью, рассмотрите практики работы с неблокирующей передачей данных.

Хранилища

Научитесь использовать хранилища данных, освежите знание языка SQL и реляционной алгебры, а также разберёте пример кода SQLite. Познакомитесь с понятием NoSQL, научитесь решать проблемы доступности и масштабируемости для документоориентированных и графовых БД. Рассмотрите принципы идеологии map reduce, используемой для параллельных вычислений над огромными наборами данных. Научитесь применять объектно-реляционное преобразование в своих проектах, освоите паттерны DAO и Repository.

Научитесь использовать хранилища данных, освежите знание языка SQL и реляционной алгебры, а также разберёте пример кода SQLite.

Познакомитесь с понятием NoSQL, научитесь решать проблемы доступности и масштабируемости для документоориентированных и графовых БД.

Рассмотрите принципы идеологии map reduce, используемой для параллельных вычислений над огромными наборами данных.

Научитесь применять объектно-реляционное преобразование в своих проектах, освоите паттерны DAO и Repository.

ML

Научитесь решать задачи машинного обучения, познакомитесь с документацией Dlib и процессом кластеризации. Сможете проводить тематическое моделирование и прогнозировать данные на базе решений линейной регрессии.

Научитесь решать задачи машинного обучения, познакомитесь с документацией Dlib и процессом кластеризации.

Сможете проводить тематическое моделирование и прогнозировать данные на базе решений линейной регрессии.

Проектная работа

Подберёте тему итогового проекта, опишете требования к реализации, архитектурные решения и начнёте программировать. Получите возможность задать вопросы и проконсультироваться по темам, вызывающим затруднения. Презентуете готовый проект комиссии и продемонстрируете возможности разработанного решения. Узнаете о том, как построено дальнейшее взаимодействие с преподавателями, а также обсудите карьерные перспективы для выпускников курса.

Подберёте тему итогового проекта, опишете требования к реализации, архитектурные решения и начнёте программировать.

Получите возможность задать вопросы и проконсультироваться по темам, вызывающим затруднения.

Презентуете готовый проект комиссии и продемонстрируете возможности разработанного решения.

Узнаете о том, как построено дальнейшее взаимодействие с преподавателями, а также обсудите карьерные перспективы для выпускников курса.

Отзывы о данном курсе
На этот курс ещё нет отзывов.
Otus
Школа
Otus – это платформа для онлайн-образования, предоставляющая авторские курсы для специалистов в сфере IT. Курсы не предназначены для новичков – они ориентированы на специалистов с опытом, поэтому перед зачислением на курс вам нужно будет пройти тест.