Мова викладання в курсі – російська. Незабаром буде доступна українська версія цього курсу.
Відеозаписи лекцій без зворотного зв’язку та участі викладача. Ви отримаєте доступ до матеріалів одразу після оплати.
Програма навчання
Що таке сучасний C
1.1.1 Сучасний C
Поговоримо про особливості мови C – як вона розвивалася, і якою вона є зараз. Познайомимося зі стандартом мови, навчимося відрізняти undefined behavior від unspecified behavior.
1.1.2 Hello, World!
Скомпілюємо свою першу програму! Розберемо процес складання додатків на C, навчимося не боятися помилок і уважно читати попередження. Також дізнаємося про існування online-інструментів, за допомогою яких можна почати працювати вже зараз.
1.1.3 CMake
Розберемо, що таке CMake і навіщо нам потрібен цей інструмент. Напишемо свій перший CMakeLists.txt і навчимося збирати свої проєкти за допомогою CMake.
2 Базовий синтаксис мови C
1.2.1 Синтаксис C
Подивимося, як у наших програмах уявити числа, символи та масиви даних. Розберемо багато прикладів. Познайомимося з більш складними (і більш зручними) типами в C .
1.2.2 Розгалуження
Продовжимо вивчати синтаксис. Цього разу вивчимо синтаксис розгалужень if-else та конструкцію switchcase. Це допоможе зробити наші програми складнішими та цікавішими.
1.2.3 Цикли
Розберемо на прикладах синтаксис циклів у мові C . Навчимося використовувати for, while і навіть do while.
3 Такі різні функції. Модульність
1.3.1 Функції
Розберемося з функціями – що це, навіщо вони потрібні та як їх можна використовувати. Подивимося синтаксис і потренуємося на кількох прикладах.
1.3.2 Модульність
Як створювати складні програми? У цьому нам допоможе модульність мови C (якої, щоправда, майже немає). І знову розберемо кілька прикладів.
1.3.3 Різне про функції
Розберемо кілька особливостей використання функцій у мові C . Познайомимося з особливістю функції main, розберемо, навіщо потрібен стек викликів, а також поекспериментуємо з рекурсією.
2 Класи та алгоритми
1 Структури та класи
2.1.1 частина 1. Привіт, структура. Структури. Коротенько про поліморфізм, успадкування та інкапсуляцію
2.1.1 частина 2. Детальніше про структуру, привіт об’єднання. Структура як окремий тип даних. Об’єднання.
2.1.2 частина 1. Здрастуй, клас. Привіт, об’єкт. Клас і об’єкт. Функція-член класу. Доступ до членів класу
2.1.2 частина 2. Конструктори та деструктори. Конструктор і деструктор. Порівняння зі структурою.
2.1.3 частина 1. Трохи про успадкування. Успадкування. Доступ до членів базового класу. Захищені члени.
2.1.3 частина 2. Ще трохи про успадкування. Параметри конструктора. Читання графів успадкування
2 Поліморфізм
2.2.1 частина 1. Дружба і перевантаження. Дії з об’єктом. Дружні функції. Перевантаження конструктора.
2.2.1 частина 2. Передача та повернення. Передача і повернення об’єкта функції. Конструктор копії.
2.2.2 частина 1. Похідні типи. Віртуальні функції. Покажчики та посилання на похідні типи.
2.2.2 частина 2. Віртуальні функції та абстрактні клас. Віртуальні функції. Абстрактні класи.
2.2.3 частина 1. Перевантажуємо оператори. Перевантаження операторів. Унарних і бінарних. Загальні правила.
3 Шаблони класів і функцій
2.2.3 частина 2. Ще про перевантаження операторів. З використанням функцій-членів і не членів. Поради щодо перевантаження операторів.
2.3.1 частина 1. Узагальнені функції. Узагальнені функції. З двома узагальненими типами.
2.3.1 частина 2. Більше про узагальнені функції. Явне перевантаження узагальненої функції. Перевантаження шаблону.
2.3.2 частина 1. Узагальнений клас Узагальнений клас. Узагальнений клас із двома типами.
2.3.2 частина 2. Більше про узагальнений клас. Узагальнений клас безпечного масиву. Аргументи, що не є типами, для узагальненого класу.
3 Шаблони класів і функцій
1 Загальний огляд стандартної бібліотеки
3.1.1 Стандартна бібліотека С
Ми познайомимося зі стандартною бібліотекою С , подивимося, з яких частин вона складається, а також розберемося, навіщо нам потрібно її вивчити.
3.1.2 Введення/виведення в С
На цьому занятті ми познайомимося з концепцією потоків, подивимося, які стандартні потоки є в С , для чого вони потрібні і які в них є особливості. Ви навчитеся ефективно застосовувати стандартні потоки введення-виведення під час написання програм на С .
3.1.3 std::string
Ми розберемося з поняттям рядка в С/С , подивимося, які проблеми є під час використання сішних рядків, і як ефективно їх можна замінити за допомогою std::string. Ви опануєте основні операції зі std::string у частині створення рядка, пошуку та зміни його підрядків.
2 Детальніше про контейнери та введення-виведення
3.2.1 std::array
На занятті ми розберемося, які проблеми є у стандартних масивів у С/С , і навіщо потрібен std::array. Ви зрозумієте, у яких випадках можна його застосовувати і навчитеся робити це ефективно.
3.2.2 std::vector
Розберемося з контейнером, який найчастіше застосовують у STL. Ми розберемося, які проблеми можуть бути при бездумному його застосуванні і як використовувати std::vector максимально ефективно.
3.2.3 std::list
На занятті подивимося, що таке двозв’язковий список і як з ним працювати. Так само розберемося, які накладні витрати несе в собі його застосування і як std::forward_list може їх позбавити.
3.2.4 std::deque
На цьому занятті познайомимося з двосторонньою чергою, подивимося, як вона влаштована і якими властивостями володіє. Ви опануєте інтерфейс цього контейнера.
3.2.5 Упорядковані асоціативні контейнери STL
Ми розглянемо впорядковані асоціативні контейнери, якими вони бувають, як влаштовані усередині і якими властивостями володіють. Ви опануєте прийоми ефективної роботи з такими контейнерами.
3.2.6 Невпорядковані асоціативні контейнери
STL На занятті подивимося на невпорядковані асоціативні контейнери. Розберемося, чим вони відрізняються від упорядкованих, як влаштовані всередині та як і коли їх застосовувати.
3 Алгоритми, які краще знати краще
3.3.1 Ітератори в STL
Це заняття побудує міст від контейнерів до алгоритмів. Ми розберемося з важливим поняттям ітератора, подивимося на те, яким він буває і чому може стати не валідним.
3.3.2 Модифікуючі та немодифікуючі алгоритми STL
На занятті розглянемо деякі з безлічі алгоритмів у STL: any_of, copy, for_each та інші. Відучимося від повсюдного застосування сирих циклів і освоїмо методи створення більш виразного коду.
3.3.3 Алгоритми пошуку і сортування STL
На цьому занятті ми подивимося на алгоритми сортування і пошуку в упорядкованих послідовностях. Дізнаємося, які є алгоритми крім find і наскільки вони ефективно працюють.
3.3.4 Алгоритми STL: на множинах, на купі, перестановки, числові
Цим заняттям ми знайомимось з алгоритмами в STL. Ми подивимося, як можна працювати з множинами, що таке купа як структура даних і як з нею працювати, а також освоїмо корисний алгоритм accumulate.
4 Багатопотоковість. Винятки. Робота з мережею.
1 Багатопоточність або навіщо в процесорі більше одного ядра
4.1.1 1_1_ThermsTherms
Термінологія багатопоточності. Зрозуміємо, що таке потік виконання, як операційна система справляється з ситуацією, коли їх кілька. Поговоримо про те, що ж таке процес.
4.1.2 1_2_How_it_works
У цьому відео розберемося з поняттями багатопоточність, багатозадачність, паралельність і псевдопаралельність. Розберемо на життєвому прикладі, як може бути реалізована багатопоточність – чим відрізняється паралельність від псевдопаралельності.
4.1.3 1_3_Threads
Розглянемо інструменти роботи з потоками, які надає програмісту стандартна бібліотека C . Подивимося на прикладах, як створювати потоки і що з ними робити потім.
4.1.4 1_4_Mutex
У цьому відео обговоримо проблему синхронізації потоків. Навіщо вона потрібна, і що може статися, якщо її немає.
2 Винятки є завжди, і C – не виняток.
4.2.1 2_1_Base
Винятки: початок. Обговоримо механізм винятків, зрозуміємо, навіщо вони потрібні. Вивчимо базовий синтаксис роботи з виключеннями, на прикладах подивимося, як вони працюють.
4.2.2 2_2_Exception_vs_errors
Навіщо щось змінювати, якщо і так добре? Розглянемо на прикладах відмінність механізму виключень від класичної обробки кодів помилок. Багато прикладів і розуміння переваг винятків гарантовано.
4.2.3 2_3_Niceties
Тонкощі та деталі – що може бути краще? На прикладах розберемо – як побудувати ієрархію винятків, чому краще перехоплювати винятки за посиланням, а також принципи роботи з винятками під час використання стандартної бібліотеки.
3 Клієнтсерверна архітектура
4.3.1 Network
Навіщо вивчати роботу з мережею, що дає нам можливість з’єднати кілька комп’ютерів мережею. Поняття сервера і клієнта, розуміння відмінностей. Невеликий огляд RESTfull API.
4.3.2 Boost_asio
Які засоби для роботи з мережею надає C . Яке місце в роботі з мережею посідає Boost.Asio. Розглянемо багато прикладів і освоїмо цю бібліотеку.
4.3.3 Boost_beast
Бібліотека Boost.Beast – у чому відмінність від Boost.Asio і як її використовувати. Розглянемо на прикладах.
4.3.4 POCO
Бібліотека POCO. Познайомимося з ще однією бібліотекою для розробки мережевого програмного забезпечення. Розглянемо переваги та недоліки, вивчимо функціонал на прикладах.
Відгуки
Відгуків немає, поки що.