Специализация Искусство разработки на современном C++ by Moscow Institute of Physics and Technology & Yandex
В специализации преподаватели делятся своим многолетним опытом создания больших проектов на языке C++. Они не пересказывают учебник, а учат решать задачи, с которыми на практике сталкиваются большинство разработчиков. Лекции, подаваемые в лёгкой и доступной форме, подкрепляются большим количество задач по программированию. Закончив эту специализацию, вы сможете не только рассуждать о C++, сравнивая его с другими языками, но и получите реальный навык программирования.
Этот курс посвящён знакомству с языком программирования С++. Вы научитесь использовать его основные конструкции, создавать свои типы данных, разбивать программу на классы и функции. В конце курса вас ждёт финальный проект: вы сможете самостоятельно реализовать простое хранилище данных с возможностью добавления, удаления и поиска.
Этот курс является продолжением курса "Основы разработки на C++: белый пояс". В нём преподаватели продолжают знакомить вас с возможностями языка C++. В курсе рассмотрены:
- целочисленные типы языка C++
- пары и кортежи - шаблоны функций
- наследование и полиморфизм
- итераторы и стандартные алгоритмы
- распределение кода по нескольким файлам.
Кроме того, в курсе рассмотрено использование юнит-тестов для отладки программ и обеспечения надёжности кода, а также продемонстрировано, как, пользуясь знаниями только "Белого" и "Жёлтого" поясов, разработать свой собственный unit test framework. Так же, как и в "Белом поясе", в конце курса вас ждёт финальный проект. В "Белом поясе" надо было самостоятельно реализовать простое хранилище данных с возможностью добавления, удаления и поиска. В "Жёлтом поясе" это хранилище надо будет усовершенствовать, добавив поддержку более сложных запросов.
Этот курс является продолжением курса "Основы разработки на C++: жёлтый пояс". Основная цель курса — научить писать на С++ эффективный код. Кроме того рассмотрены некоторые возможности С++, которые не попали в предыдущие курсы. В курсе рассмотрены:
- макросы
- шаблоны классов
- принципы оптимизации кода
- эффективное использование потоков ввода/вывода
- оценки сложности алгоритмов
- модель памяти в С++
- эффективное использование линейных контейнеров (vector, deque, list, string)
- move-семантика
- введение в многопоточное программирование.
Кроме того, в курсе продемонстрировано, как, пользуясь знаниями только "Белого", "Жёлтого" и "Красного" поясов, разработать свой собственный профайлер. Так же, как и в предыдущих курсах, в конце вас ждёт финальный проект. Было бы странно в курсе от Яндекса не попросить вас создать свою поисковую систему! Именно этим вам и предстоит заняться в финальной задаче.
Основная цель этого курса — научить идиомам языка C++, то есть показать, как с помощью различных возможностей языка создавать элегантные, эффективные и надёжные блоки кода. В совокупности со знаниями, полученными на «Красном поясе», это позволит вам создавать не только быстрые и легко поддерживаемые программы. Кроме того, будут освещены темы, которые не поместились в объём предыдущих курсов: пространства имён и эффективное использование ассоциативных контейнеров.
Во-первых, в «Чёрном поясе» будут изложены темы, без которых ваше представление о C++ будет неполным, — это таблицы виртуальных методов, виртуальные деструкторы, неопределённое поведение, шаблоны с произвольным числом аргументов и forwarding-ссылки. Во-вторых, мы предоставим вам возможность поработать с библиотеками и инструментами, без которых трудно представить современную разработку на С++, — это санитайзеры и protobuf. Наконец, «Чёрный пояс» будет содержать большой проект, который на этот раз будет длиться не одну неделю как обычно, а целых три.
После прохождения нашей специализации слушатели должны:
- уметь самостоятельно решать практические задачи на языке С++;
- применять естественные для С++ идиомы и конструкции (STL, RAII, const-correctness, type-safety);
- уметь самостоятельно находить ответы на свои вопросы и изучать язык глубже;
- уметь писать на С++ эффективный код без ущерба для readibility и maintainability кода.
Финальный проект «Чёрного пояса» призван проверить, достигли ли слушатели этих целей.