Разработка на C++

получение студентами знаний и практических умений в области промышленной разработке на языке С++, обучить основам языка Objective-C в контексте разработки под платформу iOS.
15 занятий, 60 ак.часов
Хочу учиться
Что дает курс

В рамках курса студенты научаться программировать на языке С++ и уметь решать прикладные задачи среднего уровня сложности; Писать кроссплатформенный код и собирать библиотеки под разные платформы; Проектировать архитектуру, составлять диаграмму классов UML; Программировать на языке Objective-C обертки для классов и функций из библиотеки на С++

Как проходят занятия

Как поступить?

Регистрация
Заполни заявку и регистрируйся на курс до 25-го февраля включительно
Тестирование
Ссылка на тест придет на почту до 18:00 26-го февраля. Пройди тест до 18:00 28-го февраля
Зачисление
Письмо о зачислении придет на почту каждому студенту 3-го марта включительно
Начало обучения
Обучение начнется на неделе с 4-го марта по расписанию

Вопросы по обучению

Отборочный тест

 

Требования к поступающим

Поступить могут студенты и аспиранты всех курсов и факультетов МФТИ.

Оборудование для обучения

Компьютер, возможность подключиться к беспроводной сети для выхода в сеть Internet.

Нагрузка в неделю

4 ак. часа в неделю без учета времени на выполнение домашнего задания.

Место проведения

Онлайн.

Стоимость обучения

Обучение бесплатно.

Моего вопроса тут нет :(

Другие вопросы можно посмотреть здесь.

Программа

Лекция № 1. Вступление о курсе. Препроцессорная обработка кода. Управление памятью в С++. Переносимость кода

знакомство со структурой курса и целями
введение в углубленное С++ (отталкиваемся от определенных знаний С++, история, где применяется)
основы препроцессорной обработки (#include ”” vs. #include<>, IWYU, #if, #ifdef/#ifnded/#else/#elif/#endif, #error, #prgma(pop, push, diagnostic), примеры)
Управление объектами данных (время жизни объектов, область видимости переменных, связывание (static, extern), namespaces)
C++ 11: constexpr, универсальная инициализация
повторение основ С++, подготовка общего уровня студентов (именование переменных в классе, конструктор по умолчанию, объекты классов, создание объектов на стеке/в куче, явный вызов
коструктора/деструктора, передача по ссылке, Copy elision(RVO, NRVO)) классы-объединения (union)
перегрузка операторов в С++ (overload as a member/as non-member, ++, inc ++, >>, <<, операторы преобразования)

Семинар № 1. Решение задач в малых командах

Решение задач в малых командах

Лекция № 2. Практические идиомы инкапсуляции, наследования, полиморфизма

инкапсуляция (интерфейс, константные объекты, как происходит вызов метода, методы соспецификаторами: inline/const/static/volitile, обращение к нестатическим членам данных, указатель this, статические члены класса, typedef внутри класса, изменчивые члены классов (mutable), указатели на методы и атрибуты класса, вызов метода по указателю, безымянные-анонимные объединения внутри класса, вложенные классы, дружественные классы, конструкторы/деструкторы, конструктор копирования, операция присваивания, правило 3х, закрытые кострукторы, explicit конструктор, идиома RAII)

наследование (public/protected/private наследование, множественное наследование, виртуальное наследование(конструирование объектов), ссылки на базовый класс и конструктор копирования, абстрактные классы/чистые виртуальные функции, порядок вызова конструкторов производных классов, пример получения исключения о вызове чисто виртуальной функции)

полиморфизм (полиморфизм препроцессинга/перегрузки/шаблонный/ виртуальный диспатчинг, раннее и позднее связывание, перегрузка и перекрытие членов класса) динамическая идентификация типов RTTI, typeinfo

Приведение типов С++ (const_cast, static_cast, dynamic_cast, reinterpret_cast)

Рубежный контроль № 1. Сдача работ

Сдача работ

Лекция № 3. Шаблоны классов и методов. Контейнеры STL и Boost

постановка проблемы: зачем все это нужно
шаблоны классов (параметры шаблонов классов, конкретизация шаблонов классов, методы
шаблонных классов, определяются в заголовочных файлах(hpp), дружественные классы шаблонных классов, статические члены шаблонных классов, частичная специализация типов, рекурсивное определение шаблонов)
шаблоны методов (отличие от шаблонов классов)
SFINAE (пример проверки наличия метода)
характеристики типов (type_traits: is_void, is_pointer, is_reference...)
type erasure (boost::none)
введение в STL (контейнеры(последовательные, ассоциативные), методы контейнеров, адаптеры контейнеров, алгоритмы, итераторы, функциональные объекты)
std::pair

Семинар № 2. Решение задач на тему алгоритмы и структуры данных в STL

Решение задач на тему алгоритмы и структуры данных в STL

Лекция № 4. Новое в языке С++ 11/14. Многопоточность и синхронизация

новое в STL (неупорядоченные ассоциативные контейнеры, новые алгоритмы, regexp, smart_pointers(enable_shared_from_this))
value categories: lvalue, prvalue, xvalue, glvalue, rvalue
move semantic, привило 4.5ой
lambdas
static_assert, type traits
auto, range-based for loops, override/final, strongly-typed enums, non-member begin/end, alternative function syntax
initializer list, uniform initialization
Улучшения в конструкторах классов
Шаблонные псевдонимы
Улучшения в языке (variadic templates(std::tuple), new string literals)
Полиморфные обертки для функциональных объектов
std::atomic_long

Лекция № 5. Практическое использование библиотек STL и boost

Boost:Range
Boost:Spirit
Boost:Asio
Casablanca
std::thread, std::mutex, std::future

Рубежный контроль № 2. Сдача работ

Сдача работ

Лекция № 6. Введение в Objective-C. Управление памятью в Objective-С

PIMPL
Классы, объекты и методы в Objective-C
Определение класса
Аллокация и инициализация объектов
Protocols
Определение свойств (strong/weak, retain/assign, copy)
Категории и расширения
Objective-C runtime
+load, +iniitlaize, @autoreleasepool, @synchronized
KVO, KVC

Семинар № 3. Практическое занятие на тему основы Objective-C

Практическое занятие на тему основы Objective-C

Лекция № 7. Блоки в Objective-C. Вопросы синхронизации. GCD. Использование С++ с другими языками

Блоки в Objective-C. Вопросы синхронизации. GCD. Использование С++ с другими языками

Семинар № 4. Шаблоны ООП

Ключевые проблемы и принципы объектно-ориентированного проектирования.
Основные конфликты.
Типология шаблонов. Базовые шаблоны: наследование и композиция, интерфейс, делегирование, неизменяемые объекты. Каталог GoF: порождающие, структурные и порождающие шаблоны.

Экзамен № 1. Защита семестрового проекта

Получить работающий шаблон приложения на Objective-С с использованием С++

Пересдача № 1. Пересдача

Пересдача