
Подай заявку
на відбір
за Весь курс
1050 $
за курсом нбу
помісячно
370 $
КУРС ТРИВАЄ 3 МІСЯЦІ
ПЕРШИЙ КРОК ЗА ТОБОЮ
Я приймаю умови Публічної офе рти та надаю згоду на обробку своїх персональних даних відповідно до Політики конфіденційності.
За тебе може заплатити роботодавець?
Напиши нам на hello@csosvita.com, і ми оформимо все якнайшвидше.
МАЄШ ПИТАННЯ?
МИ ВІДПОВІДАЄМО
// Не знайшли відповідь, яку шукали? Напишіть нам на hello@csosvita.com і ми з усім допоможемо
я зможу навчатися на курсі, якщо в мене інший часовий пояс?
Так, звісно. Всі заняття ми записуємо, тож різниця в часових поясах не буде суттєвою перешкодою. Переглядайте лекції коли зручно, а якщо виникнуть пита ння — викладач і команда на зв'язку в Slack-каналі.
як проходять заняття?
Ми працюємо в невеликих групах 20-25 людей у форматі живих занять із викладачем — зустрічаємося кілька разів на тиждень у Zoom. На заняттях розбираємо задачі, дискутуємо, уточнюємо деталі, розглядаємо приклади та аргументацію рішень. Формат побудований так, щоб кожен був залучений і мав можливість взаємодіяти з викладачем та групою.
чи є записи занять?
Щоразу організовуємо запис, однак краще долучатися до онлайн-зустрічі — обговорити питання з одногрупниками та проконсультуватися з викладачем. Доступ до записів зберігається протягом року з дня старту курсу.
який рівень підготовки потрібен?
Курс розрахований на інженерів, які вже мають комерційний або pet-project досвід із C++ і хочуть глибше зрозуміти, як мова та система працюють «під капотом». Ми очікуємо базове розуміння C++, Computer Science fundamentals та готовність самостійно опрацьовувати частину матеріалу поза заняттями.
Детальніше вимоги описані у блоці Prerequisites на цій сторінці.
до зустрічі на курсі
Перевірено випускниками —
ТОП інженерами з індустрії
Заняття добре побудовані: на початку кожної лекції розбираємо питання з попередньої, і це допомагає закріпити матеріал. Теми підібрані чудово. Наприклад, ми детально розглянули такі концепції, як type erasure, thread pool та event loop. Тепер набагато легше розуміти подібні патерни в робочому коді. Пару тижнів тому помітив такий момент на проєкті — і чітко зрозумів, чому все було реалізовано саме так. Дещо спробував імплементувати вперше в житті — і це мегакорисний досвід.
Для мене це 10 з 10. Я вже мав три співбесіди на middle C++ dev — і все, що ми обговорювали на лекціях, питають на інтерв'ю. Я навіть не готуюся до співбесід, бо розумію, що з C++ на цьому рівні маю що розповісти на 95%. Основні цілі були закрити прогалини й отримати глибші знання — і те, і інше вдалося. Найбільше кайфував від обговорення тем і моментів, коли разом щось дизайнили та кодили.
Найбільша цінність курсу — розгляд тем на глибокому рівні. Це і відрізняє його від поверхневого гугління тих самих тем. Все пояснюється на фундаментальному рівні.
Викладач формує цілісну роадмапу навчання, і знання нашаровуються природно. Я не C++ розробник, тож для мене було дуже цінно, що майже не було моментів, коли я не розумів матеріал. Якщо Костя колись вирішить зробити продовження і покрити ще якусь кількість тем — я б точно розглянув такий курс для себе.
ПРО КУРС
C++ має репутацію мови, яка підкидає помилки там, де їх найменше очікуєш. Тому інженери звикли її остерігатися — уникають певних конструкцій, бояться невизначеної поведінки та борються з інфраструктурою. Цей курс переводить з режиму обережності в режим контролю. Ви зрозумієте не лише код, а й те, що під капотом — пам’ять, компіляцію, оптимізацію, багатопоточність і роботу з великими бібліотеками.
На курсі ви пройдете повний цикл розробки на C++ та створите інфраструктурні production-рішення. У результаті матимете доробок C++-проєктів, які можна використовувати для працевлаштування та розвивати далі.
*За даними Djinni, C++-кандидати мають менше труднощів у пошуку роботи, а зростання miltech-проєктів суттєво збільшує попит на embedded-фахівців. Попри складність, C++ залишається одним із найсильніших напрямів для старту в низькорівневому програмуванні.
ЩО ПОТРІБНО ЗНАТИ
:: Базове розуміння роботи операційної системи: stack vs heap memory, процеси та потоки
:: Практичний досвід з Git: commit, push/pull, branching
:: Цикли, рекурсія, алгоритми, структури даних та їх складність
:: C++ на Junior рівні та вище: типи даних, вказівники та посилання, обʼєкти і класи
ДВІЧІ на тиждень
СЕРЕДА 18:30 (UTC+3)
СУБОТА 10:30 (UTC+3)
// live зустрічі з записом
Стек
C++
// пишемо код з першого заняття
ПРОГРАМА
:: 25 LIVE ЗАНЯТЬ :: ГЛИБОКЕ ЗАНУРЕННЯ В ТЕМУ :: ДО 25 СТУДЕНТІВ
C++ fundamentals
Основи мови й інструменти, що формують правильний стиль мислення в C++ інженера
Екосистема C++. Життєвий цикл коду від вихідного файлу до машинного виконання
Фундамент С++: типи даних, тривалість життя обʼєктів, представлення обʼєктів у памʼяті
Управління памʼяттю, stack та heap памʼять, smart pointers. Виробимо звичку використовувати RAII — одну з найважливіших ідіом C++
Return value optimization, rvalue-references, move-семантика. Як повертати обʼєкт з функції: за значенням чи за посиланням
Templates: напишемо logger, який приймає будь-яку кількість параметрів
Огляд стандартної бібліотеки: контейнери, ітератори, алгоритми
Практика
Реалізація утиліт на C++ (
ls,find,tree)Власна реалізація контейнерів (vector, тощо)
C++ advanced topics and patterns
Те, що відрізняє C++ у теорії від C++ у продакшені: потоки, помилки, патерни й інструменти
Перетворення типів та RTTI: де використовувати reinterpret_cast та як реалізувати abstract factory
Функціональне програмування. Реалізація патерну observer
Обробка помилок: від еррор-кодів і ексепшинів до std::expected. Чому в деяких проєктах взагалі немає ексепшинів?
Багатопоточність: від posix mutex до std::condition_variable. Поширені проблеми (deadlock, false sharing) та як їх уникати
Стандартна бібліотека окрім контейнерів: memory, chrono, variant, filesystem, metaprogramming
Вступ до CMake: таргети, залежності. Як створити просту та правильну структуру проєкту з бібліотек та exe
Робота з різними компіляторами та платформами. Undefined, unspecified та implementation-defined behavior: чому важливо знати різницю між цими поняттями та не лякатись їх
Практика
Реалізація поширених патернів на C++ (observer, factory, тощо)
Реалізація складніших утиліт на C++
GUI programming
Від перших елементів інтерфейсу до складних подієвих систем — практичний вхід у світ Qt і десктопних застосунків
Огляд екосистеми Qt. Загальні ідеї і принципи побудови бібліотеки
Робота з додатками та віджетами в Qt
Архітектура додатків з графічним інтерфейсом. Як відмежувати логіку обчислень від логіки інтерфейсу
Багатопоточність: черги задач, event loop. Як залишити графічний інтерфейс активним, поки відбуваються обчислення
Збірка, пакування та поширення додатків на С++
Практика
Розробка десктоп-застосунку з навантаженим інтерактивним інтерфейсом
Оптимізація швидкодії для інтерактивних сценаріїв
SDK development
Про інженерію під капотом: дизайн API, cmake, тести та побудова власного SDK
Дизайн API: як зробити API таким, який складно використати неправильно. Розглянемо як загальні поняття, так і специфічні для С++ техніки
Крос-платформна розробка: відчуємо різницю роботи компіляторів та інфраструктурні особливості різних target систем (Linux, macOS, Windows)
CMake: робота зі сторонніми бібліотеками та юніт тестами. Зробимо CI-friendly збірку SDK та підготуємо package, який можна інсталювати
Вступ до бібліотеки OpenCV та базова обробка зображень. Напишемо пайплайн обробки зображень з використанням OpenCV-алгоритмів
Юніт-тестування з використанням google-test. Від базових сценаріїв до використання gMock
Практика
Розробка крос-платформного SDK для обробки зображень: від дизайну API до юніт-тестування та розгортання
C++ Developer's Toolbox
Робота з реальними системами: від embedded-запусків і профілювання до сучасних модулів і статичного аналізу
Огляд Raspberry Pi. Скомпілюємо та запустимо програми на Raspberry Pi
Профайлінг та оптимізація програм. Як читати асемблерний код та коли варто це робити
Огляд поширених 3rd party бібліотек та їх використання
Інструменти для С++: статичний аналіз коду, clang-tidy, clang-format, профайлери, санітайзери
Як виглядає С++ у найновіших стандартах: модулі, корутини
С++ стандарти та їх еволюція. Огляд поширених coding conventions та особливостей використання С++ у різних доменах: чим відрізняється С++ для десктопного додатку від С++ для NASA
Практика
Крос-компіляція та виконання програм на вбудованих системах (на прикладі Raspberry Pi)
Дебагінг, вимірювання швидкодії та оптимізація
ЯК ПРОХОДИТЬ
НАВЧАННЯ
01
фідбек та ітерації
// Домашки не задаємо для галочки. Викладач перевіряє рішення, повертає на доопрацювання та пояснює, де прогалини
Zoom
02
записи та конспекти
// Записуємо всі заняття та ділимося матеріалами, щоб ви не втрачали темп навіть через форс-мажори чи особист і обставини
Zoom
03
live звʼязок
// Усі заняття проходять в живому форматі з викладачем, щоб поставити запитання та попрактикувати live-coding
Zoom
01
live зв'язок
// Усі заняття проходять в живому форматі з викладачем, щоб поставити запитання та попрактикувати live-coding
Zoom
Slack
02
записи та конспекти
// Записуємо всі заняття та ділимося матеріалами, щоб ви не втрачали темп навіть через форс-мажори чи особисті обставини
Notion
03
фідбек та ітерації
// Домашки не задаємо для галочки. Викладач перевіряє ваші результати та відправляє на доопрацювання та пояснює
GitHub
HackerRank
ПРАКТИЧНА
РОБОТА
:: ЗАВДАННЯ ЩОТИЖНЯ :: ФІДБЕК ВИКЛАДАЧА :: ПРОДАКШН-INSPIRED ЗАДАЧІ
Tree CLI Utility
// приклад однієї з домашок на курсі
Модуль-01 · C++ fundamentals. Реалізація production-like CLI-утиліти для роботи з файловою системою.
Реалізувати утиліту tree для командного рядка, яка приймає шлях до директорії та виводить її вміст у вигляді дерева — подібно до Unix-команди tree
Реалізуйте утиліту з такими вимогами:
:: Обхід директорій через std::filesystem, використання STL контейнерів та алгоритмів.
:: Підтримка опції max-depth N для обмеження глибини рекурсії.
:: Коректна обробка помилок: неіснуючий шлях, відсутність прав доступу, symbolic links та інші edge cases.
:: Чітке розділення побудови дерева директорій та його відображення в консолі.
:: Збірка через CMake.
Домашні завдання передбачають розвиток цих ідей у наступних модулях і перевикористання спільного коду.
ЩО ЗМІНИТЬСЯ
ПІСЛЯ КУРСУ
1
розумієш C++ «під капотом»
// Бачиш що відбувається між кодом і залізом: як працює памʼять та компілятор, звідки береться runtime cost, чому одні рішення масштабуються, а інші ні.
2
контролюєш інфраструктуру
// Збираєш проєкти з нуля, проєктуєш архітектуру, розбираєшся в tooling — без залежності від IDE чи фреймворків.
3
виходиш із реальним доробком
// CLI-утиліти, крос-платформний SDK, десктопний застосунок — завершені проєкти, які можна показати або розвивати далі.
ВИКЛАДАЧ
ТА АВТОР ПРОГРАМИ
.webp)
Костянтин Вергун
Principal Software Engineer @Logitech.
Former: @Ring, @Materialise. 12 років професійного досвіду розробки на С++.
:: 12 років професійного досвіду розробки на С++ у різних доменах: desktop applications, cross-platform SDKs, embedded.
:: M.Sc. in Applied Mathematics.
:: 100+ проведених технічних інтервʼю та менторство інтернів та junior-інженерів.


