top of page

performance engineering

Practice writing fast software. Learn to do it right.

старт:

10 січ. 2025 р.

27 занять + 12 QA сесій

290 $/міс

10% донатимо ЗСУ

про курс

Алгоритміка заклала фундамент мислення, тепер настав час зазизрнути ще глибше. Адже хороші програмісти знають інструменти, що використовують, а найкращі з них можуть мислити про виконання програми на різних рівнях - від мови програмування до операційної системи та процесора. Ці знання дозволяють знаходити вузькі місця в коді, писати швидкі, коректні, надійні асинхронні та багатопоточні програми, приймати правильні архітектурні рішення.

Курс є важливим для подальшого вивчення Compilers, Databases та Operating Systems i потребує знань з Aлгоритмів.

навчальний план
буде гаряче

  • Найпопулярніші техніки оптимізації алгоритмів
  • Sentinel та як він дозволяє пришвидшити код
  • Чи всі інструкції CPU однаково швидкі?
  • Як Twitter та Facebook пришвидшили продакшн код в 100 разів
  • Оптимізації наносекунд в High-frequency trading (HFT) компаніях
  • Реалізація віртуальної машини як Java Virtual Machine (JVM)
  • Python vs C. У скільки разів та чому Python сповільнює код?

CPU

Техніки оптимізації наносекунд в HFT компаніях.

  • Пришвидшення продакшн-коду за рахунок memory hierarchy
  • OOP мертвий. Хай живе Data-Oriented Design
  • Нюанси написання сache-friendly алгоритмів та структур даних
  • Кеш операційної системи та вплив на реалізацію File I/O
  • Інструменти для вимірювання cache performance

Cache

Нюанси написання сache-friendly алгоритмів та структур даних.

  • Bitmap-індекси в базах даних
  • Деталі представлення та роботи з типами int, float, string
  • Як влаштований variable length int під капотом у Protobuf?
  • Unicode або як Twitter обмежує розмір твіта?​
  • Bit hacks

А Bit about Bytes

Представлення даних на рівні окремих бітів та байтів.

  • Реалізуємо Memory allocator та Garbage collector
  • Alignment даних. Вплив на пам'ять та швидкодію
  • Тонкощі реалізації структур даних в продакшн
  • Сегменти пам'яті. Як влаштований Stack і Heap

Memory

Реалізуємо Memory allocator та Garbage collector.

  • Пришвидшення за рахунок Instruction-level parallelism (ILP)
  • Використання SIMD та Branch prediction на прикладах
  • Вступ до асемблеру. Навчимося писати та читати прості програми
  • Reverse-engineering

Low-level optimizations

Оптимізації коду на рівні компілятору.

  • Як влаштована Virtual Memory та Page Tables під капотом
  • Як працюють System calls та context switches ​
  • Key features OS provide for users
  • How Page Faults can dramatically affect performance?

Operating system

Основні задачі ОС та її вплив на швидкодію.

  • Реалізуємо свій Shell
  • Fork + Exec
  • Як досягається координація між процесами через pipe

Processes

Напишемо свій Shell для координації роботи процесів.

  • Threads vs. Processes vs. Coroutines: погляд зсередини
  • Реалізуємо Event loop
  • Synchronization objects та Data races. Як реалізувати м'ютекс?
  • Напишемо Thread pool та виправимо багато конкурентних багів

Multithreading and Concurrency

Від потоків до написання власного EventLoop.

читає

Іван Петрушенко

Engineering Lead y Squad, Founder в CS Osvita. 
Former: Dell Software Engineer, Fiverr Senior Software Engineer, Ring Machine Learning Engineer.

Реєстрація. Перший крок за вами

реєстрація
перший крок за вами

Вітаємо, перший крок до курсу зроблено! 

Я приймаю умови Публічної оферти та надаю згоду на обробку своїх персональних даних відповідно до Політики конфіденційності.

відгуки
що говорять випускники

Software Engineer @Meta

Владислав Каплун

Під час проходження курсу отримав неабияке задоволення від структурованого підходу. Куратор вражає вмінням доступно та розгорнуто подавати інформацію. Отримані знання з курсу також мають практичний застосунок у моїй роботі, що підкреслює цінність отриманої освіти.

ML Lead @Facebook

Саша Савсуненко

Буде цікаво та складно, всім хайлі рекомендед! Курс допоміг мені швидше розібратись з складним кодом на новому проекті, зрозуміти структури даних та оптимізації, що використовуються. Ці речі має знати кожен програміст.

Software Engineer @Microsoft

Валентин Бочкарьов

Під час підготовки до інтерв‘ю у FAANG проходив курс Algorithms in Practice, а згодом і Performance Engineering. Зараз я з впевненістю можу сказати, що обидва курси допомогли мені отримати оффер від Oracle та Microsoft.

Head Of Engineering @Artur'In

Віталій Маковський

Це був один з найвражаючих навчальних досвідів у моєму житті. Викладач зумів передати глибокі знання з предмета і зробив цей процес захоплюючим. Під час навчання ви випробуєте себе і, що не менш важливо, познайомитесь з цікавими людьми.

Software Engineer @Meta

Роман Перегончук

Курс просто супер! Це дуже класний спосіб отримати нові знання, познайомитись з цікавими людьми і як бонус підготуватись до технічних інтерв'ю. Одна з моїх найкращих інвестицій, можу рекомендувати всім!

Software Engineer @Meta

Назарій Іванчук

Я отримав справжнє задоволення від вивчення таких фундаментальних тем, як оптимізація алгоритмів та робота з кешем. Особливо цінними виявилися розділи про підвищення ефективності на рівні CPU та пам'яті. Завдяки чіткій і доступній подачі матеріалу, здобуті знання одразу знайшли практичне застосування.

Software Engineer @Amazon

Кирило Попирко

Курс дуже добре структурований: починається з високорівневих абстракцій і поступово заглиблюється в деталі. Приклади базуються на реальних проєктах; цікаві та практичні домашні завдання (навіть довелося знешкоджувати бомбу!). Вартує кожної хвилини і кожної вкладеної гривні.

Senior Software Engineer @SingleStore (formerly MemSQL)

Вячеслав Очеретний

Дуже рекомендую цей курс і платформу загалом!

що на вас чекає
have fun and dive deep

Вівторок, п'ятниця о 18:30, тривалість 1.5 години. Мова викладання—українська. Додаткові матеріали—англійською.

зустрічі в Zoom двічі на тиждень

Ком'юніті для обговорення лекцій та обміну хитрими тестами до задач.

закрита Slack група

Панує атмосфера відкритості, доброзичливості, дисциплінованості та русофобії.

цінності

bottom of page