Основы разработки на С++: коричневый пояс
- 4.9
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
IntermediateCourse 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.