Основы разработки на С++: коричневый пояс

  • 4.9
Approx. 133 hours to complete

Course Summary

Learn the basics of C++ programming language including object-oriented programming concepts, data structures, algorithms, and more in this comprehensive course.

Key Learning Points

  • Gain a strong foundation in C++ programming language
  • Learn about object-oriented programming concepts
  • Explore data structures and algorithms
  • Practice problem-solving skills with programming exercises

Related Topics for further study


Learning Outcomes

  • Ability to write programs in C++
  • Understanding of object-oriented programming concepts
  • Familiarity with data structures and algorithms

Prerequisites or good to have knowledge before taking this course

  • Basic programming knowledge
  • Familiarity with a programming language

Course Difficulty Level

Intermediate

Course Format

  • Online self-paced
  • Video lectures
  • Programming exercises

Similar Courses

  • C++ For C Programmers, Part A
  • Object-Oriented Data Structures in C++

Related Education Paths


Notable People in This Field

  • Software Architect
  • Software Consultant
  • Author and Speaker

Related Books

Description

Основная цель этого курса — научить идиомам языка C++, то есть показать, как с помощью различных возможностей языка создавать элегантные, эффективные и надёжные блоки кода. В совокупности со знаниями, полученными на «Красном поясе», это позволит вам создавать не только быстрые и легко поддерживаемые программы.

Кроме того, будут освещены темы, которые не поместились в объём предыдущих курсов: пространства имён и эффективное использование ассоциативных контейнеров.

Outline

  • Эффективное использование ассоциативных контейнеров
  • Введение в ассоциативные контейнеры
  • Размен отсортированности на производительность
  • Введение в хеш-функции
  • Внутреннее устройство unordered_map
  • Внутреннее устройство map
  • Итераторы в map/set. Почему лучше использовать собственные методы для поиска.
  • Итераторы в unordered_map. Инвалидация итераторов в ассоциативных контейнерах
  • Использование пользовательских типов в ассоциативных контейнерах
  • Зависимость производительности от хеш-функции
  • Рекомендации по выбору хеш-функции
  • extract и merge
  • Итоги. Рекомендации по выбору.
  • Как всё устроено и зачем
  • Библиотеки, разработанные на предыдущих курсах
  • Где задать вопрос: telegram, forum
  • Решение задачи «Контейнер с приоритетами»
  • Функция Head
  • Решение задачи «Хеш-таблица»
  • Решение задачи set::iterator
  • Решение задачи «Интеграция структуры Point в unordered_set»
  • Интеграция структуры Person в unordered_set
  • Решение задачи «Вторичный индекс в базе данных»
  • Конспект
  • 1. Внутреннее устройство ассоциативных контейнеров.
  • 2. Итераторы.
  • 3. Заключительный тест.
  • Пространства имён и указатель this
  • Знакомство с учебным примером
  • Постановка проблемы, пересечение имён двух разных библиотек
  • Знакомство с пространствами имён
  • Особенности синтаксиса пространств имён
  • Using-декларация
  • Директива using namespace
  • Глобальное пространство имён
  • using namespace в заголовочных файлах
  • Пространство имён std
  • Структурирование кода с использованием пространств имён
  • Рекомендации по использованию пространств имён
  • Присваивание объекта самому себе
  • Знакомство с this
  • Ссылка на себя
  • this как неявный параметр методов класса
  • Решение задачи «Загрузка расходов из формата XML»
  • Решение задачи «Загрузка расходов из формата JSON»
  • Решение задачи «Библиотека работы с INI-файлами»
  • Решение задачи «Рефакторинг чужого кода»
  • Решение задачи «Реструктуризация кода»
  • Решение задачи «Двойная диспетчеризация»
  • Решение задачи «Сервер комментариев»
  • Конспект
  • Синтаксис работы с пространствами имён
  • Константность и unique_ptr
  • Введение
  • const защищает от случайного изменения
  • Использование const для поддержания инвариантов в классах и объектах
  • Идиома immediately invoked lambda expression (IILE)
  • Константные объекты в многопоточных программах
  • Логическая константность и mutable
  • Ещё раз о константности в многопоточной среде
  • Рекомендации по использованию const
  • Умные указатели - введение
  • Обнаружение утечки памяти в ObjectPool
  • Откуда берётся утечка памяти?
  • Умный указатель unique_ptr
  • unique_ptr для исправления утечки
  • Разбор задачи "Дерево выражения"
  • Решение задачи «Демографические показатели 2.0»
  • Решение задачи «Шаблон LazyValue»
  • Решение задачи «Константность в шаблоне Synchronized»
  • Решение задачи «Константность в шаблоне ConcurrentMap»
  • Решение задачи «operator[] в классе Polynomial»
  • Решение задачи «Пул объектов»
  • set
  • Виртуальный деструктор
  • Решение задачи «Зоопарк»
  • Решение задачи «Конвейер»
  • Решение задачи «Дерево выражений»
  • Конспект
  • shared_ptr и RAII
  • Умный указатель shared_ptr
  • shared_ptr в дереве выражения
  • Внутреннее устройство умных указателей
  • Владение, часть 1
  • Владение, часть 2
  • Присваивание умных указателей
  • shared_ptr и многопоточность
  • Умный указатель weak_ptr
  • Пользовательский deleter
  • Знакомство с редактором vim и консольным компилятором
  • Жизненный цикл объекта
  • Идея RAII
  • RAII-обёртка над файлом
  • Копирование RAII-обёрток
  • RAII вокруг нас
  • Разбор задачи - 1
  • Разбор задачи - 2
  • Виртуальный деструктор и shared_ptr
  • Циклические ссылки
  • unordered_set
  • Решение задачи «Текстуры»
  • Решение задачи Cache
  • Решение задачи «Шаблон UniquePtr»
  • Решение задачи «RAII Booking»
  • Конспект
  • Циклические ссылки
  • Идиома RAII: тест
  • Функции: принципы понятного кода
  • Зачем нужны функции?
  • Функции или методы классов?
  • Какими должны быть функции? (часть 1)
  • Какими должны быть функции? (часть 2)
  • Философия понятного кода
  • Как передать объект в функцию
  • Как передать в функцию набор объектов
  • Как вернуть объект из функции
  • Как вернуть несколько объектов из функции
  • Возврат данных через исключения
  • Понятность вызовов конструкторов
  • Как рефакторить конструкторы с непонятными сигнатурами
  • Решение задачи «Демографические показатели»
  • Решение задачи «Электронная книга»
  • Решение задачи «Экспрессы»
  • Решение задачи «Трекер задач»
  • Решение задачи «Система бронирования отелей»
  • Решение задачи «Тесты к задаче „Демографические показатели“»
  • Решение задачи «Запрещённые домены»
  • Решение задачи «Тесты к задаче „Запрещённые домены“»
  • std::span
  • Ranges
  • Особые случаи передачи объектов
  • std::optional и возврат его из функции
  • std::variant и возврат его из функции
  • Функции с побочными эффектами
  • Неконстантные методы классов
  • Как вернуть из функции набор объектов
  • Другие способы рефакторинга конструкторов со сложными сигнатурами
  • Как рефакторить функции с большим количеством параметров
  • Работа с датами
  • Решение задачи «Личный бюджет, professional desktop version»
  • Решение задачи «Личный бюджет, professional mobile version»
  • Решение задачи «Личный бюджет, professional mobile legacy version»
  • Конспект
  • Принципы понятного кода
  • Передача параметров и возврат значений из функций
  • Идеи рефакторинга функций
  • Финальная задача
  • Особенности перегрузки по string и bool
  • Решение части E
  • Станьте ментором курса!

Summary of User Reviews

The C++ Brown course on Coursera has received positive reviews from its users. Many users appreciate the course's comprehensive coverage of C++ concepts and practical exercises that help to reinforce learning.

Pros from User Reviews

  • In-depth coverage of C++ concepts with practical examples.
  • Well-structured course content and assignments.
  • Effective teaching methods that make learning easy.
  • Great community support and resources.
  • Certificate of completion adds value to the resume.

Cons from User Reviews

  • The course may be challenging for beginners with no programming experience.
  • Some users found the course to be too demanding in terms of time and effort.
  • The course may not be suitable for advanced programmers looking for more specialized topics.
  • Some users reported technical issues with the platform and course content.
  • The course does not cover advanced C++ topics or real-world applications.
Russian
Available now
Approx. 133 hours to complete
Moscow Institute of Physics and Technology, Yandex, E-Learning Development Fund
Coursera
Share
Saved Course list
Cancel
Get Course Update
Computer Courses